Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Backtest, live-Konto und requotes

Geschrieben

Tach zusammen!

 

Bisher lasse ich meine EAs nur über Backtests prüfen. Bald kommt jedoch die Zeit, live zu gehen. Und da stellen sich mir folgende Fragen:

 

1. Ich handele gerne Ausbrücke und daher sind einzelne Ticks relevant. Wenn der Strategietester von Tick-Modellierungsqualität spricht, steht im Bericht momentan 90%. Wie gut sind denn 90%?

 

2. Wie häufig kommen bei euch reqoutes in der Praxis vor? Sollte bzw. muss ich die im Programmquote selber bearbeiten?

 

3. Welche Erfahrung habt ihr gemacht, nachdem euer EA im Backtest gut lief und erstmalig live gesetzt wurde?

 

Falls einzelne oder alle Fragen schon einmal hier im Forum beantwortet wurden, bitte ich dies zu entschuldigen. Die Suchfunktion ist bei mir deaktiviert (weil ich wohl weniger als 10 Posts habe).

 

Ansonsten: frohe Ostern!

Featured Replies

Geschrieben

Hallo RAiNWORM,

 

Du solltest in deinem Live-account nochmals einen backtest durchführen und die Ergebnisse vergleichen.

 

Bei Alpari bekommt man im Moment im Demo-Account traumhafte spreads (z.b. EUR/NZD 5-6 pips) im Live-Account sind dann die normalen spreads angesagt (EUR/NZD 12-16 pips).

 

Im Demo erhälst Du die tollsten Ergebnisse für den Backtest,während Dich beim livetraden die Wahrheit dann wieder auf den Boden zurückbringt.

 

Auf jeden Fall solltest Du deinen EA ausgiebig forward testen.Je nach Strategie besonders zu wichtigen News,bei denen der spread meist kräftig vergrössert wird.

 

aiti :blink:

Geschrieben

zu 2.

Bei der Orderabgabe gibst du dem Broker auch eine Pipsabweichung (Slippage) welchen du bereit bist zu akzeptieren. Ist der tatsächliche Preis innerhalb dieser Abweichung so öffnet dein Broker ohne weitere Rückfragen eine Position. Der Übersichtshalber würde ich es aber per Print Befehl im Log mit eintragen welchen Preis von dir gewollt wurde und welchen Preis der Broker tatsächlich genommen hat.

Ist die Abweichung zu groß so kommt es zu diesen Requotes.

Also ob du jetzt ein "Requotes" bekommst hängt von deinem erlaubten Slippage ab.

Da du bereits erwähnt hast dass du Ausbrüche tradest bist du ja in schnellen Marktbewegungen unterwegs und da wirst du wahrscheinlich min. 7 von 10 einen anderen Preis erhalten.

 

zu 1.

90% reicht IMHO aus.

 

zu 3.

Viele machen am Anfang "curve fitting" und du kannst davon ausgehen das bei 50 die im Backtesting oberflächlich gut aussehen nur einer im live was taugt. Mit der Zeit bekommst du dann auch mit auf was du extra noch achten solltest um den Backtest besser zu bewerten. DD, Felder mit guten Ergebnisse um Ausreisser zu filtern, Zeitraum, Spreadsunterschied usw.

Nur mal um einen Daumenwert zu haben. Pro 1000 EAs die man (ich) codet ist gerade mal ein brauchbarer dabei.

Je nach deiner Definition von brauchbar. Dies verkürzt sich natürlich mit deinem Skills mit der Zeit. Später wird man dann die guten EAs immer nur weiterentwickeln und seinen eigenen Stil finden den man bevorzugen. Bis dahin hat man aber ne gute Bibliothek zusammen um andere Ideen schnellstens auszuprobieren.

Geschrieben
Falls einzelne oder alle Fragen schon einmal hier im Forum beantwortet wurden, bitte ich dies zu entschuldigen. Die Suchfunktion ist bei mir deaktiviert (weil ich wohl weniger als 10 Posts habe).

 

RE: Suchfunktion

 

also, geht absolut in Ordnung. Es besteht kein Grund für Entschuldigungen.

 

Ansonsten: frohe Ostern!

 

 

Dir auch RAiNWORM!

Geschrieben
  • Autor

Danke für die schnellen Antworten, aiti und siscop!

 

Zu meiner Frage 1:

