Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Trendbar (http://www.expert-advisor.com/forum/showthread.php?t=7041)

Sirocool 07.07.21 11:25

Trendbar
 
wieso zeigt er nicht die Bezeichnung an ?

RSI CCI ?

Code:

//////////////////////////////////////////////////////////////////////
//
//
//
//////////////////////////////////////////////////////////////////////
#property copyright "Antonuk Oleg"
#property link      "antonukoleg@gmail.com"

#property indicator_chart_window


extern int scaleX=20, // Das horizontale Intervall, mit dem die Quadraten erstellt werden
          scaleY=20, // Das vertikale Intervall
          offsetX=35, // der horizontalen Einzug aller Quadraten
          offsetY=20, // der vertikale Einzug
          fontSize=20, // Die Schriftgröße
          corner=0;

int period[]={1,5,15,30,60,240,1440,10080,43200};
string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"};
string signalNameString[]={"RSI","CCI","X"};
//+------------------------------------------------------------------+


int init()
{
  // Die Tabelle der Signalen
  for(int x=0;x<9;x++)
      for(int y=0;y<3;y++)
      {
        ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0);
        ObjectSet("signal"+x+y,OBJPROP_CORNER,corner);
        // Wir ändern den Winkel der Verankerung
        ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX);
        ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
        ObjectSetText("signal"+x+y,CharToStr(110),fontSize,"Wingdings",Gold);
      }

  // Der Name der Timeframes
  for(x=0;x<9;x++)
  {
      ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0);
      ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner);
      // Wir ändern den Winkel der Verankerung
      ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+offsetX);
      ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY-10);
      ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",Gold);
  }

  // Der Name der Indikatoren
  for(y=0;x<2;y++)
  {
      ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);
ObjectSet("textSignal"+y,OBJPROP_CORNER,corner);// Wir ändern den Winkel der Verankerung
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,offsetX-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*scaleY+offsetY+8);
      ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",Gold);
  }
 
  return(0);
}
 
int start()
{
  for(int x=0;x<9;x++)
  {
      if(iRSI(NULL,period[x],14,PRICE_CLOSE,x+1)> 70 && iRSI(NULL,period[x],14,PRICE_CLOSE,x)< 70)
        ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",clrFireBrick);
      else
      if(iRSI(NULL,period[x],14,PRICE_CLOSE,x+1)< 30 && iRSI(NULL,period[x],14,PRICE_CLOSE,x)> 30)
        ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",clrForestGreen);
  }
 
  return(0);
}


so müsste das aussehen https://c.mql5.com/2/15/pic012.png

traderdoc 07.07.21 12:02

Na ja, ich würde statt

for(y=0;x<2;y++)

for(y=0;y<2;y++)

schreiben, dann klappt es auch mit dem Namen.

traderdoc

Sirocool 07.07.21 12:02

Kann gelöscht werden ist erledigt
 
Code:

//////////////////////////////////////////////////////////////////////
//
//
//
//////////////////////////////////////////////////////////////////////
#property copyright "Antonuk Oleg"
#property link      "antonukoleg@gmail.com"

#property indicator_chart_window


extern int scaleX=20, // Das horizontale Intervall, mit dem die Quadraten erstellt werden
          scaleY=20, // Das vertikale Intervall
          offsetX=35, // der horizontalen Einzug aller Quadraten
          offsetY=20, // der vertikale Einzug
          fontSize=20, // Die Schriftgröße
          corner=0;

int period[]={1,5,15,30,60,240,1440,10080,43200};
string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"};
string signalNameString[]={"RSI","CCI","X"};
//+------------------------------------------------------------------+


int init()
{
  // Die Tabelle der Signalen
  for(int x=0;x<9;x++)
      for(int y=0;y<3;y++)
      {
        ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0);
        ObjectSet("signal"+x+y,OBJPROP_CORNER,corner);
        // Wir ändern den Winkel der Verankerung
        ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX);
        ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
        ObjectSetText("signal"+x+y,CharToStr(110),fontSize,"Wingdings",Gold);
      }

  // Der Name der Timeframes
  for(x=0;x<9;x++)
  {
      ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0);
      ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner);
      // Wir ändern den Winkel der Verankerung
      ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+offsetX);
      ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY-10);
      ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",Gold);
  }

  // Der Name der Indikatoren
  for(y=0;y<3;y++)
  {
      ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);       
      ObjectSet("textSignal"+y,OBJPROP_CORNER,corner);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,offsetX-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(scaleY)+offsetY+8);
      ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",Gold);     
  }
 
  return(0);
}
 
