Findet jemand den Fehler?
Hab ihn !
Du hast den Code ohne den "Code-Button" eingefügt
Sieht doch gleich viel netter aus.
#include<Trade\Trade.mqh> CTrade trade; void OnTick() { double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); if(PositionsTotal()<2) { trade.Buy(0.10,NULL,Ask,(Ask-100*_Point),(Ask+50*_Point),NULL); checkTrailingStop(Ask); } } void checkTrailingStop(double Ask) { double SL = NormalizeDouble(Ask-150*_Point,_Digits); for(int i = PositionsTotal() -1; i>=0; i--) { string symbol = PositionGetSymbol(i); if(_Symbol==symbol) { ulong PositionTicket = PositionGetInteger(POSITION_TICKET); double CurrentStopLoss = PositionGetDouble(POSITION_SL); if(CurrentStopLoss<SL) { trade.PositionModify(PositionTicket,(CurrentStopLoss+10*_Point),0); } } } }
:-)
Ergänzend möchte ich noch empfehlen vor dem Posten im Editor unter Extras => Styler (Ctrl+,) den Code zu strukturieren!
Außerdem steht bestimmt nicht in der Anleitung, dass eine Funktion innerhalb von OnTick() deklariert wird!
Es gibt so viele funktionierende Beispiele für einen Trailng-Stop - man muss nur suchen!
Janis , dreh mal dein Vergleichsoperator von < auf >
void checkTrailingStop(double Ask) { double SL = NormalizeDouble(Ask-150*_Point,_Digits); for(int i = PositionsTotal() -1; i>=0; i--) { string symbol = PositionGetSymbol(i); if(_Symbol==symbol) { ulong PositionTicket = PositionGetInteger(POSITION_TICKET); double CurrentStopLoss = PositionGetDouble(POSITION_SL); if(CurrentStopLoss>SL) // ******************************************** { trade.PositionModify(PositionTicket,(CurrentStopLoss+10*_Point),0); } } } }
Dann funktioniert er
Außerdem steht bestimmt nicht in der Anleitung, dass eine Funktion innerhalb von OnTick() deklariert wird!
Ist sie nicht , er hat nur die Klammern schlecht positioniert.
#include<Trade\Trade.mqh> CTrade trade; void OnTick() { double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); if(PositionsTotal()<2) { trade.Buy(0.10,NULL,Ask,(Ask-100*_Point),(Ask+50*_Point),NULL); checkTrailingStop(Ask); } } void checkTrailingStop(double Ask) { double SL = NormalizeDouble(Ask-150*_Point,_Digits); for(int i = PositionsTotal() -1; i>=0; i--) { string symbol = PositionGetSymbol(i); if(_Symbol==symbol) { ulong PositionTicket = PositionGetInteger(POSITION_TICKET); double CurrentStopLoss = PositionGetDouble(POSITION_SL); if(CurrentStopLoss<SL) { trade.PositionModify(PositionTicket,(CurrentStopLoss+10*_Point),0); } } } }
Janis , dreh mal dein Vergleichsoperator von < auf >
Dann funktioniert er
Abe4r nur bei der Hälfte, da nicht nach Kauf- oder Verkaufspositionen unterschieden wird!
Richtig, gilt nur für den Code mit BUY
Carl, versuch mal die Ausrufezeichen sparsam einzusetzen.
Das wirkt immer so streng, und das bist du doch nicht.
ich verstehe meinen Fehler nicht. Ich habe anstatt einer limit Order eine direkte verwendet und dann ging es....
Ist sie nicht , er hat nur die Klammern schlecht positioniert.
Das kann so nicht gehen, der ea mcht 2 positionen auf, bis 2 positionen checkt er den tl, dann kommt er nicht mehr in die if rein
der trailing gehört in eine extra schleife wo er fragt ob eine position vorhanden ist
Und preis muss erstmal 100 points für mich sein, da er ja einen slvon 50 und einen tl von 150 hatDas kann so nicht gehen, der ea mcht 2 positionen auf, bis 2 positionen checkt er den tl, dann kommt er nicht mehr in die if rein
der trailing gehört in eine extra schleife wo er fragt ob eine position vorhanden ist
Und preis muss erstmal 100 points für mich sein, da er ja einen slvon 50 und einen tl von 150 hatIst ja richtig, aber erstmal musste das konkrete Problem gefunden werden.
Der Rest ist dann erstmal uninteressant. Stück für Stück ...kennste doch noch aus deinen Anfängen.
Man sollte die Latte nicht zu hoch hängen dann kommt keiner mehr mit.
Meine Meinung.
Ist ja richtig, aber erstmal musste das konkrete Problem gefunden werden.
Der Rest ist dann erstmal uninteressant. Stück für Stück ...kennste doch noch aus deinen Anfängen.
Man sollte die Latte nicht zu hoch hängen dann kommt keiner mehr mit.
Meine Meinung.
Geb ich dir recht christian, aber du kommst ja nie in den trailingstop
if(PositionsTotal()<2) { trade.Buy(0.10,NULL,Ask,(Ask-100*_Point),(Ask+50*_Point),NULL); }Dann könnte es funktionieren, ohne den 2 rahmen, der kommt weil ich am tablett binif(PositionsTotal()!=0) { checkTrailingStop(Ask); } }
- 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.
Ich stehe gerade auf dem Schlauch.
Tralling stop funktioniert nicht obwohl ich die Anleiung übernommen habe.