seit ein paar Monaten beschäftige ich mich mit dem Programmieren eines EA.
Dass die Resultate von Backtesting und Live-Trading sich unterscheiden war mir schon vorher bekannt. Doch dass selbst simple Bedingungen, welche im Programm eine Order auslösen sollten im Live-Trading 'übersehen' werden, konnte ich mir vorher nicht vorstellen. So sollte z. B. nach einem Gap eine Kauf- bzw. Verkaufsorder ausgelöst werden. Am 14.1. 2009 um 1h wurden bei EURUSD im 1H Chart alle im Programmcode gestellten Bedingungen für eine Kauforder erfüllt - aber nichts geschah. Im Backtesting dagegen wird der Trade ausgelöst.
Hier die Codezeile:
if ((Open[1]>High [2])&& (Close [1]>High [2])&& (Low [1]>= High [2]))
{
res=OrderSend(Symbol(),OP_BUY ...
Andererseits werden immer wieder Orders ausgelöst, obwohl keine der vorgegebenen Bedingungen erfüllt wurde.
Es scheint, als ob die O-H-L-C Kurse die das Programm im Live-Trading 'sieht', sich von den gleichzeitig im Chart dargestellten Kursen unterscheiden. Liegt dies am Broker oder ist die Programmiersprache MQL des Metatraders fehrerhaft ? Oder werden im Live-Trading als input slippage oder spread mit einbezogen? Kann mir einer einen Tip geben, gibt es Abhilfe?
Auch scheint die Funktion 'ObjectGetValueByShift', welche den weiteren Verlauf einer mit zwei Punkten vorgegebenen Trendlinie berechnet, recht ungenau. Trades werden manchmal selbst im Backtesting so ausgelöst, als ob der Metatrader etwas anderes 'sieht' als im Chart dargestellt.
Hallo,
seit ein paar Monaten beschäftige ich mich mit dem Programmieren eines EA.
Dass die Resultate von Backtesting und Live-Trading sich unterscheiden war mir schon vorher bekannt. Doch dass selbst simple Bedingungen, welche im Programm eine Order auslösen sollten im Live-Trading 'übersehen' werden, konnte ich mir vorher nicht vorstellen. So sollte z. B. nach einem Gap eine Kauf- bzw. Verkaufsorder ausgelöst werden. Am 14.1. 2009 um 1h wurden bei EURUSD im 1H Chart alle im Programmcode gestellten Bedingungen für eine Kauforder erfüllt - aber nichts geschah. Im Backtesting dagegen wird der Trade ausgelöst.
Hier die Codezeile:
if ((Open[1]>High [2])&& (Close [1]>High [2])&& (Low [1]>= High [2])) { res=OrderSend(Symbol(),OP_BUY ...Andererseits werden immer wieder Orders ausgelöst, obwohl keine der vorgegebenen Bedingungen erfüllt wurde.
Es scheint, als ob die O-H-L-C Kurse die das Programm im Live-Trading 'sieht', sich von den gleichzeitig im Chart dargestellten Kursen unterscheiden. Liegt dies am Broker oder ist die Programmiersprache MQL des Metatraders fehrerhaft ? Oder werden im Live-Trading als input slippage oder spread mit einbezogen? Kann mir einer einen Tip geben, gibt es Abhilfe?
Auch scheint die Funktion 'ObjectGetValueByShift', welche den weiteren Verlauf einer mit zwei Punkten vorgegebenen Trendlinie berechnet, recht ungenau. Trades werden manchmal selbst im Backtesting so ausgelöst, als ob der Metatrader etwas anderes 'sieht' als im Chart dargestellt.
Sind dies unter Codern bekannte Probleme?
Saludos
Heiko