Im Forum habe ich gerade einen Thread gefunden, in dem Henrik auf die Seite http://ratedata.gaincapital.com/ mit historischen Kursdaten (Tick) verwies. Ich werde diese mal (zumindest für 2010) importieren und vergleichen, was 90% und 99% für einen Unterschied im Endeffekt ausmachen. Ich denke, wie auch siscop, dass 90% reichen sollten. Kommt wahrscheinlich auf die Volatilität zum entsprechenden Zeitpunkt an. Falls ich was über den Unterschied zwischen 90% und 99% herausfinde, werde ich es hier verlauten lassen. EDIT: Der MT4 speichert als kleinste Zeiteinheit nur M1-Daten...

 

Meine EAs gehen ab einem gewissen Spread keine neuen Orders ein, dadurch schließe ich wahrscheinlich News-Zeiten aus, aber das finde ich auch gut so. Da sind die Bewegungen zu heftig und entsprechen nicht meiner (momentanen) Handelsweise.

 

Pro 1000 EAs die man (ich) codet ist gerade mal ein brauchbarer dabei.

Na dann hab ich ja noch einiges vor :blink: Derzeit schaue ich auf den DD, ich suche was (relativ) Konstantes. Inkonsequentes Handeln schaffe ich auch ohne Automatisierung :laugh:

Bearbeitet von RAiNWORM

Geschrieben

Zum Backtesten steht in der Knowledge-Base etwas:

 

ic.arrow.right.png Strategietester mit 90 % Modellierungsqualität I -- Backtest für lange Vergangenheitszeiten

 

ic.arrow.right.png Strategietester mit 90 % Modellierungsqualität II -- Backtest für kurze Vergangenheitszeiten

 

 

Auf jeden Fall solltest du wissen, dass selbst wenn man einen Zeitraum live gehandelt hat der anschließende Backtest für diesen Zeitraum anders ausfällt.

Man bekommt mit der Zeit ein Gefühl dafür, wie siscop schon sagte.

Geschrieben
Ist der tatsächliche Preis innerhalb dieser Abweichung so öffnet dein Broker ohne weitere Rückfragen eine Position.

Stimmt so leider nicht ganz. Riesiger Slippage schützt auch nicht vor Requotes:

If the requested open price is fully out of date, the error 138 (ERR_REQUOTE) will be generated independently on the slippage parameter. If the requested price is out of date, but present in the thread, the position will be opened at the current price and only if the current price lies within the range of price+-slippage.

 

Du solltest auf alle Fälle im EA Fehler in der Orderausführung korrekt verarbeiten. also ggf neu versuchen, denn ein requote ist nicht immer negativ.

Geschrieben

Mythos da liest jemand was ich schreibe :blink:

 

Bin aber auch ehr in die andere Richtung gegangen...

Wenn statt der üblichen 3 nur eine 1 reinschreibe als erlaubte slippage bekomme ich aber auch ein 138 requote.

In deine Richtung bin ich noch nie gegangen. Wer tut schon sowas :laugh:

Würde mich aber trotzdem mal interessieren ab welchen pip ein requote kommt obwohl es innerhalb der slippage ist.

Geschrieben
In deine Richtung bin ich noch nie gegangen. Wer tut schon sowas :blink:

Würde mich aber trotzdem mal interessieren ab welchen pip ein requote kommt obwohl es innerhalb der slippage ist.

 

Ich bin auch noch nie in die Richtung gegangen. Aber meine bisherigen Livetests haben im alltäglichen Gebrauch mit 3 Pip Slippage unmengen an Requotes produziert, sehr oft innerhalb der 3 Pips Toleranz. Also dieses "fully out of date" ist ziemlich schwammig formuliert und dementsprechend auch umgesetzt...

Geschrieben
alltäglichen Gebrauch mit 3 Pip Slippage unmengen an Requotes produziert, sehr oft innerhalb der 3 Pips Toleranz.

Damit ich es richtig verstehe. Du hast die normalen 3 pips slippage eingetragen und der Broker hat dir ein requote (Order nicht ausgeführt) gegeben der von deinem Kurs nicht mal 3 pips abweicht also innerhalb der Slippage liegt?

Ich hatte ja schon viel aber so einen "Broker" nun wirklich nicht...

 

Wir sollten mal eine "interne" Liste von solchen Broker führen.

El cheffe... wie wäre es mal mit 2 Listen.

Nach aussen die normale Brokerliste und ab einen bestimmten ForenLvl eine internen NOGO Brokerliste. Wenn möglich nur ausländische Broker damit wir nicht verklagt werden :blink:

Geschrieben
Ich befürchte nur, dass abgesehen von den 'echten' ECN's am Ende nicht viele auf der einen Liste stehen werden :blink:

 

