|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Fehler in While-Schleife?
Hallo,
zum Test habe ich folgende While-Schleife separat vom Hauptcode getestet (hier mit einfacheren, lesbareren Variablen...). Bei einem Startkurs (Ask) von DAX 12.041,8 wird der StopBuy bei 12.072,5 gesetzt. Er sollte aber 1,5% über 11.980,5, also bei 12.160,2 gesetzt werden. Das Ziel: Hätte ich bei einer Basis von 11.980,5 einen Ask von 12.300, soll 11.980,5 + 1,5% = 12160,2, dann (weil <Ask) bei 12160,2 + 1,5% = 12.342,6 der StopBuy gesetzt werden (weil ja nun >Ask... Noch ein Hinweis: Prüfuwert "Ask + 30" tut nichts zur Sache, den hab ich nur gesetzt, um eine Spanne zu bekommen... Danke für eure Hilfe! Hier der Code: Code:
bool Ereignis=true; int ticketL; double Price=11980.5; if (Ereignis == true) { if (OrderType() == OP_BUYSTOP) { bool LongResult=true; } } if (LongResult) double StopBuyOpenValue = Price; double StopBuy2Low; double LongValuePerc; while (Ask +30 > StopBuyOpenValue) if (LongResult) { LongValuePerc = NormalizeDouble(StopBuyOpenValue * NextBuyPercent / 100,Digits); //NextBuyPercent = 1.5 StopBuy2Low = StopBuyOpenValue + LongValuePerc; StopBuyOpenValue++; } bool LStopBuyResult_Restore=false; LStopBuyResult_Restore = ticketL= OrderSend(Symbol(),OP_BUYSTOP,LotsTraded,StopBuyOpenValue,Slippage,0,0,"BUY(#" + MagicNumberLong + ")",MagicNumberLong,0,Green); LongResult=false; |
|
|||
Ich habs grad mal simuliert und bei mir erhalte ich das richtige Ergebnis. Paar Dinge zu deinem Code:
Code:
if (Ereignis == true) { if (OrderType() == OP_BUYSTOP) { bool LongResult=true; } } LongResult müsstest du am besten oben bei Ereignis erstellen. Code:
if (LongResult) double StopBuyOpenValue = Price; double StopBuy2Low; double LongValuePerc; while (Ask +30 > StopBuyOpenValue) if (LongResult) { LongValuePerc = NormalizeDouble(StopBuyOpenValue * NextBuyPercent / 100,Digits); //NextBuyPercent = 1.5 StopBuy2Low = StopBuyOpenValue + LongValuePerc; StopBuyOpenValue++; } bool LStopBuyResult_Restore=false; LStopBuyResult_Restore = ticketL= OrderSend(Symbol(),OP_BUYSTOP,LotsTraded,StopBuyOpenValue,Slippage,0,0,"BUY(#" + MagicNumberLong + ")",MagicNumberLong,0,Green); LongResult=false;
Code:
bool LStopBuyResult_Restore=false; LStopBuyResult_Restore = ticketL= OrderSend(Symbol(),OP_BUYSTOP,0.10,StopBuyOpenValue,3,0,0); Um es weiter zu verarbeiten, hättest du einfach abgefragt, ob ticketL == -1. Da brauchst du dann auch keine "LStopBuyResult_Restore" mehr. |
Lesezeichen |
Stichworte |
berechnung while-schleife, fehler while-schleife, mql4, programmierung, programmierung metatrader, programmierung mql4, while-schleife, while-schleife berechnen |
|
|