Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 901
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ненужные расчёты (не относящиеся к проблеме) убрал. Специально для отображения косяка были дописаны в код принты. Несмотря на сравнение символа ордера с символом, на котором открыт советник, может выдать вот это (с ози чарта брать данные ордера по евро, например, как в данном случае):
Такое не могло выдать, Аск на кенгуру никак не мог быть больше любой цены открытия на евродолларе в 2015...
А все проверки выбранного ордера лучше производить после выбора, отдельным условием if().
Такое не могло выдать, Аск на кенгуру никак не мог быть больше любой цены открытия на евродолларе в 2015...
А все проверки выбранного ордера лучше производить после выбора, отдельным условием if().
Всё верно, не могло. Поэтому выдало по Bid<openPrice ордера по евре по 1.11262.
То есть, предлагаете сделать проверить на наличие ордера чере if(OrderSelect()), а потом во вложенном if уже сравнивать символ чарта с символом ордера, цену открытия и т.п.?
Всё верно, не могло. Поэтому выдало по Bid<openPrice ордера по евре по 1.11262.
То есть, предлагаете сделать проверить на наличие ордера чере if(OrderSelect()), а потом во вложенном if уже сравнивать символ чарта с символом ордера, цену открытия и т.п.?
Не помогут пляски с бубном.
Никакой разницы нет в одной строке писать выбор ордера и проверку символа и магика или разделить их на 3 разные строки. Согласно изменениям в новых билдах проверка условий происходит поэтапно, тоесть если первое условие не выполнено, следующие и проверяться не будут. То-же самое что и 3 строки. Выполнено первое условие, проверяем второе. И только если и второе условие выполнено переходит на проверку третьего условия.
Проблема видимо в том, что в удалённой части кода есть вызов пользовательской функции в которой есть выбор другого ордера.
Если бы там было еще хоть одно упоминание о работе с ордерами, это было бы первым, на что я обратил внимание. Но там только расчёты, ни единой пользовательской функции не используется. Непонятно, что именно вызывает выбор ордера с другой пары. Поэтому я так и озадачился указанной в документации "программной средой" и уже переделал код, как предложил evillive и готов с бубнами поплясать. Следующим извратом будет принудительное сравнение с бидом\аском нужной пары через маркетинфо.
UPD.: Проблема решилась. На самом деле была найдена вложенная функция, в которой используется свой OrderSelect. Спасибо за поданную идею, AlexeyVik.
Вот создал советник (не для работы, просто для практики)
Но почему то он не срабатывает на истории если в функции ЕСЛИ заданы оба параметра, если их задать по очереди все срабатывает на отлично вот код (и еще: подскажите как сделать, чтобы если уже есть открытый ордер Buy следующий ордер Buy не открывался, даже если все условия соответствуют?):
Вот создал советник (не для работы, просто для практики)
Но почему то он не срабатывает на истории если в функции ЕСЛИ заданы оба параметра, если их задать по очереди все срабатывает на отлично вот код (и еще: подскажите как сделать, чтобы если уже есть открытый ордер Buy следующий ордер Buy не открывался, даже если все условия соответствуют?):
Не то, чтобы прямо это и есть источник всех бед, но чисто из академического интересу: почему одновременно OnInit(), OnDeinit() и потом вдруг start()???
А по вопросу, сильно не рекомендовано такое сравнение Ask == MA, крайне редко сбывается на истории. Ну и вот что такое выражение PC-->MA означает?
А по поводу разрешения на один Бай, в цикле перебираем все рыночные позиции, сравниваем с заданными критериями - символ, тип, магик, при нахождении искомого - увеличиваем счётчик на единицу. Потом там, где надо, этот счётчик смотрим.
Вот как-то так:
Не то, чтобы прямо это и есть источник всех бед, но чисто из академического интересу: почему одновременно OnInit(), OnDeinit() и потом вдруг start()???
А по вопросу, сильно не рекомендовано такое сравнение Ask == MA, крайне редко сбывается на истории. Ну и вот что такое выражение PC-->MA означает?
А по поводу разрешения на один Бай, в цикле перебираем все рыночные позиции, сравниваем с заданными критериями - символ, тип, магик, при нахождении искомого - увеличиваем счётчик на единицу. Потом там, где надо, этот счётчик смотрим.
start() как то по "привычке" переправил )
Почему Ask == MA редкое событие? разве текущая цена спроса редко касается линии Moving Average?
А PC-->MA у меня это - если предыдущая цена закрытия выше линии Moving Average (по другому я не придумал как сделать).
Так вот, когда я в функцию ЕСЛИ по очереди включаю сначала только Ask == MA а потом только PC-->MA все нормально работает, а вот когда их совмещаю, не работает!
Не то, чтобы прямо это и есть источник всех бед, но чисто из академического интересу: почему одновременно OnInit(), OnDeinit() и потом вдруг start()???
А по вопросу, сильно не рекомендовано такое сравнение Ask == MA, крайне редко сбывается на истории. Ну и вот что такое выражение PC-->MA означает?
А по поводу разрешения на один Бай, в цикле перебираем все рыночные позиции, сравниваем с заданными критериями - символ, тип, магик, при нахождении искомого - увеличиваем счётчик на единицу. Потом там, где надо, этот счётчик смотрим.
Вот как-то так:
Я понял так, что РС-- > MA это тоже самое что РС-1 > MA