Чтобы советник не открывал сделки повторно.

 

Никак не могу заставить моего робота не открывать сделки повторно. У меня математический расчет используется в алгоритме, поставил переменную _OnlyAlternateSignals. Вроде бы неплохо, но с приходом нового бара, опять открывает, если условия сигнала совпадают с первой закрытой уже сделкой. Вот как это выглядит:

// открытие сделки

// ---

get_lots_by_percent(Ask, Ask-_SL*K_DIG*Point);

// ---

if(!find_orders(_MagicNumber, (_OnlyAlternateSignals ? -1 : OP_BUY)))

{

if(op_buy_sig() && LAST_BUY_BARTIME != iTime(Symbol(), Period(), 0))

{

LAST_BUY_BARTIME = iTime(Symbol(), Period(), 0);

open_positions(OP_BUY, OP_LOTS);

}

 
как вы торгуете руками когда открываете терминал ? Правильно, первым делом вы смотрите е есть ли открытые сделки и какие . Так же и в алгоритме посмотрите есть ли открыты ордера и какие ? 
 
Dmitiry Ananiev:
как вы торгуете руками когда открываете терминал ? Правильно, первым делом вы смотрите е есть ли открытые сделки и какие . Так же и в алгоритме посмотрите есть ли открыты ордера и какие ? 
Вот он и смотрит, видит что на этом баре нет и открывает
 
Sprut112:
Вот он и смотрит, видит что на этом баре нет и откр

Смотреть можно Не только на этот бар. Можно вообще посмотреть, есть ли открытые сделки или нет . 

 
Sprut112:

Никак не могу заставить моего робота не открывать сделки повторно. У меня математический расчет используется в алгоритме, поставил переменную _OnlyAlternateSignals. Вроде бы неплохо, но с приходом нового бара, опять открывает, если условия сигнала совпадают с первой закрытой уже сделкой. 

 Идентифицируйте сам сигнал, дождитесь выхода из совпадения условий, сбросьте флаг.

 
если хотите после закрытой сделки только противоположный сигнал ждать то ищите в истории свою последнюю сделку по тикету или по времени