Schönen guten Abend,
schraube gerade an einem kleinen EA zum testen herum, vom kompilieren her stimmt alles, anbei ein kleiner Ausschnitt vom wichtigsten Teil:
if((K0<20)&&(D0<20))
if((K0>D0)&&(D1>K1))
{signal="buy";}
if(signal=="buy"&& OrdersTotal()==0)
OrderSend(_Symbol,OP_BUY,1,Ask,3,Bid-100*_Point,Ask+200*_Point,NULL,0,0,Green);
Das funktioniert auch im strategytester tadellos, aber das Problem ist folgendes:
es soll ein ganz einfaches, klassisches Stochastik Crossover long Signal ausgelöst werden, das wird bekannterweise so codiert, indem im bar 1 (das ist der vorige bar) der KO kleiner als der D0 ist, und im aktuellen bar 0 der K0 größer als der D0 sein soll, was ein Crossover und OrderSend auslöst.
Soweit so gut: das Problem ist, dass in der Minute wo das Signal ausgelöst wird, plötzlich 6 Trades hintereinander ausgelöst wurden die alle im Takeprofit geschlossen haben, einer nach dem anderen. Also der erste Trade wurde sagen wir um 12:30.10 ausgelöst, im Takeprofit um 12:30:20 geschlossen, dann sofort der neue Trade ausgelöst, um 12:30:25 geschlossen im TP, dann der nächste ausgelöst.
Ein Spezialist sagte mir, dass das normal ist, weil solange das Sinal so besteht in der Minute, werden laufend hintereinander Trades ausgelöst, wenn der vorige geschlossen wurde, bis die nächste Minute beginnt.
Das hat mich etwas gewundert, weil ja nur erwünscht ist, dass EINMAL BEIM ERSTEN SIGNAL der Trade ausgelöst werden soll, dann im TP oder SL geschlossen wird, und das wars dann für die Minute, kein weiterer Trade ist dann in dieser Minute erwünscht.
Wo liegt da das Problem?
Danke!am Code liegt das Problem, der Spezialist dürfte auch kein Spezialist sein. Bring den Code in Ordnung und es wird funktionieren
Soweit so gut: das Problem ist, dass in der Minute wo das Signal ausgelöst wird, plötzlich 6 Trades hintereinander ausgelöst wurden die alle im Takeprofit geschlossen haben, einer nach dem anderen. Also der erste Trade wurde sagen wir um 12:30.10 ausgelöst, im Takeprofit um 12:30:20 geschlossen, dann sofort der neue Trade ausgelöst, um 12:30:25 geschlossen im TP, dann der nächste ausgelöst.
Ein Spezialist sagte mir, dass das normal ist, weil solange das Sinal so besteht in der Minute, werden laufend hintereinander Trades ausgelöst, wenn der vorige geschlossen wurde, bis die nächste Minute beginnt.
Das hat mich etwas gewundert, weil ja nur erwünscht ist, dass EINMAL BEIM ERSTEN SIGNAL der Trade ausgelöst werden soll, dann im TP oder SL geschlossen wird, und das wars dann für die Minute, kein weiterer Trade ist dann in dieser Minute erwünscht.
Wo liegt da das Problem?
Du müsstest mit einer (oder mehr) zusätzlichen Variablen (bool für gehandelt oder datetime für wann nächster Check erlaubt oder int für Balkenindex oder ...) die Auswertung für die nächste eventuelle Positionsöffnung steuern.
Verstehe, Danke
Eine logische Überlegung:
das ist das if sentence für das signal , welches ordersend auslöst: if(signal=="buy"&& OrdersTotal()==0)
theoretisch müsste ich nur statt &&OrdersTotal()==0) irgendwie reinschreiben, dass die GESCHLOSSENEN OrdersTotal()==0) sind. Dann eröffnet er auch keine neue order mehr, wenn eine schon geschlossen wurde, entweder TP oder SL....
Jetzt müsste man wissen, wie man "geschlossene Orders" in MQL4 übersetzt - von der Überlegung her, wäre das richtig, denke ich
Hier ist die Liste aller Funktionen für MQL4: https://docs.mql4.com/function_indices
Mit OrdersTotal() krigst die "the number of market and pending orders."
In MQL5 gibt es für schwebende Aufträge und tatsächliche Positionen unterschiedliche Funktionen - Du bist neu, warum mit MQL4 dies alte Pferd auf dem Gnadenhof (ist langsamer und wird nicht weiterentwickelt) statt des neuen "Rennpferds" MQL5, hier ein Vergleich:

Habe mir einmal MQL5 runtergeladen und nur Probleme damit gehabt - beim selben broker lief alles langsamer, wenn man orders live öffnen und schliessen wollte, musste man wo zeimal draufklicken - dann bin ich wieder zu MQL4 gewechselt

- 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.
Schönen guten Abend,
schraube gerade an einem kleinen EA zum testen herum, vom kompilieren her stimmt alles, anbei ein kleiner Ausschnitt vom wichtigsten Teil:
if((K0<20)&&(D0<20))
if((K0>D0)&&(D1>K1))
{signal="buy";}
if(signal=="buy"&& OrdersTotal()==0)
OrderSend(_Symbol,OP_BUY,1,Ask,3,Bid-100*_Point,Ask+200*_Point,NULL,0,0,Green);
Das funktioniert auch im strategytester tadellos, aber das Problem ist folgendes:
es soll ein ganz einfaches, klassisches Stochastik Crossover long Signal ausgelöst werden, das wird bekannterweise so codiert, indem im bar 1 (das ist der vorige bar) der KO kleiner als der D0 ist, und im aktuellen bar 0 der K0 größer als der D0 sein soll, was ein Crossover und OrderSend auslöst.
Soweit so gut: das Problem ist, dass in der Minute wo das Signal ausgelöst wird, plötzlich 6 Trades hintereinander ausgelöst wurden die alle im Takeprofit geschlossen haben, einer nach dem anderen. Also der erste Trade wurde sagen wir um 12:30.10 ausgelöst, im Takeprofit um 12:30:20 geschlossen, dann sofort der neue Trade ausgelöst, um 12:30:25 geschlossen im TP, dann der nächste ausgelöst.
Ein Spezialist sagte mir, dass das normal ist, weil solange das Sinal so besteht in der Minute, werden laufend hintereinander Trades ausgelöst, wenn der vorige geschlossen wurde, bis die nächste Minute beginnt.
Das hat mich etwas gewundert, weil ja nur erwünscht ist, dass EINMAL BEIM ERSTEN SIGNAL der Trade ausgelöst werden soll, dann im TP oder SL geschlossen wird, und das wars dann für die Minute, kein weiterer Trade ist dann in dieser Minute erwünscht.
Wo liegt da das Problem?
Danke!