Danke für die schnellen Antworten! Da hätte ich auch drauf kommen müssen...
Ich habe es jetzt folgendermaßen umgestellt.
Code:
///////Breakeven
void Breakeven()
{
//Buy
for (int i = 0; i < OrdersTotal(); i++)
{
ph=OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && (OrderMagicNumber() == Magic))
{
if(OrderType() == OP_BUY)
{
if(Bid > GlobalVariableGet(Symbol()+"_TP_1") && GlobalVariableGet(Symbol()+"_Remote_Buy_TP1") == 1)
{
ph=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + 5 * Poin,0,0);
if(ph > 0)
{
ph=OrderClose(OrderTicket(),OrderLots() / 2,Bid,10);
GlobalVariableDel(Symbol()+"_TP_1");
GlobalVariableDel(Symbol()+"_Remote_Buy_TP1");
GlobalVariableSet(Symbol()+"_Remote_Buy_TP2",1);
}
}
}
}
}
//Sell
for (int j = 0; j < OrdersTotal(); j++)
{
ph=OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && (OrderMagicNumber() == Magic))
{
if(OrderType() == OP_SELL)
{
if(Ask < GlobalVariableGet(Symbol()+"_TP_1") && GlobalVariableGet(Symbol()+"_Remote_Sell_TP1") == 1)
{
ph=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() - 5 * Poin,0,0);
if(ph > 0)
{
ph=OrderClose(OrderTicket(),OrderLots() / 2,Bid,10);
GlobalVariableDel(Symbol()+"_TP_1");
GlobalVariableDel(Symbol()+"_Remote_Sell_TP1");
GlobalVariableSet(Symbol()+"_Remote_Sell_TP2",1);
}
}
}
}
}
}
///////Takeprofit 2
void TakeProfit2()
{
//Buy
for (int h = 0; h < OrdersTotal(); h++)
{
ph=OrderSelect(h, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && (OrderMagicNumber() == Magic))
{
if(OrderType() == OP_BUY)
{
if(Bid > GlobalVariableGet(Symbol()+"_TP_2") && GlobalVariableGet(Symbol()+"_Remote_Buy_TP2") == 1)
{
ph=OrderModify(OrderTicket(),OrderOpenPrice(),GlobalVariableGet(Symbol()+"_TP_2"),GlobalVariableGet(Symbol()+"_TP_3"),0,0);
GlobalVariableDel(Symbol()+"_TP_2");
GlobalVariableDel(Symbol()+"_TP_3");
GlobalVariableDel(Symbol()+"_Remote_Buy_TP2");
}
}
}
}
//Sell
for (int k = 0; k < OrdersTotal(); k++)
{
ph=OrderSelect(k, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && (OrderMagicNumber() == Magic))
{
if(OrderType() == OP_SELL)
{
if(Ask < GlobalVariableGet(Symbol()+"_TP_2") && GlobalVariableGet(Symbol()+"_Remote_Sell_TP2") == 1)
{
ph=OrderModify(OrderTicket(),OrderOpenPrice(),GlobalVariableGet(Symbol()+"_TP_2"),GlobalVariableGet(Symbol()+"_TP_3"),0,0);
GlobalVariableDel(Symbol()+"_TP_2");
GlobalVariableDel(Symbol()+"_TP_3");
GlobalVariableDel(Symbol()+"_Remote_Sell_TP2");
}
}
}
}
}
Der Übersichtlichkeit halber habe ich eine Trennung zwischen der Breakeven-Funktion und der TakeProfit2-Funktion vorgenommen. Für Kritik bin ich jederzeit offen
Noch eine Frage (die euch wahrscheinlich ein müdes Lächeln abringt, aber ich bin Programmier-Autodidakt
)
Ich nutze bei vielen Funktionen als double die Variable "ph" (= Platzhalter
), da mich die ständigen Fehlermeldungen/Hinweise beim Kompilieren gernervt haben. Nutzt ihr für sowas immer unterschiedliche Variablen, oder händelt ihr das ähnlich?
VG Bucardo