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.
Geschrieben

//+------------------------------------------------------------------+

//|                                                      Zahn EA.mq4 |

//|                                      Copyright 2014, Zahnstocher |

//|                                          [url="http://www.tom-next.com"]http://www.tom-next.com[/url] |

//+------------------------------------------------------------------+

#property copyright "Copyright 2014, Zahnstocher"

#property link      "[url="http://www.tom-next.com"]http://www.tom-next.com[/url]"

#include 







//--- input parameters

extern double TakeProfit=450.0;

extern double Lots=0.01;

extern double TrailingStop=150.0;





//+------------------------------------------------------------------+

//| expert initialization function                                   |

//+------------------------------------------------------------------+

int init()

  {

//----



//----

   return(0);

  }

//+------------------------------------------------------------------+

//| expert deinitialization function                                 |

//+------------------------------------------------------------------+

int deinit()

  {

//----

   

//----

   return(0);

  }



int Crossed1 (double line1 , double line2)

   {

  static int last_direction = 0;

  static int current_direction = 0;  

 

  if(line1>line2)current_direction = 1; // also buy

  if(line1  

  if(current_direction != last_direction)

  //changed

  {

         last_direction = current_direction;

         return (last_direction);

      }

      else

      {

      return (0);

   }

 }

//+------------------------------------------------------------------+

//| expert start function                                            |

//+------------------------------------------------------------------+

int start()

  {

//----

   int cnt, ticket, total;

   double RSIOMA1, RSIOMA2;   

   

   if(Bars<300)

    {

      Print("bars less than 300");

      return(0);

     }

   if(TakeProfit<10)

    {

      Print("TakeProfit less than 10");

      return(0); // check Takeprofit)

   }

   

   RSIOMA1= iCustom(NULL,0,"RSIZAHNOMAII",14,0,0);

   RSIOMA2= iCustom(NULL,0,"RSIZAHNOMAII",72,0,0);

    

   int isCrossed = Crossed1 (RSIOMA1,RSIOMA2);

   

   total = OrdersTotal();

   if(total < 1)

     {

      if(isCrossed == 1)

         {

   

   ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"My EA", 12345,0,Green);

         if(ticket>0)

          {

          if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

            Print("BUY order opened : ",OrderOpenPrice());

          }

          else Print("Error opening BUY Order : ",GetLastError());

          return(0);

          }

          if(isCrossed == 2)

            {

               ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red);

               if(ticket>0)

               {

              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

          Print("Sell order opened : ",OrderOpenPrice());

          }

          else Print("Error opening Sell Order : ",GetLastError());

          return(0);

          }

          return(0);

      }

      for(cnt=0;cnt

 
Als Basis hab ich den Coders Guru EA mit den Moving Averages hergenommen.

 

 

 

Heute Abend hab ich meinen gestern bearbeiten Custom Indicator eingefügt und den Code angepasst damit der mit 2 RSIOMA Kurven Arbeitet, siehe hier:

 

 

 

int cnt, ticket, total;

   double RSIOMA1, RSIOMA2;   

   

   if(Bars<300)

    {

      Print("bars less than 300");

      return(0);

     }

   if(TakeProfit<10)

    {

      Print("TakeProfit less than 10");

      return(0); // check Takeprofit)

   }

   

   RSIOMA1= iCustom(NULL,0,"RSIZAHNOMAII",14,0,0);

   RSIOMA2= iCustom(NULL,0,"RSIZAHNOMAII",72,0,0);

    

   int isCrossed = Crossed1 (RSIOMA1,RSIOMA2);

 

Die Logic ist die gleiche wie bei Coders Guru und natürlich weit weg von Profitabel, es ist auch noch nicht die Logic die ich später verwenden will, aber irgendwie muss man ja anfangen :)

 

Als nächstes möchte ich einen Candle Range Filter hinzufügen damit der EA nicht in z.B. einer 20pip Range zu Traden beginnt.

 

Aber keine Angst es werden viele Fragen folgen...

 

Grüße Zahnstocher*trailingstop)

;cnt++)

)current_direction>

post-4614-0-01127700-1391460482_thumb.png

