einen anderen Namen benötigen
ObjectCreate("tomato " + high_nr,OBJ_TREND,0,Time[high_nr],high_price,Time[0],high_price); ObjectSet("tomato " + high_nr,OBJPROP_COLOR,Tomato);
nach
ObjectCreate("olive"+low_nr,OBJ_TREND,0,Time[low_nr],low_price,Time[0],low_price); ObjectSet("olive"+low_nr,OBJPROP_COLOR,Olive);
setzt der Code 25 Zeilen, auf den gleichen Preis, aber beginnend nicht von Kerze low_nr (die immer 10 ist, spielt keine Rolle, welche die reale Zahl nach stoch <25 ist), aber von Kerze 35.
dasselbe für Tomate.
:(
Sobald ein Objekt erstellt wurde, können Sie kein weiteres Objekt mit demselben Namen erstellen.
Deshalb funktioniert es zwar beim ersten Mal, aber danach nicht mehr (in Ihrem ursprünglichen Code).
Wenn Sie nur die letzte Zeile, die die Kriterien erfüllt, in Ihrem Diagramm anzeigen lassen wollen, erstellen Sie die Zeile in init und verwenden Sie dann ObjectMove, um das Objekt zu seinen neuen Koordinaten zu verschieben.
Wenn Sie möchten, dass alle vergangenen Zeilen angezeigt werden,
ObjectCreate("tomato " + high_nr,OBJ_TREND,0,Time[high_nr],high_price,Time[0],high_price);
Da high_nr die Balkenverschiebung ist, wird sie wahrscheinlich zu einem späteren Zeitpunkt repliziert und funktioniert daher nicht richtig. Verwenden Sie die Datumsangabe im Namen, dann ist er eindeutig.
Hallo
ich habe versucht, im Code Folgendes zu schreiben:
wenn K% Linie von stochastic(80,30,30) > 75, schauen Sie 36 Bars zurück (34,shift 2) und zeichnen Sie eine H_line "Tomate" vom höchsten Hoch zum aktuellen Bar.
wenn die K%-Linie der Stochastik(80,30,30) < 25 ist, blicke 36 Balken zurück (34,shift 2) und zeichne eine H_line "olive" vom niedrigsten Tiefpunkt zum aktuellen Balken.
Wenn ich das ausführe, erhalte ich das erste Setup für Tomate und für Olive ok, dann, auch wenn ich in Journal "Tomate ON" verschiedene Preis lvl, bekomme ich nicht neue Tomate Linie auf dem Chart. dasselbe für Olive.
die Idee der ea ist es, diese Linien zu verwenden, um Trades zu öffnen. so, was ich schließlich wollen, ist dies zu haben:
wenn K%>75
zeichnen Linie o höchsten (Vergangenheit 36 Bars).
wenn Linie ON, zeichnen Sie keine weiteren Linien, bis die Linie gelöscht wird.
wenn ein Handel geöffnet ist, wird die Linie gelöscht
wenn kein Handel geöffnet ist und 24 Balken nach dem Balken, der K%>75 bestimmt hat, wird die Linie ebenfalls gelöscht
:)
Da dies mein erster Code ist, den ich in meinem ganzen Leben geschrieben habe, bitte ich Sie, mir zu zeigen, wie ich das Problem angehen soll.
danke
Wir beginnen am Anfang .....
double stoch=iStochastic(NULL,0,Kperiod,Dperiod,Stochshift,MODE_SMA,1,MODE_MAIN,0);
Bei Takt 0 kann stoch irgendwo bei Takt 0 Wert > 75 und Ende mit niedrigerem Wert bekommen
Hat es eine Linie in diesem Fall zu zeichnen ?? oder ist es nur für enge Preis stochastische Enden ??
double high_price,low_price; int high_nr,low_nr; high_nr=iHighest(NULL,0,MODE_HIGH,34,2); high_price=High[high_nr]; low_nr=iLowest(NULL,0,MODE_LOW,34,2); low_price=Low[low_nr];
Haben Sie jemals iHighest und/oder iLowest verwendet? Siehe, wie man iHighest und iLowest verwendet
if(stoch > 75) high_price = High[iHighest(NULL,0,MODE_HIGH,......
if(stoch < 25) low_price = Low[iLowest(........
//-----
for(high_nr=2;high_nr<36;high_nr++) // why do you repeat this ?? { if(Bid<high_price && stoch>75) { ObjectCreate("tomato",OBJ_TREND,0,Time[high_nr],high_price,Time[0],high_price); ObjectSet("tomato",OBJPROP_COLOR,Tomato); Print ("tomato ON"+high_price); } }
einmaliges Erzeugen ist genug .... die Schleife wiederholt nur das, was in { }
also wird keine Schleife für diese .... benötigt.
dann, bevor Sie erstellen
- Überprüfung der laufenden Trades
- Prüfen Sie, ob ein Objekt, dessen Name mit "Tomate" beginnt, bereits existiert, und wenn ja, dann prüfen Sie, ob Sie das alte Objekt löschen müssen
erstellen Sie einen Namen Moment machen Sie es wie
linenamehigh = "tomato "+ TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)
überprüfen Sie Ihre Objekte können mit
//---- int i, ot=ObjectsTotal()-1; string id; //---- for(i=ot;i>=0;i--) {id=ObjectName(i); if(StringSubstr(id,0,7)=="tomato ") { //check when created if(StringSubstr(id,8,...)< TimeToStr(Time[24],........)){ObjectDelete(id);} } if(StringSubstr(id,0,6)=="olive ") { //..... } }
Klicken Sie auf die Links und versuchen Sie zu verstehen, was passiert
Stellen mit ....... innerhalb des Codes kannst du versuchen selbst auszufüllen
Kannst du spezifizieren , was du versuchst, zu erreichen?
die endgültige Idee:
Signal 1 = wenn K%>75 und das Hoch von bar[1] und dem aktuellen bar[0] kleiner ist als das höchste Hoch der letzten 36 bar(High_point)
Tomatenlinie auf High_point zeichnen
wenn die Tomatenlinie bereits gezeichnet wurde, werden keine weiteren Linien gezeichnet, bis die Linie gelöscht wird.
wenn ein Handel mit der Tomatenlinie geöffnet ist, wird die Linie gelöscht
wenn kein Handel eröffnet ist und 96 Bars seit dem Bar, der den High_point bestimmt hat, vergangen sind , wirddie Linie gelöscht.
jetzt, ich bekomme nur eine Zeile auf jedem Signal 1(Print-Funktion sendet 36 "Tomate ON" jede gültige tick ich denke), so habe ich den Code zu sagen, um die Schleife zu stoppen, nachdem es die Tomate Linie findet. ich gehe kochen einige Spaghetti und denken, wie ich schreiben sollte, dass... in meinem Kopf sollte dies der nächste Schritt sein.... hoffe, ich bin nicht etwas verpassen :)
bin ich auf dem richtigen weg? vielen dank für eure hilfe und ratschläge.
den Code bis jetzt:
//+------------------------------------------------------------------+ //| 1expert.mq4 | //| ant | //| | //+------------------------------------------------------------------+ #property copyright "ant" #property link "" #property indicator_chart_window extern int Kperiod = 80; extern int Dperiod = 30; extern int Stochshift = 30; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double stoch; stoch=iStochastic(NULL,0,Kperiod,Dperiod,Stochshift,MODE_SMA,1,MODE_MAIN,0); double high_price,low_price; int high_nr,low_nr; high_nr=iHighest(NULL,0,MODE_HIGH,34,2); high_price=High[high_nr]; low_nr=iLowest(NULL,0,MODE_LOW,34,2); low_price=Low[low_nr]; datetime H=Time[high_nr]; datetime L=Time[low_nr]; ///////////////////////////////////////////////////////////////////////////////// for(high_nr=2;high_nr<36;high_nr++) { if(Bid<high_price && High[0]<high_price && High[1]<high_price && stoch>75) { ObjectCreate("tomato"+H,OBJ_TREND,0,H,high_price,Time[0],high_price); ObjectSet("tomato"+H,OBJPROP_COLOR,Tomato); Print ("tomato ON"+H); } } /////////////////////////////////////////////////////////////////////////////// for(low_nr=2;low_nr<36;low_nr++) { if(Bid>low_price && Low[0]>low_price && Low[1]>low_price && stoch<25) { ObjectCreate("olive"+L,OBJ_TREND,0,L,low_price,Time[0],low_price); ObjectSet("olive"+L,OBJPROP_COLOR,Olive); Print ("olive ON"+low_price); } } //---- //---- return(0); }
double high_price,low_price; int high_nr,low_nr; high_nr=iHighest(NULL,0,MODE_HIGH,34,2); high_price=High[high_nr]; low_nr=iLowest(NULL,0,MODE_LOW,34,2); low_price=Low[low_nr]; datetime H=Time[high_nr]; datetime L=Time[low_nr]; if (stoch > 75 && High[1] < High[high_nr] && High[0] < High[high_nr]) { ObjectCreate("tomato"+H,OBJ_TREND,0,Time[H],high_price,Time[0],High[0]); ObjectSet("tomato"+H,OBJPROP_COLOR,Tomato); Print ("tomato ON"+H); }
B.T.W. braucht dazu keine Leitung
Der Fall, über den du sprichst, cichichan wird selten vorkommen, so müssen Sie einen Index verwenden, damit Sie sehen können, was Sie tun:
http://charts.mql5.com/3/799/eurusd-h1-fxpro-financial-services.png
Der Pfeil_nach-unten wird nicht angezeigt, da gibt es irgendwo einen Fehler ....
//+------------------------------------------------------------------+ //| lexpert.mq4 | //| | //+------------------------------------------------------------------+ #property copyright "ant" #property link "" #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 YellowGreen #property indicator_color2 Coral extern int Kperiod = 80; extern int Dperiod = 30; extern int Stochshift = 30; double arrow_up[]; double arrow_down[]; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //-------- SetIndexBuffer(0, arrow_up ); SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID,2); SetIndexArrow(0,233); SetIndexEmptyValue(0,0.0); //-------- SetIndexBuffer(1,arrow_down); SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID,2); SetIndexArrow(1,234 ); SetIndexEmptyValue(1,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- macd counted in the 1-st additional buffer for(int i=limit; i>=0; i--) { double stoch_1, stoch_2; stoch_2=iStochastic(NULL,0,Kperiod,Dperiod,Stochshift,MODE_SMA,1,MODE_MAIN,i+2); stoch_1=iStochastic(NULL,0,Kperiod,Dperiod,Stochshift,MODE_SMA,1,MODE_MAIN,i+1); double high_price,low_price; int high_nr,low_nr; high_nr=iHighest(NULL,0,MODE_HIGH,34,i+2); high_price=High[high_nr]; low_nr=iLowest(NULL,0,MODE_LOW,34,i+2); low_price=Low[low_nr]; datetime H=Time[high_nr]; datetime L=Time[low_nr]; ///////////////////////////////////////////////////////////////////////////////// if(Bid<high_price && High[i]<high_price && High[i+1]<high_price && stoch_2<75 && stoch_1 >75) { arrow_down[i] = High[i] + 5*iATR(NULL,0,200,i); ObjectCreate("tomato"+H,OBJ_TREND,0,H,high_price,Time[i],high_price); ObjectSet("tomato"+H,OBJPROP_RAY_RIGHT, false); ObjectSet("tomato"+H,OBJPROP_WIDTH,5 ); ObjectSet("tomato"+H,OBJPROP_COLOR,Tomato); Print ("tomato ON"+H); } else arrow_down[i] = 0.0; /////////////////////////////////////////////////////////////////////////////// if(Bid>low_price && Low[i]>low_price && Low[i+1]>low_price && stoch_2>25 && stoch_1 < 25) { arrow_up[i] = Low[i] - 5*iATR(NULL,0,200,i); ObjectCreate("olive"+L,OBJ_TREND,0,L,low_price,Time[i],low_price); ObjectSet("olive"+L,OBJPROP_COLOR, Yellow ); ObjectSet("olive"+L,OBJPROP_WIDTH,5 ); ObjectSet("olive"+L,OBJPROP_RAY_RIGHT, false); Print ("olive ON"+low_price); } else arrow_up[i] = 0.0; //---- } //---- return(0); }

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo
ich habe versucht, im Code Folgendes zu schreiben:
wenn K% Linie von stochastic(80,30,30) > 75, schauen Sie 36 Bars zurück (34,shift 2) und zeichnen Sie eine H_line "Tomate" vom höchsten Hoch zum aktuellen Bar.
wenn die K%-Linie der Stochastik(80,30,30) < 25 ist, blicke 36 Balken zurück (34,shift 2) und zeichne eine H_line "olive" vom niedrigsten Tiefpunkt zum aktuellen Balken.
Wenn ich das ausführe, erhalte ich das erste Setup für Tomate und für Olive ok, dann, auch wenn ich in Journal "Tomate ON" verschiedene Preis lvl, bekomme ich nicht neue Tomate Linie auf dem Chart. dasselbe für Olive.
die Idee der ea ist es, diese Linien zu verwenden, um Trades zu öffnen. so, was ich schließlich wollen, ist dies zu haben:
wenn K%>75
zeichnen Linie o höchsten (Vergangenheit 36 Bars).
wenn Linie ON, zeichnen Sie keine weiteren Linien, bis die Linie gelöscht wird.
wenn ein Handel geöffnet ist, wird die Linie gelöscht
wenn kein Handel geöffnet ist und 24 Balken nach dem Balken, der K%>75 bestimmt hat, wird die Linie ebenfalls gelöscht
:)
Da dies mein erster Code ist, den ich in meinem ganzen Leben geschrieben habe, bitte ich Sie, mir zu zeigen, wie ich das Problem angehen soll.
Dankeschön