Скачать MetaTrader 5

Подскажите насчет TrailingStop

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
liza
1052
liza  

Здравствуйте!

Функция TrailingStop() работает, если вместо sl()

вставить постояное значение (например 15*Point).

 


int TrailingStop()

{  


double ts = 1*Point;


double s = sl();


{

for(int i=OrdersTotal()-1;i>=0;i--)

  {

 

    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

    {

      if( OrderSymbol()!=Symbol()) continue;

      { 

         if(OrderType()==OP_BUY)

         {

         if(Bid - OrderStopLoss() > s + ts)

         OrderModify(OrderTicket(),OrderOpenPrice(),Bid - s,OrderTakeProfit(),0,CLR_NONE);  

         }

         if(OrderType() == OP_SELL)

         {

         if(OrderStopLoss() - Ask > s + ts)

         OrderModify(OrderTicket(),OrderOpenPrice(),Ask + s,OrderTakeProfit(),0,CLR_NONE);

         }

      }

    }

  }

 } 

 return(0);

 } 


Почему она не работает если я использую функцию sl()?

 double sl()

{

double s = 0, h = 0, l = 0, r = 0;

for(int i = 1; i <= 50; i++)

  {

  h = iHigh(Symbol(),1440,i);

  l = iLow(Symbol(),1440,i);

  s += h - l;

  }

r = NormalizeDouble(s/50/k,4);  

return(r);

}

Alexander
2441
Alexander  

Наверное потому что в строке r = NormalizeDouble(s/50/k,4);  

Вы пытаетесь поделить на ноль, т.к. "к" еще не определена.

liza
1052
liza  
Определена как input переменная
liza
1052
liza  

Извините!

Спасибо что указали (не тот коэффициент использовала).

Все работает. 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий