функции Highest и Lowest возвращают индекс максимального или минимального значения, а не само значение
функции Highest и Lowest возвращают индекс максимального или минимального значения, а не само значение
А как мне найти значение?
функции Highest и Lowest возвращают индекс максимального или минимального значения, а не само значение
А как мне найти значение?
Обратиться по индексу к нужному массиву: Time[index], High[index], etc
функции Highest и Lowest возвращают индекс максимального или минимального значения, а не само значение
А как мне найти значение?
Обратиться по индексу к нужному массиву: Time[index], High[index], etc
Исправил
if (OrdersTotal()>=1)
{
if (OrderType()==OP_SELL)
{
SL=High[Highest(NULL,0,MODE_HIGH,NBars,0)];
}
if (OrderType()==OP_BUY)
{
SL=Low[Lowest(NULL,0,MODE_LOW,NBars,0)];
}
return(0);
}
Ничего не изменилось
А где вызов OrderSelect?
А где вызов OrderSelect?
Если вот так:
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrdersTotal()>=1)
{
if (OrderType()==OP_SELL)
{
SL=High[Highest(NULL,0,MODE_HIGH,NBars,1)];
}
if (OrderType()==OP_BUY)
{
SL=Low[Lowest(NULL,0,MODE_LOW,NBars,1)];
}
return(0);
}
}
Тоже нету SL.
В данном случае if (OrdersTotal()>=1) лишний оператор.
Кроме того непонятен смысл оператора return(0) - это выход из функции.
После него ничего в функции выполняться не будет до следующего тика.
(это очень вероятная причина)
Ну и поставте вывод в лог (Print(sl, .....))
Кроме того непонятен смысл оператора return(0) - это выход из функции.
После него ничего в функции выполняться не будет до следующего тика.
(это очень вероятная причина)
Ну и поставте вывод в лог (Print(sl, .....))
В данном случае if (OrdersTotal()>=1) лишний оператор.
Кроме того непонятен смысл оператора return(0) - это выход из функции.
После него ничего в функции выполняться не будет до следующего тика.
(это очень вероятная причина)
Ну и поставте вывод в лог (Print(sl, .....))
Кроме того непонятен смысл оператора return(0) - это выход из функции.
После него ничего в функции выполняться не будет до следующего тика.
(это очень вероятная причина)
Ну и поставте вывод в лог (Print(sl, .....))
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELL)
{
SL=High[Highest(NULL,0,MODE_HIGH,NBars,1)];
}
if (OrderType()==OP_BUY)
{
SL=Low[Lowest(NULL,0,MODE_LOW,NBars,1)];
}
}
Print("SL ",SL);
Опять SL 0. Что еще может быть?
:))
Может не быть ордеров типа OP_SELL, OP_BUY.
Может вообще не быть ордеров ...
Поставте принт после каждого оператора ... :)
Текст вроде бы правильный, а логика ....
Это только вам известно ...
Может не быть ордеров типа OP_SELL, OP_BUY.
Может вообще не быть ордеров ...
Поставте принт после каждого оператора ... :)
Текст вроде бы правильный, а логика ....
Это только вам известно ...
:))
Может не быть ордеров типа OP_SELL, OP_BUY.
Может вообще не быть ордеров ...
Поставте принт после каждого оператора ... :)
Текст вроде бы правильный, а логика ....
Это только вам известно ...
Может не быть ордеров типа OP_SELL, OP_BUY.
Может вообще не быть ордеров ...
Поставте принт после каждого оператора ... :)
Текст вроде бы правильный, а логика ....
Это только вам известно ...
Ордера были, ведь позиции открывались, пока все условия совпадали, интересно вот что, если
Comment("SL= ",SL);, на экране SL=0, если Comment("SL= ", Low[Lowest(NULL,0,MODE_LOW,NBars,1)]), тада все правильно показывает. Почему? Не понятно.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if (OrdersTotal()>=1) { if (OrderType()==OP_SELL) { SL=Highest(NULL,0,MODE_HIGH,NBars,0); } if (OrderType()==OP_BUY) { SL=Lowest(NULL,0,MODE_LOW,NBars,0); } return(0); } AverageCur = iMA(NULL,0,Length,0,MODE_SMA,PRICE_CLOSE,1); AveragePre = iMA(NULL,0,Length,0,MODE_SMA,PRICE_CLOSE,2); if ((AverageCur > AveragePre) && (Close[1] < Open[1]) && (Close[2] > Open[2]) && (Close[1] < Open[2]) && (Open[1] > Close[2]) && ((Open[1]-Close[1]) > 0.0010) /*&& (iRSI(NULL,0,LenRSI,PRICE_CLOSE,1) >= 70)*/) { OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,Bid-TakeProfit*Points,001,0,Blue); SetIndexArrow(0,226); return(0); }