Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как видите, поза открыта только одна, а в журнале мы видим, что советник видит их аж пять штук.
Хм, вообще-то в приведенном фрагменте лога нет ни одного принта из приведенного фрагмента кода. А у блока модификации Sell-ордеров отдельный цикл по ордерам? Этот-то закрыт
Хм, вообще-то в приведенном фрагменте лога нет ни одного принта из приведенного фрагмента кода. А у блока модификации Sell-ордеров отдельный цикл по ордерам? Этот-то закрыт
Вот я сделал снимок той же ситуации с Бай-ордером. (Принт обвёл красным - смотрите такую же строку и на предыдущем скрине)
Нужен полный код. Попробуйте упростить советник так, чтобы и ошибка воспроизводилась и код можно было выложить
Код изменил в соответствии с Вашими рекомендациями. Всёравно при открытом ордере функция возвращает несуществующие номера в списке ордеров.
и сравните распечатанный OrdersTotal с реальным количеством ордеров на закладке "Торговля".
Скрипт выдаёт верный результат. Я уже говорил об этом. Сейчас перепроверил. Так и есть. Скрипт пишет, что в рынке 1 ордер (и это верно), советник, что в рынке более одного ордера.
Если нет, добавляйте по одной строке из вашего кода, пока не появится.
Я пока только просмотрел код и наткнулся на такую вещь:
i - объявлена глобально. Вот она используется как счётчик цикла по ордерам. А вот внутри этого цикла вызывается функция FractalDOWN(). А вот внутри этой функции цикл и эта же i (раз она объявлена глобально) используется как счётчик цикла по барам. Неконтролируемо изменять внутри цикла его счётчик это неплохой способ устроить полный бардак :). Не знаю, единственный ли это сюрприз, но для начала устраните его.
Кстати, всё-таки вызывать в init() функции связанные с рыночным окружением плохая практика. Вот здесь совсем свежий комментарий от Renat'а 'почему-то не работает простейший индикатор?'
Я пока только просмотрел код и наткнулся на такую вещь:
i - объявлена глобально. Вот она используется как счётчик цикла по ордерам. А вот внутри этого цикла вызывается функция FractalDOWN(). А вот внутри этой функции цикл и эта же i (раз она объявлена глобально) используется как счётчик цикла по барам. Неконтролируемо изменять внутри цикла его счётчик это неплохой способ устроить полный бардак :). Не знаю, единственный ли это сюрприз, но для начала устраните его.
Кстати, всё-таки вызывать в init() функции связанные с рыночным окружением плохая практика. Вот здесь совсем свежий комментарий от Renat'а 'почему-то не работает простейший индикатор?'
Нда, я должен был догадаться об объявлении глобальной переменной. Сбило с толку то, что при объявлении той же переменной (переменой с тем же именем) в каждой функции отдельно, при вызове функции выделяется под эту переменную отдельная область оперативной памяти.
Теперь запустите советник с таким же кодом - появится ошибка? Если нет, добавляйте по одной строке из вашего кода, пока не появится.
И это я должен был предвидеть - сам неоднократно таким приёмом пользовался.Спасибо большое всем, что откликнулись - я думал с ума сойду в поисках ошибки. Иной раз всё проходит гладко даже в сложных кодах, а иной раз и код простой и смотришь на него как баран на новые ворота и не можешь понять, почему оно не работает :)
Пошёл править код.