Möglicher Fehler des MT5-Strategie-Testers beim Risikomanagement bei der Berechnung der Charge mit der Funktion OrderProfitCheck
- MQL5-Assistent: Entwickeln von Handelsrobotern für MetaTrader 5
- MetaTrader 5, der integrierte Handelsstrategietester
- So stellen Sie eine Verbindung zur Webplattform her - MetaTrader 5
Die funktion wird funktionieren, du musst wohl bei der implementierung suchen
Die funktion wird funktionieren, du musst wohl bei der implementierung suchen
Hallo, wenn es funktioniert, in Echtzeit-Demo habe ich es bereits ausprobiert und es funktioniert sehr gut. Was passiert, ist, dass es im Simulator alles gut zu machen scheint, aber in ein paar Operationen brennt es die Waage. Es macht zum Beispiel keinen Sinn, einen Verlustvorgang zu schließen, bei dem ich 15 USD riskiert und 350 USD oder mehr abgezogen habe. In einigen Vorgängen verbrennt das die Waage. Ich habe die manuelle Berechnung gemäß meinem SL und meinem Risiko pro Vorgang durchgeführt, um die Linie und zu berechnen Es ist dasselbe, was der Berater berechnet. Heute werde ich andere Tests durchführen und einige Bilder aufnehmen, um die Situation besser zu beschreiben, danke.
Schau dir die Funktion an.
//+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ bool LotsOptimized(double & aLots, double sl, ENUM_ORDER_TYPE TipoOrden) { double stepvol=m_symbol.LotsStep(); double minvol=m_symbol.LotsMin(); double maxvol=m_symbol.LotsMax(); double Loss=0; //double lot=0; double precioactual = 0; if(TipoOrden==ORDER_TYPE_BUY) { Loss=-m_account.OrderProfitCheck(m_symbol.Name(),ORDER_TYPE_BUY,1.0,m_symbol.Ask(),sl); precioactual = m_symbol.Ask(); } else { Loss=-m_account.OrderProfitCheck(m_symbol.Name(),ORDER_TYPE_SELL,1.0,m_symbol.Bid(),sl); precioactual = m_symbol.Bid(); } aLots = MathFloor(m_account.Balance()*MaximumRisk/Loss/100.0/stepvol)*stepvol; //---comprobación del lote máximo /*if(TipoOrden==ORDER_TYPE_BUY) lot=m_account.MaxLotCheck(m_symbol.Name(),ORDER_TYPE_BUY,m_symbol.Ask(),MaximumRisk); else lot=m_account.MaxLotCheck(m_symbol.Name(),ORDER_TYPE_SELL,m_symbol.Bid(),MaximumRisk);*/ if(aLots>maxvol) aLots=maxvol; //---comprobación del lote mínimo if(aLots<minvol) aLots=0.0; Comentario=Comentario+StringFormat("\n\nCon un Sl de %f (%f)Pips,en UN Lote estoy arriesgando = %f Lote necesario: %f\n",sl,MathAbs(sl-precioactual)*SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE),Loss,aLots); return(true); }
PD. Entschuldigung für die Grammatikfehler, ich benutze Google Traslate.
Hallo, wenn es funktioniert, in Echtzeit-Demo habe ich es bereits ausprobiert und es funktioniert sehr gut. Was passiert, ist, dass es im Simulator alles gut zu machen scheint, aber in ein paar Operationen brennt es die Waage. Es macht zum Beispiel keinen Sinn, einen Verlustvorgang zu schließen, bei dem ich 15 USD riskiert und 350 USD oder mehr abgezogen habe. In einigen Vorgängen verbrennt das die Waage. Ich habe die manuelle Berechnung gemäß meinem SL und meinem Risiko pro Vorgang durchgeführt, um die Linie und zu berechnen Es ist dasselbe, was der Berater berechnet. Heute werde ich andere Tests durchführen und einige Bilder aufnehmen, um die Situation besser zu beschreiben, danke.
Schau dir die Funktion an.
PD. Entschuldigung für die Grammatikfehler, ich benutze Google Traslate.
Erfassung von Simulationsfehlern.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.