Zitat:
Zitat von piptrade
"nötig oder unnötig" zu "ChechTakeProfit()", sollte nicht das Thema sein.
|
Wollte ich auch nicht zu einem Thema machen. In deinem (neuesten) Code hast du aber neben "CheckTakeProfit()" als
Kommentar "// nicht notwendig (next_user) !!!" stehen, was ich lediglich richtig stellen wollte...
=== === === === === === === === === === === ===
Zitat:
Zitat von piptrade
Bei "openOrders == 1" bzw. "openOrders == 2" wird es schon interessanter:
|
Nur so nebenbei gefragt, wenn "openOrders" nur zwischen 1 & 2 trennt, könntest du dort doch einfach auch die
beiden Variablen "orderTicket1 / 2" nutzen.
=== === === === === === === === === === === ===
Zitat:
Zitat von piptrade
"Trail_Target_2 + SMA7_ATR5_1" bzw. " *100 * Point", können wir uns wahrscheinlich "schenken". Nunmehr wissen wir beide, was gemeint war.
(Unabhängig davon weiß ich nicht, wie ich "SMA7_ATR5_1" besser erklären soll. Zudem hat diese variierende Größe wenig Code-Relevanz.)
|
Zum ersten Teil, jap.
Zum zweiten Teil, du hast es ja ausreichend gut erklärt, das war ja nicht das Problem. Ich habe ja im vorherigen Post erklärt,
warum ich es TROZDEM als mögliche Fehlerquelle angesprochen hatte, eben weil ich schon viele "gut benannte" Variablen anderer
gesehen habe, die sich dann komplett anders herausstellten.
=== === === === === === === === === === === ===
Zitat:
Zitat von piptrade
Hier wurde der Begriff "updateSL" verwendet und der diesbezügliche Code als "Block 1" bezeichnet:
...
...
Ist das richtig ? Haben wir jetzt wieder die notwendige Übereinstimmung ?
|
Hatten wir sie denn nicht? So stand es doch bisher immer in deinem Code.
=== === === === === === === === === === === ===
Zitat:
Zitat von piptrade
Separat bzw. parallel dazu müssen natürlich erst einmal die Positionen 1 + 2 eröffnet werden. Dies sollte dann außerhalb der "void OnTick()" erfolgen ("Block 2") und "SO" aussehen:
Code:
void TrailStopLoss(int ticket)
{
ResetLastError(); // könnte ggf. entfallen
if(OrderSelect(ticket,SELECT_BY_TICKET)) {
if(OrderType() == OP_BUY && (openOrders == 1 || openOrders == 2)) {
if(Bid - OrderOpenPrice() > Trail_Target_1 *100 * Point)
{
if(OrderStopLoss() < Bid - TSL || OrderStopLoss() == 0)
{
if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSL, OrderTakeProfit(), Blue))
return; Print("Error setting Buy trailing stop: ", GetLastError());
}
}
}
else if(OrderType() == OP_SELL && (openOrders == 1 || openOrders == 2)) {
if(OrderOpenPrice() - Ask > Trail_Target_1 *100 * Point)
{
if(OrderStopLoss() > Ask + TSL || OrderStopLoss() == 0)
{
if(!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSL, OrderTakeProfit(), Blue))
return; Print("Error setting Sell trailing stop: ", GetLastError());
}
}
}
}
}
Ist auch das richtig ? Haben wir auch an dieser Stelle wieder die notwendige Übereinstimmung ?
|
Zum ersten Satzt ("(Block2) und "SO" aussehen"). Ja, nur das der Code nicht für die Ordereröffnung, sonder den SL dient.
Zum zweiten Satz, auch hier war eine Übereinstimmung ja gegeben. Lediglich deine beiden Codeblöcke müsstest du
"kommunizieren" lassen. In Block 1 nutzt du "updateSL()" in diesem, zweiten Block nennst du die Funktion "TrailStopLoss()"
=== === === === === === === === === === === ===
Zitat:
Zitat von piptrade
Ansonsten hoffe ich, dass Du Dich ein wenig erholt hast und warte `mal wieder voller Spannung auf Dein nächstes
Statement.
|
Hab gut geschlafen...
Schauen wir mal, wenn das nächste mal der Fehler auftaucht, welche deiner Print-Ausgaben dabei aktiv werden.
So sollten wir dann schnell zur Ursache kommen...