Возможно ли реагировать на стоп лосс?

 
Я так понимаю, в цикле проверять состояние ордеров, иначе никак.
 

Конечно, можно. Отслеживаете на каждом тике каждый открытую позу. Если пропала, то узнаете причину закрытия (профит, стоп), обращаясь к истории.

Если же вы создаете массив с тикетами своих поз, то еще проще:

if(OrderSelect(Tickets[i], SELECT_BY_TICKET))
 if(OrderCloseTime() != 0) // Это значит, что поза закрылась
  if(OrderClosePrice() == OrderStopLoss())
    {
     // действия, если одна из поз закрылась по стопу
    }

Переменная i - цикл, Tickets - массив с тикетами поз, который заполняется при открытии каждой позиции:

Tickets[i] = OrderSend(..);
 
Scriptong писал (а) >>

Конечно, можно. Отслеживаете на каждом тике каждый открытую позу. Если пропала, то узнаете причину закрытия (профит, стоп), обращаясь к истории.

Если же вы создаете массив с тикетами своих поз, то еще проще:

Переменная i - цикл, Tickets - массив с тикетами поз, который заполняется при открытии каждой позиции:



Спасибо за совет! Придется так и делать, мониторить какой-нибуть маленький тайм фрем. Жаль, колбеков нету....

 
Scriptong писал (а) >> ...

Могу ошибаться, но при закрытии по стопу OrderClosePrice() будет равна или хуже OrderStopLoss(). Если так, то надо учитывать еще и направление позы (BUY или SELL).

 
TheThink писал (а) >>

Могу ошибаться, но при закрытии по стопу OrderClosePrice() будет равна или хуже OrderStopLoss(). Если так, то надо учитывать еще и направление позы (BUY или SELL).

Да, может. Но такое я видел только у некоторых брокеров на не МТ-платформах или при гэпах. Основные же брокеры на микро- и мини- счетах закрывают четко по стопам и профитам.

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