Detect stop loss or take profit
DEAL_REASON
Hello,
this always returns DEAL_REASON_CLIENT.
This is the code:
void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if(trans.symbol == Symbol()) { ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(trans.deal,DEAL_ENTRY); ENUM_DEAL_REASON deal_reason=(ENUM_DEAL_REASON) HistoryDealGetInteger(trans.deal,DEAL_REASON); PrintFormat("deal entry type=%s trans type=%s trans deal type=%s order-ticket=%d deal-ticket=%d deal-reason=%s",EnumToString(deal_entry),EnumToString(trans.type),EnumToString(trans.deal_type),trans.order,trans.deal,EnumToString(deal_reason)); } }
chinaski:
Hello,
this always returns DEAL_REASON_CLIENT.
This is the code:
You need to select the deal from history before accessing the properties.
See HistoryDealSelect().
Hi,
i changed the code to this:
if(HistoryDealSelect(trans.deal) == true) { ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(trans.deal,DEAL_ENTRY); ENUM_DEAL_REASON deal_reason=(ENUM_DEAL_REASON) HistoryDealGetInteger(trans.deal,DEAL_REASON); PrintFormat("deal entry type=%s trans type=%s trans deal type=%s order-ticket=%d deal-ticket=%d deal- reason=%s",EnumToString(deal_entry),EnumToString(trans.type),EnumToString(trans.deal_type),trans.order,trans.deal,EnumToString(deal_reason)); }
The protocol answers:
deal-reason=DEAL_REASON_SL
Thank you
Thank you...
Hello,
how to detect stop or take profit ? It seems that transaction is not providing this information.
This is a transaction protocol of a single in and out by stop loss:
And this is OnTransaction Code: