Наверное потому что в строке r = NormalizeDouble(s/50/k,4);
Вы пытаетесь поделить на ноль, т.к. "к" еще не определена.
Определена как input переменная
Извините!
Спасибо что указали (не тот коэффициент использовала).
Все работает.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Функция 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);
}