LOL

 

 

 

Mythos, wann kommst du eigentlich auf die helle Seite? Wir haben zwar keine Schokokekse, aber dafür auch keine Requotes!

Geschrieben
Mythos, wann kommst du eigentlich auf die helle Seite? Wir haben zwar keine Schokokekse, aber dafür auch keine Requotes!

Naja es war ja keine "echte" Strategie, sondern der RobinHood, der braucht "böse" Broker ;) Könnts euch eh denken welche Broker da böse waren... Ich sag mal so: Centbroker ;)

  • 2 Monate später...
Geschrieben

Um nochmal auf das Thema zukommen wegen ReQuotes...

 

Wie kann ich den EA so programmieren, dass er eine erneute Order sendet oder abwartet, bis eine eventuelle Bestätigung der Order vorliegt?!

 

Kann ich da eine SleepFunktion nach der OrderSend() einbauen? Oder wie gehe ich da am Besten vor?

 

lg NC

Geschrieben
Wie kann ich den EA so programmieren, dass er eine erneute Order sendet oder abwartet, bis eine eventuelle Bestätigung der Order vorliegt?!

 

Also warten tut er auf alle Fälle. Die OrderSend gibt dir ja als Rückgabewert entweder das OrderTicket (wenns geklappt hat) oder -1 wenns ein Problem gab. Sprich in der nächsten Zeile im Code, weißt du genau ob die Order durchgegangen ist oder nicht. Wenn nicht musst dann einfach nur bei Bedarf nochmal probieren ;)

Geschrieben

Bin bei dem Problem jetzt schon eine Ecke weiter.

Jetzt habe ich natürlich noch kurz eine Frage.

In der Beschreibung von "bool RefreshRates( )" im Editor steht:

int ticket;
  while(true)
    {
     ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,CLR_NONE);
     if(ticket<=0)
       {
        int error=GetLastError();
        //---- not enough money
        if(error==134) break;
        //---- 10 seconds wait
        Sleep(10000);
        //---- refresh price data
        RefreshRates();
        break;
       }
     ...

Auf was bezieht sich die Schleifenbedingung "true" im Kopf der "While"-Schleife?!

Er führt also die Schleife solange aus, wie eine bestimmte Bool-Funktion auf "true" steht. Jetzt ist die Frage:

Welche? :shocked:

 

lg NC

Bearbeitet von Evanescence
mql code tag funktioniert im moment noch nicht,

Geschrieben

Eine While(true)-Schleife setzt man dann ein, wenn man die Schleife nicht über die Bedingung von While abbrechen will, sondern über ein break im folgenden Code.

 

Wichtig ist, was nach den Punkten in deiner Code-Box kommt, denn da gibt's ein "else" mit einem "break".

D.h. die While-Schleife wird auf alle Fälle nach dem ersten Durchlauf über ein break verlassen.

Mir erschliesst sich ehrlich gesagt auch nicht so recht, wofür das While hier überhaupt gut ist :shocked:

Geschrieben

Könnte ich das auch in etwa so schreiben?