post-4614-0-48744100-1391460493_thumb.png

  • Antworten 70
  • Aufrufe 8,6Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Most Popular Posts

  • Die Funktionen init() und deinit() sind dafür uninteresannt.   Die Funktion init() wird nur 1x aufgerufen, wenn man den EA in das Chartfenster läd. Die Funktion deinit() wird nur 1x aufgerufen,

  • Hi,   ich schau mir gerade den EA an und schreib einfach mal was mir auffällt. Zuerst mal was "kosmetisches": Das ist zugegebenermaßen großteils Geschmackssache, aber manche Dinge erhöhen die Fehleran

  • hier ist noch der Backtest mit 1.2pip spread! long / short separat.   TF 15min aufgrund der verwendeten Stochastic von 15min und 60min für den Exit.   Viel Spass beim testen und so hoffe ich beim opti

Veröffentlichte Bilder

Featured Replies

Geschrieben
  • Autor

Bin grad am Testen, Tradefrequenz ist deutlich verringert, kein Trade mehr in Rangephasen hab als minimum 15pips in den vergangenen 30min.

definiert.

 

Bzgl. Exit werd ich das auch noch testen in Richtung

 

Exit

if (Candlerang < Anforderung)

 

da nach einer langen Rangephase der Breakout eher ein Münzwurf ist.

 

Fix ist jedoch das die Bilder die ich im ersten Post gemacht habe mit gewünschten Entry und Exit im EA Betrieb nicht profitabel sind *leider*

Da ist RSIOMA nicht der geeignete Entry trigger, aber als Trendindicator wird zumindest 1 RSIOMA weiterverwendet.

Trade Entry peile ich im 1-5min Chart an - hab schon überlegt das ich die Stundenschlusskurse in den Entry miteinbeziehe.

 

ist noch ein langer weg aber eure Tips bringen mich wirklich weiter :)

Bearbeitet von Zahnstocher

Geschrieben
  • Autor

Also in dem Code den du gepostet hast ist es definitiv unnötig. Aber ich vermute der Code hat früher viel mehr getan wo es womöglich nötig war ;)

 

Bin schon gespannt wie der EA mit den ganzen Änderungen aussieht.

 

puh schwankend aber je nach spread zw. mangelhaft oder gut

initial Risk mit 8% - bei 1-2% bleiben die Schwankungen im Rahmen. da muss noch mehr gehen!

SL, TS, TP sind wählbar.

 

der Unterschied zw. 0.9pip und 30pip ist gewaltig.

 

Was definitiv auch noch mit rein kommt ist ein maximum Spread...

post-4614-0-09219700-1392081779_thumb.png

post-4614-0-47526600-1392081808_thumb.png

Geschrieben

 

Das wäre ""mein"" Candlerangedetector (herausgeklaubt aus der Liquidex EA wie auch das MM), zur Überprüfung ob er wunschgemäß arbeitet sollte er je nach Erfüllung der Anforderungen eine Meldung ausgeben.

 

Wenn man am Header schaut sieht man überall den Verweis auf mql5?!? Ist der neue Editor der in MT4 Build600 integriert ist? Verwirrt mich ein wenig!

 

Als nächstes möchte ich ihn in den bestehenden EA integrieren.

 

Hab Überlegt ev. die iHigh und iLow Periode noch als extern int variable zu definieren um das Optimieren anschließend leichter zu machen.

 

Visuell im Backtest verliert der Roboter am meisten in kleinen ranges viele trades und viele losses.

 

Dann mach ich mich gleich über den one trade per Bar Code danke für all eure Vorschläge und die großartige Unterstützung!

 

Ich bin jetzt zu Faul den Code vom Candlerangedetector durchzusehen.

Könnte jemand mal kurz Erläutern wie der Candlerangedetector die Range erkennt ?

Geschrieben
  • Autor


Der von Mythos vorgeschlagene Code ist nun auch implementiert!

Diverse sachen noch an den Entryregeln gemacht, mit dem Exit bin ich ehrlich gesagt nicht zufrieden, da möchte ich noch

so manches ändern!

 

Was funktioniert jetzt eigentlich?

Candlerange check

TP check

SL check

TS check

Entrylogic check (die ist ziemlich eng formuliert daher auch nur 70Handel in 13Monaten)

Ein Trade per Bar check

MM check

 

Exitlogik naja noch nicht so ganz da schlaf ich nochmal eine Nacht drüber :)

Magic Number bekommt noch eine externe Eingabe..

Maximum Spread kommt auch noch dann kann ich zumindest beim öffnen ein paar pippettes rausholen.


