Position Modifier not working correctly

Sep 09, 2015 at 05:59
485 개의 뷰
3 Replies
Sep 08, 2015 부터 멤버   게시물1
Sep 09, 2015 at 05:59
I've been working on an EA for a while and part of it adjusts the stop loss on positions based on other criteria. The opening conditions allow it to open up to 4 positions at a time, all the buy orders are set with the magic index of 4 and sells are 3.

For some reason the stop loss adjuster is working fine but only on the first position, the other 3 are not being modified at all.

This is probably me with smoke kind of rookie error but if anyone has any ideas that might be able to solve this issue that would be amazing.

Thanks

Tom
forex_trader_25447
Dec 21, 2010 부터 멤버   게시물131
Sep 09, 2015 at 13:33
Is there any Error code ?
 Are you sure your value for SL are correct ? It must be :
StopLoss_BUY = OrderOpenPrice() - Distance;
StopLoss_SELL= OrderOpenPrice() + Distance;
Where Order must be Selected before,
and Distance must be greater (>) than
MathMax( MarketInfo(_Symbol,MODE_STOPLEVEL), MarketInfo(_Symbol,MODE_FREEZELEVEL))*_Point;
Jun 04, 2015 부터 멤버   게시물31
Sep 15, 2015 at 10:01
Here we go, all orders with magic xxx are modified - similar tp.

   void PairLossModify(){
    bool modifypairloss;
    for(cnt=OrdersTotal();cnt>=0;cnt--){
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
         if(OrderType()==OP_BUY){
            if(OrderStopLoss()==0 && MaxPairLoss!=0){
               RefreshRates();
               modifypairloss=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+MaxPairLoss*pt,Digits),OrderTakeProfit(),0,Red);
            }
         }
         if(OrderType()==OP_SELL){
            if(OrderStopLoss()==0 && MaxPairLoss!=0){
               RefreshRates();
               modifypairloss=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-MaxPairLoss*pt,Digits),OrderTakeProfit(),0,Red);
            }
          }
        }
      }
    }
forex_trader_25447
Dec 21, 2010 부터 멤버   게시물131
Sep 15, 2015 at 13:24
As I understand , You have 2 different MAGIC for BUY and SELL.
So the lines :

if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{ if(OrderType()==OP_BUY) { /*Your code*/ }
  if(OrderType()==OP_SELL) { /*Your code*/ }
}

Must be like this :

if(OrderSymbol()==Symbol())
{ if(OrderType()==OP_BUY && OrderMagicNumber()==MagicBUY) { /*Your code*/ }
  if(OrderType()==OP_SELL && OrderMagicNumber()==MagicSELL) { /*Your code*/ }
}
로그인 / 가입하기 to comment
You must be connected to Myfxbook in order to leave a comment
*상업적 사용 및 스팸은 허용되지 않으며 계정이 해지될 수 있습니다.
팁: 이미지/유튜브 URL을 게시하면 게시물에 자동으로 삽입됩니다!
팁: @기호를 입력하여 이 토론에 참여하는 사용자 이름을 자동으로 완성합니다.