void CheckForOpen() 
 {
  int res;
  if(prevtime == Time[0])return;
  if(Trade_Time_1()==false)return;
//---------
  if(Entry_LONG())
     {
      while(true)
        {
         res=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,0,0,ExpertenName+" long",MagicNumber,0,White);
         prevtime = Time[0];
         if(res<=0)
           {
            int error=GetLastError();
            Print("Fehler(",error,"): ",ErrorDescription(error));
            if(error==136 || error==138)
              {
               Sleep(5000);
               RefreshRates();
               continue;
              }
            else break;
           }
         else
           {
            OrderSelect(res,SELECT_BY_TICKET);
            OrderPrint();
            break;
           }
         ...

Mir geht es hier hauptsächlich um das "Continue" und das "else break". Ist diese Aktion sinnlos oder eher sinnvoll?

 

lg NC

Geschrieben

Könnte ich das auch in etwa so schreiben?

Das sollte so funktionieren.

Du springst so bei Fehler 136 und 138 nach einer Wartezeit zurück zum While und versuchst erneut die Order abzusetzten. Verlassen tust du die Schleife nur, wenn kein Fehler 136/138 auftritt.

So orderst du halt jeweils immer zum Ask-Preis, d.h. egal wie sich der Kurs während der Requotes entwickelt wirst du die Order immer ausführen, wie auch immer sich der Preis während der Wartezeit entwickelt hat...

Geschrieben

Leider gab's hier keine anderen Rückmeldungen.

 

Mich würd jetzt trotzdem interessieren, wie andere mit ihren EAs auf Requotes reagieren.

Ich hab das momentan so umgesetzt, dass sich der Einstieg beim nächsten Tick nochmal neu qualifizieren muss (was er in der Regel ja auch macht), es gibt aber auch noch andere Möglichkeiten

  • In einer Schleife die Order so lange absetzten bis sie ein gültiges Ticket zurückliefert (so wie das im Code von NC umgesetzt ist), evtl. erweitert um einen timeout
  • Bei einer best. Differenz des Requotes/der Slippage die Order löschen
  • ...???

Ist meiner Meinung auch von der Strategie abhängig. Beim Handeln kurzfristiger Ausbrüche wird man wohl anders reagieren, als wenn man den Trend handelt.

Wär interessant zu erfahren, welche Meinungen es hierzu gibt :nictation:

Geschrieben

Leider gab's hier keine anderen Rückmeldungen.

 

Hi, so hab ich das in meinen ShortCut-Scripten gelöst:

 

// RUNCONTROL ###########################################################################################
bool sc_multi(string order,double volume,double slippage,double stoploss,double takeprofit,int retries,
		  bool autoClose,bool ts5=false){
// Inputs: ----------------------------------------------------------------------------------------------
// Variables: -------------------------------------------------------------------------------------------
bool	result		=false;
int		time		=0;
// Run: -------------------------------------------------------------------------------------------------
if(code()){
	if(-GlobalVariableGet("maxDrawdown")<=GlobalVariableGet("z_profitTotal")){
		if(GlobalVariableGet("maxLots")>=volume){
			time=(TimeHour(TimeCurrent())*100)+(TimeMinute(TimeCurrent()));
			if((time<GlobalVariableGet("wZahlen1")-5 || time>GlobalVariableGet("wZahlen1"))
			 &&(time<GlobalVariableGet("wZahlen2")-5 || time>GlobalVariableGet("wZahlen2"))
			 &&(time<GlobalVariableGet("wZahlen3")-5 || time>GlobalVariableGet("wZahlen3"))
			 &&(time<GlobalVariableGet("wZahlen4")-5 || time>GlobalVariableGet("wZahlen4"))
			 &&(time<GlobalVariableGet("wZahlen5")-5 || time>GlobalVariableGet("wZahlen5"))
			 &&(time<GlobalVariableGet("wZahlen6")-5 || time>GlobalVariableGet("wZahlen6"))
			 &&(time<GlobalVariableGet("wZahlen7")-5 || time>GlobalVariableGet("wZahlen7"))
			 &&(time<GlobalVariableGet("wZahlen8")-5 || time>GlobalVariableGet("wZahlen8"))){
				GlobalVariableSet("z_sl",stoploss+Ask-Bid);
				while((result==false)&&(retries>0)){
					result=sc_multiExec(order,volume,slippage,stoploss,takeprofit,retries,autoClose,ts5);
					retries--;
					Sleep(100);
					}
				return(result);
				}else Alert("Error: WZahlen");return(false);
			}else Alert("Error: PositionSize");return(false);
		}else Alert("Error: maxDrawdown");return(false);
	}else Alert("Error: mCode");return(false);
}
// EXECUTION ############################################################################################
bool sc_multiExec(string order,double volume,double slippage,double stoploss,double takeprofit,
			  int retries,bool autoClose,bool ts5){
[... AUSFÜHRUNG ...]
return(true);
}

 

So hat man im RealAccount immer ne Ausgführung, hab allerdings die Slippage auf 100 Punkte und Retries auf 10 Wiederholungen.

Geschrieben
  • Autor

Mich würd jetzt trotzdem interessieren, wie andere mit ihren EAs auf Requotes reagieren.

 

Für das OrderSend wird ja bereits eine Slippage angegeben. Diese nutze ich im Falle eines Reqoute-Errors, um in einer Schleife bis zu 3x erneut (inkl. RefreshRates) eine Order abzusetzen, solange diese Slippage noch mit dem aktuellen Bid/Ask vereinbar ist.

 

Ich denke es hängt wirklich - wie du schon sagst - von der Strategie ab. Je länger die geplante/voraussichtliche Haltedauer des Trades ist, desto unwichtiger wird die Slippage (solange sie natürlich im Rahmen bleibt). Bei News-Trading (falls da ein EA reinrutscht) hüpfen die Ticks eh nur wild durch die Gegend :nictation:

 

Slippage-Probleme habe ich bei den Standard-Währungspaaren (so gut wie) nie. Bei CFDs schon häufiger.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.