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)
-   -   Wie programmiere ich eine einfache horizontale Linie im Chart (http://www.expert-advisor.com/forum/showthread.php?t=2953)

skaterjo 23.05.13 19:31

Wie programmiere ich eine einfache horizontale Linie im Chart
 
Ich möchte gerne eine einfache horizentale Linie z. B.
EUR/US Wert gleich 1,2930
im Chart sehen
Ich bin Programmieranfänger.
Danke für Dien Hilfe!!!!

joshuacoppins 23.05.13 19:40

Mann kann über die Toolbar Linien im Metatrader einzeichen, programmieren brauch man das nicht.
Rechtsklick oben auf die Toolbar und dann auf "anpassen"

Racki 23.05.13 22:58

Programmatisch geht es wie folgt:
PHP-Code:

double value 1.2930;
ObjectDelete("HorizontaleLinie");
ObjectCreate("HorizontaleLinie"OBJ_HLINE,0,Time[0],value); 
ObjectSet("HorizontaleLinie"OBJPROP_COLORYellow); 

Gruss
Racki

skaterjo 24.05.13 20:41

Danke für die Tipps
 
Mit der 2 Lösung funktioniert das schon.
Es wird eine horizontale kreirt, aber nur eine,
wenn ich eine weite ausgeben möchte.
funktioniert das nicht. Was mache ich falsch, oder was muss ich beachten.
Danke aber für die Tipps.

Racki 24.05.13 21:13

Du musst die Objekte unterschiedlich benennen.

PHP-Code:

double value1 1.2930
ObjectDelete("HorizontaleLinie1"); 
ObjectCreate("HorizontaleLinie1"OBJ_HLINE,0,Time[0],value1);  
ObjectSet("HorizontaleLinie1"OBJPROP_COLORYellow);  

double value2 1.2930
ObjectDelete("HorizontaleLinie2"); 
ObjectCreate("HorizontaleLinie2"OBJ_HLINE,0,Time[0],value2);  
ObjectSet("HorizontaleLinie2"OBJPROP_COLORBlue); 


s.l.
Racki

skaterjo 25.05.13 12:25

Danke hat alles funktioniert
 
Hat soweit alles funktioniert!!!!!

Vielen Dank nochmal.

Tycoon 07.03.17 20:46

Frage zum Programmieren einer Dynamischen Horizontale Linie
 
Hallo,
ich hatte mal einen alten Artikel gefunden wo es verständlich erklärt ist wie man eine Horizonttale Linie Programmiert.
Ich hatte vor mit dieser Horizontalen Linie im Chart zu Arbeiten. Bsp. Als Stoplinie um mir dann per Comment im Chart Pipwerte,Lotgröße etc. anzeigen zu lassen.
Wenn ich nun aber die Horizontale Linie einen Wert zuweise lässt sich diese zwar verschieben, aber springt auch wieder zum alten Wert zurück. Und im Commenttext wird auch nichts angezeigt. Habt ihr da eine Lösung parat??
Vielen Dank euch im vorraus!!! :cool:

ping 07.03.17 21:06

Zitat:

Hallo,
ich hatte mal einen alten Artikel gefunden wo es verständlich erklärt ist wie man eine Horizonttale Linie Programmiert.
Ich hatte vor mit dieser Horizontalen Linie im Chart zu Arbeiten. Bsp. Als Stoplinie um mir dann per Comment im Chart Pipwerte,Lotgröße etc. anzeigen zu lassen.
Wenn ich nun aber die Horizontale Linie einen Wert zuweise lässt sich diese zwar verschieben, aber springt auch wieder zum alten Wert zurück. Und im Commenttext wird auch nichts angezeigt. Habt ihr da eine Lösung parat??
Vielen Dank euch im vorraus!!!
zeig doch mal den Code, dann kann man sehen wo der Fehler liegt.

ciao ping

Tycoon 07.03.17 21:19

PHP-Code:

double Stoplinie Ask-SL
ObjectDelete("HorizontaleLinie1"); 
ObjectCreate("HorizontaleLinie1"OBJ_HLINE,0,Time[0],Stoplinie);  
ObjectSet("HorizontaleLinie1"OBJPROP_COLORRed);  

double TakeProfitlinie Ask+TP
ObjectDelete("HorizontaleLinie2"); 
ObjectCreate("HorizontaleLinie2"OBJ_HLINE,0,Time[0],TakeProfitlinie);  
ObjectSet("HorizontaleLinie2"OBJPROP_COLORBlue); 


Ich bekomme ja die Werte angezeigt... aber ich hatte vor die Horizontale Linie im Chart per Mausklick zu verschieben um mir die Differenz per Comment Links oben im Chart anzeigen zu lassen.
PHP-Code:

Comment("Lots:",DoubleToStr(Lots2)
             ,
"\nRisiko:",Risiko
             
,"\nGrösseStop :",StopLinie
             
,"\nGewinnchance:",TakeProfitlinie
             
,"\n------------------------------------------------"); 


ping 07.03.17 23:55

@Tycoon,

sorry für die späte Antwort, hatte noch ein längeres Telefonat.
Ich habe dir mal schnell eine mögliche Lösung hingekritzelt.
Die Werte werden allerdings hier immer positiv dargestellt, sonst bräuchte man noch einen "long/short"-Button.

Code:

#property indicator_chart_window
#property strict
extern int SSL=50;  // SL Startabstand [Digits]
extern int STP=100; // TP Startabstand [Digits]
string    Tx="2Linien ";
double    SL,TP;
int init()
{ if(GlobalVariableCheck(Tx+"TFW"))
  { SL=GlobalVariableGet(Tx+"SL");
    TP=GlobalVariableGet(Tx+"TP");
    GlobalVariablesDeleteAll(Tx);
  }
  else
  { ObjectCreate(Tx+"LabelSL",OBJ_LABEL,ChartWindowFind(),0,0);
    ObjectSet(Tx+"LabelSL",OBJPROP_CORNER,0);
    ObjectSet(Tx+"LabelSL",OBJPROP_XDISTANCE,2);
    ObjectSet(Tx+"LabelSL",OBJPROP_YDISTANCE,12);
    ObjectSet(Tx+"LabelSL",OBJPROP_SELECTABLE,false);
    ObjectSet(Tx+"LabelSL",OBJPROP_HIDDEN,true);
    ObjectSetString(0,Tx+"LabelSL",OBJPROP_TOOLTIP,"\n");
    ObjectCreate(Tx+"LabelTP",OBJ_LABEL,ChartWindowFind(),0,0);
    ObjectSet(Tx+"LabelTP",OBJPROP_CORNER,0);
    ObjectSet(Tx+"LabelTP",OBJPROP_XDISTANCE,2);
    ObjectSet(Tx+"LabelTP",OBJPROP_YDISTANCE,27);
    ObjectSet(Tx+"LabelTP",OBJPROP_SELECTABLE,false);
    ObjectSet(Tx+"LabelTP",OBJPROP_HIDDEN,true);
    ObjectSetString(0,Tx+"LabelTP",OBJPROP_TOOLTIP,"\n");
    ObjectCreate(Tx+"LinieSL",OBJ_HLINE,0,0,Bid-SSL*MathPow(10,Digits*-1));
    ObjectSet(Tx+"LinieSL",OBJPROP_STYLE,STYLE_SOLID);
    ObjectSet(Tx+"LinieSL",OBJPROP_COLOR,Red);
    ObjectSet(Tx+"LinieSL",OBJPROP_HIDDEN,true);
    ObjectSetString(0,Tx+"LinieSL",OBJPROP_TOOLTIP,"\n");
    ObjectCreate(Tx+"LinieTP",OBJ_HLINE,0,0,Bid+STP*MathPow(10,Digits*-1));
    ObjectSet(Tx+"LinieTP",OBJPROP_STYLE,STYLE_SOLID);
    ObjectSet(Tx+"LinieTP",OBJPROP_COLOR,Blue);
    ObjectSet(Tx+"LinieTP",OBJPROP_HIDDEN,true);
    ObjectSetString(0,Tx+"LinieTP",OBJPROP_TOOLTIP,"\n");
    rechnen();
  }
  return(0);
}
void OnChartEvent(const int Id,const long &x,const double &y,const string &S)
{ if(Id==CHARTEVENT_OBJECT_DRAG)
    if(S==Tx+"LinieSL"||S==Tx+"LinieTP")
      rechnen();
}
int start()
{ rechnen();
  return(0);
}
void OnDeinit(const int R)
{ if(R!=REASON_CHARTCHANGE)
    ObjectsDeleteAll(0,Tx);
  else
  { GlobalVariableSet(Tx+"TFW",1);
    GlobalVariableSet(Tx+"SL",SL);
    GlobalVariableSet(Tx+"TP",TP);
  }
}
void rechnen()
{ SL=ObjectGet(Tx+"LinieSL",OBJPROP_PRICE1);
  if(Bid>SL)
    SL=Bid-SL;
  else
    SL-=Bid;
  ObjectSetString(0,Tx+"LabelSL",OBJPROP_TEXT,"SL-Abstand: "+DoubleToStr(SL,Digits));
  TP=ObjectGet(Tx+"LinieTP",OBJPROP_PRICE1);
  if(Bid>TP)
    TP=Bid-TP;
  else
    TP-=Bid;
  ObjectSetString(0,Tx+"LabelTP",OBJPROP_TEXT,"TP-Abstand: "+DoubleToStr(TP,Digits));
}

oder als Download: Anhang 2731


PS.: wie geht das hier, dass man den Dateinamen des Anhangs sieht und nicht die komische Nummer (2731)?


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 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