Anbei die Backtests, Optimiert ist er noch nicht das ist mit meiner Rechnerleistung äusserst mühsam.

 

Was sagt ihr? 50% im jahr bei 2% initial Risk kann man schon lassen oder?

 

11-02-14CR_MM_RSI_STO_SL_BT_V1.mq4

post-4614-0-18570600-1392143352_thumb.png

post-4614-0-06081600-1392143359_thumb.png

Bearbeitet von Zahnstocher

Geschrieben
  • Autor

ganz simpel...

 

double high = iHigh(NULL,Candlerangeperiod,1);
double low = iLow(NULL,Candlerangeperiod,1);

Range = high - low;

 

 

Ich bin jetzt zu Faul den Code vom Candlerangedetector durchzusehen.

Könnte jemand mal kurz Erläutern wie der Candlerangedetector die Range erkennt ?

Geschrieben

ganz simpel...

 

double high = iHigh(NULL,Candlerangeperiod,1);

double low = iLow(NULL,Candlerangeperiod,1);

 

Range = high - low;

 

Nur um sicher zu gehen: Du bestimmst damit die Range der letzten abgeschlossenen Kerze in der gewählten Zeiteinheit und nicht etwa die Range über mehrere Kerzen in der aktuellen Zeiteinheit. Ist es das, was es machen soll?

Geschrieben
  • Autor

so wars gedacht, es sollte nur kein Trade z.B. in der Asia Session oder späten US Session getriggert werden ausser

es ist zu dieser Zeit Volatilität im Markt.

 

M.E. ein Vorteil gegenüber Zeitvorgaben. Aber auch ein Punkt wo man sicher noch optimieren kann.

Geschrieben
  • Autor

Sodale, ich sag mal eine neue "Zwischenstufe" ist wieder fertig geworden.

 

Hier getestet mit 1% initial Risk, long only und short only bei einem Spread von 3.0pip

 

Der EA hat nun auch eine Spread Begrenzung, Magicnumber und Tradecomment über externe Eingabe erhalten.

 

 

post-4614-0-49033000-1392491558_thumb.png

post-4614-0-44661500-1392491569_thumb.png

Geschrieben
  • Autor

hier ist noch der Backtest mit 1.2pip spread! long / short separat.

 

TF 15min aufgrund der verwendeten Stochastic von 15min und 60min für den Exit.

 

Viel Spass beim testen und so hoffe ich beim optimieren, das hab ich noch weniger drauf als das Programmieren :)

 

Edit: alles mit 1%initial Risk also 0.02lot bei Hebel 500 und 400€

post-4614-0-12174100-1392494580_thumb.png

post-4614-0-93449700-1392494592_thumb.png

Zahnstocher_Tomnext.mq4

RSIZAHNOMAII.mq4

Bearbeitet von Zahnstocher

Geschrieben

Hi,

hab mir kurz den EA durchgeschaut und mir ist was ganz schlimmes aufgefallen:



 if(Volume[0]>1)
      //{
      //Print("No Trade recommend");
      //return(0);
      //}
      
  risk = Risk / 100;   

Da du die geschwungenen Klammern auch auskommentiert hast, zählt die nächste Zeile im Code als teil des if. Sprich "risk= Risk/100" wird nur ausgeführt wenn Volume[0] > 1. Wirkt sich in dem Fall nicht schlimm aus, weil die Zeile eh nur 1 mal ausgeführt werden soll/muss und damit auch ins init passen würde. Aber der Verständnisfehler dahinter kann zu richtig blöden Problemen führen. Deswegen immer darauf achten das nach einem if geschwungene Klammern da sind, dann passiert sowas nicht.

Die anderen Empfehlungen bzgl. Reihenfolge beim durchlaufen der Orders und "nicht beenden nach der ersten gefundenen Order" hast du erstmal ignoriert oder?

Und da du viel von der Logik gewechselt hast. Wir haben vor langer Zeit mal die EA-Kitchen gestartet. Da findest du ein Framework das die ganzen "technischen" Dinge übernimmt und du nur mehr Einstiegs und Exitlogik implementieren musst. Das kannst du entweder direkt zum experimentieren verwenden, bzw. findest du dort ggf. sicher einige Denkanstöße auf was in einem stabilen (aus technischer Sicht) EA geachtet werden sollte.

hth

Geschrieben

Viel Spass beim testen und so hoffe ich beim optimieren, das hab ich noch weniger drauf als das Programmieren :)

 

Ich schau mal was ich tun kann wink.gif.

 

Backtest 2001-2014:

Zahnstocher.gif

 

Geschrieben
  • Autor

Hi,

 

hab mir kurz den EA durchgeschaut und mir ist was ganz schlimmes aufgefallen:

 



 if(Volume[0]>1)
      //{
      //Print("No Trade recommend");
      //return(0);
      //}
      
  risk = Risk / 100;   

Da du die geschwungenen Klammern auch auskommentiert hast, zählt die nächste Zeile im Code als teil des if. Sprich "risk= Risk/100" wird nur ausgeführt wenn Volume[0] > 1. Wirkt sich in dem Fall nicht schlimm aus, weil die Zeile eh nur 1 mal ausgeführt werden soll/muss und damit auch ins init passen würde. Aber der Verständnisfehler dahinter kann zu richtig blöden Problemen führen. Deswegen immer darauf achten das nach einem if geschwungene Klammern da sind, dann passiert sowas nicht.

 

Die anderen Empfehlungen bzgl. Reihenfolge beim durchlaufen der Orders und "nicht beenden nach der ersten gefundenen Order" hast du erstmal ignoriert oder?

...

Danke für den Hinweis ist schon bereinigt - war noch ein Überbleibsel mittlerweile ist ja Bartrade auch im EA enthalten,

 

Ähm Empfelungen bzgl. der Reihenfolge? Ich schau mir deinen Beitrag nochmal durch war glaub ich Seite 1 oder 2.

Geschrieben
  • Autor

Ich schau mal was ich tun kann wink.gif.

 

Backtest 2001-2014:

attachicon.gifZahnstocher.gif

 

das ist schauderhaft :(

 

Die Parameter waren die gleichen wie bei meinen Backtests?

 

ich hab auch grad nochmal einen Backtest laufen lassen.

 

Long only seit september 2010, mehr schafft mein Rechner einfach nicht. Short kommt dann in einer Stunde oder so :)

post-4614-0-40428900-1392573428_thumb.png

Bearbeitet von Zahnstocher

Geschrieben
  • Autor

hier ist dann noch short only, jetzt wird es mir klar...

 

short ist alles andere als Profitabel in dem Zeitraum, der erste Backtest ist nur in einen Bereich gefallen wo der EA halt zufällig gewinn sowohl long als auch Short gemacht hat.

 

Tja was nun von vorn anfangen oder schauen wo es noch möglichkeiten zum optimieren gibt?

post-4614-0-36337200-1392575485_thumb.png

Geschrieben

Aus meiner Sicht gibts immer 2 wichtige Punkte:

- Tut der EA was er soll?

- Passt die Logik?

 

Punkt 2 vor Punkt 1 überprüfen macht wenig Sinn weil man seine Analysen möglicherweise auf Ergebnisse stützt die durch zufälliges Fehlverhalten passieren.

Geschrieben

Die Parameter waren die gleichen wie bei meinen Backtests?

 

Keine Ahnung - habe einfach die genommen, die im EA eingestellt waren. Falls Du andere hast, speichere das mal als Set ab und stelle es hier bereit.

Geschrieben
  • Autor

@Mythos,

 

rein vom Regelwerk her macht der EA das was er soll zumindest wenn ich nach dem Backtest die Indikatoren kontrolliere.

Die Logic naja den Exit möchte ich mir noch genauer ansehen das ist alles zu schwammig.

 

@Conglom-o,

 

danke für dein Angebot mit Skype, hab zwar meinen Account wieder aktiviert aber Skype kann ich (bisher) noch nicht installieren, gibt einen Kernelfehler aus. Werd das dann später am anderen Rechner noch mal prüfen.

 

Das Setfile hab ich hochgeladen, da ich keine .set files über die Software hochladen darf hab ich die Extension auf .mq4 geändert,

 

Dankeschön!

zahnstocher.mq4

Geschrieben
  • Autor

Ich warte noch auf den Backtest bevor ich dran was ändere! (keine Eile! Wenns leicht geht)

 

Paralell hab ich einen weiteren EA gebaut mit ähnlichem Prinzip. Mache dazu einen neuen Tread auf sonst wird das Zu unübersichtlich.

Bearbeitet von Zahnstocher

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.