Как отследить сработку тейкпрофита и вызвать функцию Alert

 
ArtemKolesnikov писал(а) >>

Приветствую!

Есть ордер. цена доходит до тейкпрофита (стоплосса)и при этом ордер закрывается. мне нужно вывести окно Alert с результатами сделки.

Спасибо!

// LastHistTotal - Глобальная переменная программы
if (OrdersHistoryTotal()>LastHistTotal)
{
   LastHistTotal= OrdersHistoryTotal();
   if (!OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY) Alert ("Ошибка!"); 
   else { if (OrderClosePrice()==OrderStopLoss() )
               Alert ("Сработал стоплосс, результат:", OrderProfit());
            else if (OrderClosePrice()==OrderTakeProfit() )
               Alert ("Сработал тейкпрофит, результат:", OrderProfit()); }
}
Схематично с несколькими оговорками можно попробовать примерно вот так... Если по уму, подход должен быть серьезнее.
 
Figar0 >>:
Схематично с несколькими оговорками можно попробовать примерно вот так... Если по уму, подход должен быть серьезнее.

СПАСИБО! Суть понятна.

ПРОСМАТРИВАТЬ СПИСОК ЗАКРЫТЫХ ОРДЕРОВ И ПРИ ПОЯВЛЕНИИ ПОСЛЕДНЕГО - СООБЩАТЬ.

Точнее, при изменении глобальной переменной.

После каждого алерта можно эту переменную обнулять, чтоб при появлении нового значения сразу сообщать.

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

Буду думать, идея хорошая.

 
ArtemKolesnikov писал(а) >>

Точнее, при изменении глобальной переменной.

После каждого алерта можно эту переменную обнулять, чтоб при появлении нового значения сразу сообщать.

Обнулять как раз не надо, лучше в init проиницилизировать переменную тем же OrderHistoryTotal(), а свое значение изменит именно OrderHistoryTotal() и неравенство снова выполнится... А если обнулять - Алерт будет вылезать бесконечно.

 
Figar0 >>:

Обнулять как раз не надо, лучше в init проиницилизировать переменную тем же OrderHistoryTotal(), а свое значение изменит именно OrderHistoryTotal() и неравенство снова выполнится... А если обнулять - Алерт будет вылезать бесконечно.

а, я не обратил внимание на 

if (OrdersHistoryTotal()>LastHistTotal)

То есть этим самым мы итак получаем, что OrderHistoryTotal()  сам по себе изменит значение при новом событии (SL/TP) и это значение естественно будет отличаться от того, которое ранее записано в глобальной переменной.

Ясно, спасибо!

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