int start()
{
  for(int x=0;x<9;x++)
  {
      if(iRSI(NULL,period[x],14,PRICE_CLOSE,x+1)> 70 && iRSI(NULL,period[x],14,PRICE_CLOSE,x)< 70)
        ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",clrFireBrick);
      else
      if(iRSI(NULL,period[x],14,PRICE_CLOSE,x+1)< 30 && iRSI(NULL,period[x],14,PRICE_CLOSE,x)> 30)
        ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",clrForestGreen);
  }
 
  return(0);
}


Sirocool 30.07.21 14:26

Brauche wieder Hilfe
 
und zwar gehen die Signale nur bis Zeile 2 also Moving Average 10 die anderen Moving Average Signale kommt garnichts könnte mal bitte einer drüber schauen danke.

Die Berchnung habe ich so gemacht wenn das Ergbnis größer als Null ist soll Rot sein und kleiner als Null dann Grün kommen keine Signal dann gleich Grau


Code:


//+------------------------------------------------------------------+
//|                    SHARK_TRENDBAR_CLASSIC_V.21                  |
//|                        Copyright 2018                          |
//|                      www.companyname.net                        |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2021, SIROCOOL"
#property link      "Streitmarcel82@gmail.com"


#property indicator_chart_window



extern color FontColor  = C'237,252,255';


extern int scaleX=20, // Das horizontale Intervall, mit dem die Quadraten erstellt werden
          scaleY=20, // Das vertikale Intervall
          offsetX=30, // der horizontalen Einzug aller Quadraten
          offsetY=20, // der vertikale Einzug
          corner=0;// Die Schriftgröße

int period[]= {1,5,15,30,60,240,1440,10080,43200};
string periodString[]= {"M1","M5","M15","M30","H1","H4","D1","W1","MN1"};
string signalNameString[]= {"MA5","MA10","MA20","MA50","MA100","MA200" };
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
  int Zeilen = 6; // max. Zeilen 9
// Die Tabelle der Signalen
  for(int x=0; x<9; x++)
      for(int y=0; y < Zeilen; y++) //Y< Zeilen max 9
        {
        ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0);
        ObjectSet("signal"+x+y,OBJPROP_CORNER,corner);
        // Wir ändern den Winkel der Verankerung
        ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX);
        ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
        ObjectSetText("signal"+x+y,CharToStr(110),20,"Wingdings",C'237,252,255');
        }

// Der Name der Timeframes
  for(x=0; x<9; x++)
    {
      ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0);
      ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner);
      // Wir ändern den Winkel der Verankerung
      ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+5+offsetX); //Schrift verschieben Vertikal
      ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY-5);
      ObjectSetText("textPeriod"+x,periodString[x],6,"Courier New",FontColor);
    }

