В эксперте используется Эти функции, но почемуто при открытии позиции в столбце S/L одни нули стоят. Вот фрагмент:
- Наивысшая и наинизшая цена
- Советник
- В чем ошибка?
функции 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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь