Помогите найти ошибку - страница 3

 
khodakvv:

А разве не OrdersTotal проверяет наличие ордера ? Ордер может быть только один

Проверка весьма условная:

1. Ордер может быть выставлен не по той паре

2. Ордер может быть выставлен другим советником или руками

3. Ордер может быть не рыночным - отложенным, тогда он закрывается другим способом.

Посмотрите примеры и базу кодов - там же все это есть ... и к тому же очень подробно описано в учебнике и документации. Обратите особое внимание на то какие ошибки возвращает функция открытия ордера и как их обрабатывать. И разберитесь как и зачем для обработки выбираются ордера (ОрдерСелект).

Потом продолжим.

2

Sepulca

2) if(ticket==false) это что такое при int tiket? 
Возможно это будет работать так- если тикет нечётный - if сработает, если чётный то нет.

Нет, это так работать не будет. По стандарту false это 0, а true - не ноль, то есть может быть любым, отличным от нуля, значение 1 не гарантировано. Поскольку в качестве ошибки возвращается -1, то есть число отличное от 0, то работать этот участок кода будет только тогда, когда тикет равен нулю. Для реала - это внесение депозита.

По поводу while(true) для открытия ордеров:

Из цикла есть предполагаемый выход по return, но реально он не должен срабатывать, может сработать на демо - на реале вряд ли. Писал выше почему. Но к этому позже вернемся.

Причина обращения: