Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   OrderModify für SELL Order klappt nicht (http://www.expert-advisor.com/forum/showthread.php?t=6807)

MarkusWilhelm89 20.10.20 11:34

OrderModify für SELL Order klappt nicht
 
Hi,
ich hoffe mir kann jemand helfen bzw. einen Tipp geben.
die OrderModify-Funktion TS_SL_DELETE_OP_BUY funktioniert bei mir einfach nicht.
Die andere Funktion TS_SL_DELETE_OP_SELL läuft problemlos...

Ich bin echt ratlos warum nur eine der beiden geht obwohl die Bedingungen m.E. identisch sind :confused::confused:

Code:

if(OrderType()==OP_BUY && OrderTakeProfit()==0)
for(int b= OrdersTotal()-1;b>=0;b--){if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)
if(OrderType()==OP_SELL && OrderStopLoss()!=0)
  {bool TS_SL_DELETE_OP_SELL =OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,clrNONE);}}

if(OrderType()==OP_SELL && OrderTakeProfit()==0)
for(int b= OrdersTotal()-1;b>=0;b--){if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)
if(OrderType()==OP_BUY && OrderStopLoss()!=0)
  {bool TS_SL_DELETE_OP_BUY =OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,clrNONE);}}


danke vorab

traderdoc 20.10.20 16:19

OrderType() vor der Funktion OrderSelect() zu benutzen, wird immer 0 ergeben.
der Wert OP_BUY entspricht dem Wert 0, OP_SELL dem Wert 1.
Somit ist dann OrderType() == OP_BUY immer true und damit springt das Programm auch zu TS_SL_DELETE_OP_SELL aber nicht zu TS_SL_DELETE_OP_BUY.

Übrigens der Korrektheit wegen, TS_SL_DELETE_OP_SELL und TS_SL_DELETE_OP_BUY sind keine Funktionen, sondern Variablen.
Und dann bitte demnächst übersichtlichen Code schreiben, d.h. Klammern benutzen, einrücken etc.

traderdoc

MarkusWilhelm89 20.10.20 17:39

vielen Dank für den Hinweis :-)

MarkusWilhelm89 21.10.20 15:18

sorry ich hab's glaub ich nicht gecheckt :confused::(
ich möchte ihm sagen, wenn der BreakEven überschritten ist und der TrailingStop im Gewinn nachgezogen wurde, lösche den SL der Gegenposition, damit der Trade freie Bahn hat....
An welcher Stelle muss ich Select und Co. setzen???


Code:

  if(OrdersTotal()>=2 && useTrailingStop==true)
      for(int b= OrdersTotal()-1; b>=0; b--)
        if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)

            if(OrderType()==OP_BUY && BreakEvenBuy!=0 && Bid>BreakEvenBuy+StopLevel*_Point+1*Point)
              for(int d= OrdersTotal()-1; d>=0; d--)
                  if(OrderSelect(d,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)
                    if((OrderType()==OP_SELL)&& OrderStopLoss()!=0)
                      {bool DELET_SELL_SL      =OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,clrNONE);}

  if(OrderType()==OP_SELL && BreakEvenSell!=0 && Ask<BreakEvenSell-StopLevel*_Point-1*Point)
      for(int d= OrdersTotal()-1; d>=0; d--)
        if(OrderSelect(d,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)
            if((OrderType()==OP_BUY)&& OrderStopLoss()!=0)
              {bool DELET_BUY_SL      =OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,clrNONE);}


MarkusWilhelm89 22.10.20 15:01

hab eine andere Lösung gefunden :-)

Code:

  if(OrdersTotal()>=2 && useTrailingStop==true)
    {
      if(BreakEvenBuy!=0 && Bid>BreakEvenBuy+StopLevel*_Point+1*Point)
        for(int b= OrdersTotal()-1; b>=0; b--)
            if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL && OrderStopLoss()!=0 && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)
              {bool DELET_SELL_SL      =OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,clrNONE);}
    };

  if(OrdersTotal()>=2 && useTrailingStop==true)
    {
      if(BreakEvenSell!=0 && Ask<BreakEvenSell-StopLevel*_Point-1*_Point)
        for(int b= OrdersTotal()-1; b>=0; b--)
            if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY && OrderStopLoss()!=0 && OrderMagicNumber()==MagicNumber && OrderSymbol()==_Symbol)
              {bool DELET_BUY_SL      =OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,clrNONE);}
    };



Alle Zeitangaben in WEZ +2. Es ist jetzt 00:51 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum