как можно определить сработал TakeProfit или StopLoss у ордера? Ордер всегда не могу, разобраться как понять сделка прошла успешно или нет...
Читал про HistorySelect не помогло. Может кто сталкивался, подскажите.
свойство ENUM_DEAL_PROPERTY_DOUBLE DEAL_PROFIT Финансовый результат сделки
Не получается...
void Prf() { //--- request trade history HistorySelect(0,TimeCurrent()); uint total=HistoryDealsTotal(); ulong ticket=0; double profit; for(uint i=0;i<total;i++) { if((ticket=HistoryDealGetTicket(i))>0) { profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); if(profit) { printf("#ticket, %f", ticket, // тикет ордера profit ); } } }
void Prf() { if(!HistorySelect(0,TimeCurrent())) return; ulong ticket; for(int i=0;i<HistoryDealsTotal();i++) if( (ticket=HistoryDealGetTicket(i))>0 ) { if( StringFind(HistoryDealGetString(ticket,DEAL_COMMENT),"[sl")>=0 ) Print(ticket,": sl_exit OK!"); if( StringFind(HistoryDealGetString(ticket,DEAL_COMMENT),"[tp")>=0 ) Print(ticket,": tp_exit OK!"); } }
Добрый день!
Была похожая проблема ( HistorySelect не работает).
Решил так.
Нужно знать билет ордера ( order_ticket )
#include <Trade\Trade.mqh>
CTrade trade;
ulong order_ticket;
if ( trade.OrderOpen( _Symbol, ORDER_TYPE_BUY_STOP, volume_deal, 0, deal_price, stop_loss, 0, ORDER_TIME_GTC, 0, "Set order." ) )
{
if ( trade.ResultRetcode() == TRADE_RETCODE_DONE )
{
order_ticket = trade.ResultOrder();
//--- Check order ticket
if ( ( order_ticket ) > 0 )
{
Print( "Set order to Buy done. Ticket = ", order_ticket );
return( true );
}
}
}
ДАЛЕЕ проверяем ордер по билету:
if ( order_ticket > 0 )
{
ResetLastError();
if ( !OrderSelect( order_ticket ) )
{
if ( GetLastError() == ERR_TRADE_ORDER_NOT_FOUND )
{
order_ticket = 0;
Print( "Order removed by StopLoss or TakeProfit." );
}
}
}
100% работает
Михаил
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
как можно определить сработал TakeProfit или StopLoss у ордера? Ордер всегда не могу, разобраться как понять сделка прошла успешно или нет...
Читал про HistorySelect не помогло. Может кто сталкивался, подскажите.