Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 02.10.16
Bucardo Bucardo ist offline
Neues Mitglied
 
Registriert seit: Nov 2014
Beiträge: 27
Bucardo befindet sich auf einem aufstrebenden Ast
Standard

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