|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Horizontale Linie mit Kurs bewegen lassen?
Hallo,
ich will seit langen wieder mal einen EA erstellen. Dazu möchte ich, dass eine horizontale Line die im EA erstellt wurde, sich mit den Bid-Preis mitbewegt aber nur in einer Richtung die ich einstellen kann. Das mag jetzt vielleicht komisch klingen, aber das hat schon seinen Sinn . Ich habe schon überall nachgeschaut ob ich einen Code finde aber was ich gefunden habe funktioniert irgendwie nicht so.... Ich wäre sehr dankbar für Hilfestellung Gruß Richi |
|
|||
Darf ich mal fragen Welchen?
|
|
|||
Darf ich mal fragen, warum Du fragst, welchen Sinn das ergibt?
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ich habe eine Strategie, die ich unbedingt testen möchte. Dazu brauche ich sogenannte Unterstützungs- oder Widerstandslinien (eben einfache horizontale Linien).
Genaueres kann ich leider noch nicht sagen, weil ich das erst mal testen muss. Ich hatte einen EA, den ich durch Zufall gefunden habe über den Strategietester mehrfach mit ausgewählten Währungspaaren und bestimmten Einstellungen getestet der wirklich jeden Tag ziemlich guten Profit macht aber unter realen Bestimmungen bzw. Demoaccount leider nicht funktionieren würde. Die Linien könnten eine große Hilfe dabei sein und den EA unter gewissen Umständen sogar funktionsfähig machen. Folgendes sollte sich ereignen: Wenn ich ein bestimmten Signal bekomme, sollte sich eine HLinie mit einen von mir bestimmten Abstand zum Ask- oder Bid-Kurs öffnen. Sobald sich der Kurs in eine Richtung bewegt, soll die Line stehen bleiben und sich nur in eine Richtung mit den Kurs mitbewegen die ich einstellen kann. Die Linie sollte so ähnlich funktionieren wie ein Trailing Stoploss. Sobald der Kurs die stehenbleibende Linie berührt oder überquert, soll wieder eine Funktion ausgeführt werden, die ich noch bestimmen werde. Das öffnen der Hline mit der visuellen Darstellung bzw. den Abstand zum Kurs habe ich hinbekommen aber für die Trailingfunktion reicht mein Wissen dazu leider nicht. für Hilfe mit Codes wäre ich unendlich dankbar |
|
|||
Hi Richi777,
hier kannst du dir die Logik für dein Ansinnen rausziehen: Code:
#property indicator_chart_window #property indicator_buffers 2 #property strict extern int Brokerzeit=-1; // Brokerzeitoffset [in Stunden] extern string VonZeit="08:00"; // Von extern string BisZeit="09:00"; // Bis extern color FaBar=C'150,50,0'; // Farbe Bars und Rangelinien extern int Faktor=10; // Faktor Tickgröße --> Anzeigegröße [>0] extern int NKS=1; // Anzahl Nachkommastellen extern int FontSize=8; // Schriftgröße Rangewert bool NeueRange=true; int i,Nr=0,BarAnz; string Tx="Range "; double P0[],P1[],Hoch,Tief; datetime Startzeit,Von,Bis; void init() { SetIndexBuffer(0,P0); SetIndexBuffer(1,P1); SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1,FaBar); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1,FaBar); Von=(datetime)VonZeit-StrToTime(TimeToString((datetime)VonZeit,TIME_DATE))+Brokerzeit*3600; Bis=(datetime)BisZeit-StrToTime(TimeToString((datetime)BisZeit,TIME_DATE))+Brokerzeit*3600; BarAnz=Bars-1; } void start() { for(i=BarAnz;i>=0;i--) if(Time[i]-StrToTime(TimeToString(Time[i],TIME_DATE))>=Von&&Time[i]-StrToTime(TimeToString(Time[i],TIME_DATE))<Bis) { if(NeueRange) { NeueRange=false; Nr++; Hoch=High[i]; Tief=Low[i]; Startzeit=Time[i]; ObjectCreate(0,Tx+"Hoch"+(string)(Nr),OBJ_TREND,0,Startzeit,Hoch,Startzeit,Hoch); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_COLOR,FaBar); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_WIDTH,1); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_STYLE,0); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_BACK,false); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_SELECTED,false); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_SELECTABLE,false); ObjectSet(Tx+"Hoch"+(string)(Nr),OBJPROP_RAY_RIGHT,false); ObjectCreate(0,Tx+"Tief"+(string)(Nr),OBJ_TREND,0,Startzeit,Tief,Startzeit,Tief); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_COLOR,FaBar); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_WIDTH,1); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_STYLE,0); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_BACK,false); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_SELECTED,false); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_SELECTABLE,false); ObjectSet(Tx+"Tief"+(string)(Nr),OBJPROP_RAY_RIGHT,false); ObjectSetString(0,Tx+"Tief"+(string)(Nr),OBJPROP_TOOLTIP,"\n"); ObjectCreate(0,Tx+"Range"+(string)(Nr),OBJ_TEXT,0,Startzeit,Hoch); ObjectSet(Tx+"Range"+(string)(Nr),OBJPROP_COLOR,FaBar); ObjectSet(Tx+"Range"+(string)(Nr),OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER); ObjectSet(Tx+"Range"+(string)(Nr),OBJPROP_SELECTABLE,false); ObjectSet(Tx+"Range"+(string)(Nr),OBJPROP_FONTSIZE,FontSize); ObjectSetString(0,Tx+"Range"+(string)(Nr),OBJPROP_TOOLTIP,"\n"); } P0[i]=High[i]; P1[i]=Low[i]; if(High[i]>Hoch) Hoch=High[i]; if(Low[i]<Tief) Tief=Low[i]; ObjectMove(0,Tx+"Hoch"+(string)(Nr),0,Startzeit,Hoch); ObjectMove(0,Tx+"Hoch"+(string)(Nr),1,Time[i],Hoch); ObjectMove(0,Tx+"Tief"+(string)(Nr),0,Startzeit,Tief); ObjectMove(0,Tx+"Tief"+(string)(Nr),1,Time[i],Tief); ObjectMove(0,Tx+"Range"+(string)(Nr),0,Startzeit,Hoch); ObjectSetString(0,Tx+"Range"+(string)(Nr),OBJPROP_TEXT,DoubleToStr((Hoch-Tief)/MathPow(10,Digits*-1)/Faktor,NKS)); } else NeueRange=true; BarAnz=0; } void deinit() { ObjectsDeleteAll(0,Tx); } ciao ping |
|
|||
so geht das.....
PHP-Code:
|
Lesezeichen |
Stichworte |
bid, bid preis, horizontale line preis, horizontale line verschieben, horizontale linie, mql4, programmierung, programmierung metatrader, programmierung mql4 |
|
|