Помогите! МТС совершает только одну сделку - страница 2

 
Если условия не верны то почему открывается первая сделка?
Проблема такова: с одним запуском мтс следует одна сделка,дальше надо удалить советник з графика и наново запустить тогда он совершыт еще одну сделку! МОЖЕТ ОН ПОСЛЕ СОВЕРШЕНИЯ ОДНОЙ СДЕЛКИ ПРОСТО ОСТАНОВЛЯЕТСЯ А НЕ ПРОДОЛЖАЕТ РАБОТАТЬ,КАК ЕГО ЗАПУСТИТЬ НА ПОСТОЯННУЮ РАБОТУ?

Очень похоже на скрипт, а не на советник.
 
Вот:
bool first=true;
...

if (first) {a=Ask; b=Bid; first=false; return(0);}
...
Вот часть кода. Как его можно исправить?


bool first=true; - эта переменная локальная (описана внутри функции) ?

Чтобы не заглядывать сюда снова - мало ли какие еще загадки Вы задавать будете :).

Если эта переменная локальная, то получаем бесконечный цикл первого запуска - значение флага всегда будет истина поскольку при перезапуске функции все локальные переменные переинициализируются, а чтобы локальная переменная не переинициализировалась при повторном запуске функции она должна быть статической.
static bool first=true;
Если же переменная глобальная (описана вне функций) - ищите ошибку в другом месте.

Успехов.
 
Очень похоже на скрипт, а не на советник.

Если эта переменная локальная

Будут еще варианты ? :)
 
Очень похоже на скрипт, а не на советник.

Если эта переменная локальная

Будут еще варианты ? :)


будут :-) Возможно закрытие ордера происходит по TakeProfit или по StopLoss , соответственно флаг bool first=true; на разрешение открытия нового ордера не устанавливается
Причина обращения: