Als een trade wordt afgesloten door een Stop Loss, wordt het volume verdubbeld; als het wordt afgesloten door een Take Profit, wordt het minimale volume gebruikt. De functie OnTradeTransaction wordt gebruikt om te bepalen of een trade is uitgevoerd na de activatie van Stop Loss of Take Profit.
In build 1625 is de uitstekende enumeratie ENUM_DEAL_REASON toegevoegd:
| ENUM_DEAL_REASON | Omschrijving van de reden |
|---|---|
| ... | ... |
| DEAL_REASON_SL | De operatie is uitgevoerd als gevolg van de activatie van Stop Loss |
| DEAL_REASON_TP | De operatie is uitgevoerd als gevolg van de activatie van Take Profit |
| ... | ... |
Dit kan worden gecontroleerd in OnTradeTransaction.
Met andere woorden, het is een zeer eenvoudige en betrouwbare manier om te bepalen of een trade het resultaat was van Take Profit of Stop Loss.
Op dit moment (build 1626) kan deze Expert Advisor alleen in een live test worden gecontroleerd - door het te starten op een grafiek of in de debugmodus met echte data (F5 in de MetaEditor). Ik heb de volgende omweg gebruikt:
In OnTradeTransaction hebben we bepaald of Take Profit of Stop Loss is geactiveerd:
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); }
Reactie 0