// Der Name der Indikatoren
  for(y=0; y < Zeilen; y++) //y < 3 Max.9
    {
      ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);
      ObjectSet("textSignal"+y,OBJPROP_CORNER,corner);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,offsetX-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(scaleY)+offsetY+8);
      ObjectSetText("textSignal"+y,signalNameString[y],6,"Courier New",FontColor);
    }

  return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
  ObjectsDeleteAll();
  return(0);
  }


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
{
 // Wir machen die erste Reihe an
  for(int x=0;x<9;x++)
  {
      if((iMA(Symbol(),period[x],5,0,0,0,0)-Ask) < 0)
        ObjectSetText("signal"+x+"0",CharToStr(110),20,"Wingdings",YellowGreen);
      if((iMA(Symbol(),period[x],5,0,0,0,0)-Ask) > 0)
        ObjectSetText("signal"+x+"0",CharToStr(110),20,"Wingdings",Tomato);
    // Sonst, wenn es keine Signale gibt, dann färben wir die Quadraten in die graue Farbe 
      else
      ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",DarkGray); 
  }
  // Wir machen die zweite Reihe an
  for(x=0;x<9;x++)
  {
    if((iMA(Symbol(),period[x],10,0,0,0,0)-Ask)<0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",YellowGreen); 
     
    if((iMA(Symbol(),period[x],10,0,0,0,0)-Ask)>0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",Tomato);
    else
      ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",DarkGray);     
         
  }
 
      // Wir machen die dritte Reihe an
  for(x=0;x<9;x++)
  {
      if((iMA(Symbol(),period[x],20,0,0,0,0)-Ask)<0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",YellowGreen); 
     
      if((iMA(Symbol(),period[x],20,0,0,0,0)-Ask)>0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",Tomato);     
  }
 
  // Wir machen die vierte Reihe an
      for(x=0;x<9;x++)
  {
 
      if((iMA(Symbol(),period[x],50,0,0,0,0)-Ask)<0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",YellowGreen); 
     
      if((iMA(Symbol(),period[x],50,0,0,0,0)-Ask)>0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",Tomato);     
  }
  // Wir machen die fünfte Reihe an
    for(x=0;x<9;x++)
  {
 
      if((iMA(Symbol(),period[x],100,0,0,0,0)-Ask)<0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",YellowGreen); 
     
      if((iMA(Symbol(),period[x],100,0,0,0,0)-Ask)>0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",Tomato); 
      // Sonst, wenn es keine Signale gibt, dann färben wir die Quadraten in die graue Farbe
      else
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",DarkGray);     
  }
      // Wir machen die sechste Reihe an
    for(x=0;x<9;x++)
  {
 
      if((iMA(Symbol(),period[x],200,0,0,0,0)-Ask)<0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",YellowGreen); 
     
      if((iMA(Symbol(),period[x],200,0,0,0,0)-Ask)>0)
        ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",Tomato);     
  }

  return(0);
}
//+------------------------------------------------------------------+


Indikator-Trading 30.07.21 18:20

Hallo Marcel,

ich sehe da ein Problem mit der Funktion, welche unter "int start()" die erste, zweite und fünfte Reihe "anmachen soll"

Vereinfacht geschrieben machst du ja folgendes:
if(Bedingung1)
//AnweisungA
if(Bedingung2)
//AnweisungB
else
//AnweisungC

Bei deiner Implementierung kann Bedingung1 nicht zeitgleich mit Bedingung2 erfüllt sein.
Ist Bedingung1 erfüllt, wird "AnweisungA" durchgeführt. Bedinung2 ist nicht erfüllt, somit wird also auch "AnweisungC" durchgeführt, welche wiederum in deinem Code nicht mit der Durchführung von "AnweisungA" im Einklang ist.

Oh, das habe ich jetzt etwas verkompliziert erklärt, aber ich hoffe du hast verstanden worauf ich hinauswollte.

Wenn du ein else vor die zweite If-Abfrage setzt wird der Code das machen, was du zumindest laut deinen Kommentaren damit vorzuhaben scheinst.

Code:

  for(int x=0;x<9;x++)
  {
      if((iMA(Symbol(),period[x],5,0,0,0,0)-Ask) < 0)
        ObjectSetText("signal"+x+"0",CharToStr(110),20,"Wingdings",YellowGreen);
      else if((iMA(Symbol(),period[x],5,0,0,0,0)-Ask) > 0)
        ObjectSetText("signal"+x+"0",CharToStr(110),20,"Wingdings",Tomato);
    // Sonst, wenn es keine Signale gibt, dann färben wir die Quadraten in die graue Farbe 
      else
      ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",DarkGray); 
  }

Zwei weitere Punkte fallen mir noch auf:
1)
für die erste Reihe setzt du die Farbe Grau für ein anderes Objekt, da ("signal" + x + "0") nicht ("signal" + x + "1") ist. Dort wirst du wohl noch die "1" gegen eine "0" austauschen müssen, oder anderes rum.

2)
In allen anderen Reihen setzt du jeweils ebenfallst nur die Zeile "1", auch wenn du in den Kommentaren von "Reihen" sprichst.

Hier ein korrigiertes Beispiel für die sechste Reihe:

Code:

    for(x=0;x<9;x++)
  {
 
      if((iMA(Symbol(),period[x],200,0,0,0,0)-Ask)<0)
        ObjectSetText("signal"+x+"5",CharToStr(110),20,"Wingdings",YellowGreen); 
     
      if((iMA(Symbol(),period[x],200,0,0,0,0)-Ask)>0)
        ObjectSetText("signal"+x+"5",CharToStr(110),20,"Wingdings",Tomato);     
  }

Mit freundlichen Grüßen
Timo


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:41 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum