Количество одновременно открытых ордеров не может быть больше 2, как это организовать?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
igrok333
2034
igrok333  
Советник открывает сделки по стрелкам индикатора, сделки потом закрываются по СЛ или ТП.




Количество одновременно открытых ордеров не может быть больше 2 , как это организовать?

Можно сделать так: разрешить ордера открывать если OrdersTotal()<2,
но тогда может несколько ордеров открыться на одной стрелке.

Как по правильному организовать?
Renat Akhtyamov
16182
Renat Akhtyamov  
плюсом к OrdersTotal()<2 проверить наличие открытого ордера на текущем баре
Igor Zakharov
6656
Igor Zakharov  

Пауза между открытиями, работа только на открытии свечи... оба варианта советников можете найти в кодабазе (для примера).

проверка по OrdersTotal() - не правильный ход, т.к. это Тотал - т.е. все вообще, всех символов, всех роботов, и ручные в этой же куче. организуйте перебор со счётчиком только нужных.

igrok333
2034
igrok333  
Renat Akhtyamov:
плюсом к OrdersTotal()<2 проверить наличие открытого ордера на текущем баре
Можно смотреть OrderOpenTime() открытой сделки и  еще смотреть время текущего бара.

Но оно там до секунд показывает. поэтому оно все равно не будет совпадать.
igrok333
2034
igrok333  
Если на этом баре уже был открытый ордер - то больше на этом баре не разрешать открывать ордера  -

вот эту задачу нужно решить.
Renat Akhtyamov
16182
Renat Akhtyamov  
igrok333:
Можно использовать OrderOpenTime() и  еще смотреть время текущего бара.

Но оно там до секунд показывает. поэтому оно все равно не будет совпадать.

int prevSignal,Signal; //допустим -1 - продажа, 1 - покупка, 0 - отсутствие сигнала

datetime  prevTime;

int OnInit()

{

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

   ...

}

//------

void OnTick()
{

   if(prevTime!=iTime(Symbol(),Period(),0) && MathAbs(Signal)==1 && prevSignal!=Signal && OrdersTotal()<2)

   {

       //можно открыть

   }

   prevSignal=Signal;

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

   ...

}

igrok333
2034
igrok333  
Может в коммент писать время бара, и сравнивать есть ли уже ордер с таким комментом?

Но говорят брокер в 00:00 коммент изменяет.
igrok333
2034
igrok333  
Renat Akhtyamov:

int OnInit()

{

   datetime  prevTime=iTime(Symbol(),Period(),0);

   ...

}

//------

if(prevTime!=iTime(Symbol(),Period(),0) && OrdersTotal()<2)

{

//можно открыть

}

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

то есть работать только на открытии?

может так и организую ...
Renat Akhtyamov
16182
Renat Akhtyamov  
igrok333:
то есть работать только на открытии?

может так и организую ...

переделал код выше, иначе все равно 2 штуки откроет

igrok333
2034
igrok333  
Renat Akhtyamov:

переделал код выше, иначе все равно 2 штуки откроет

хорошо, спасибо.
Renat Akhtyamov
16182
Renat Akhtyamov  
igrok333:
хорошо, спасибо.
получилось?
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий