EA Problem mit Hammererkennung
Seite 1 von 572 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: EA Problem mit Hammererkennung

  1. #1
    Ich hoffe jemand kann bei diesem Problem helfen. Ich bin ein sehr neuer Programmierer und versuche, die Logik zu erstellen, die einen Hammer oder einen umgekehrten Hammer erkennt. Sobald es sie zu meiner Zufriedenheit erkennt, werde ich weiterhin den EA für Bestellungen und dergleichen erstellen.

    Der Code soll alle Kerzen markieren, bei denen Schluss = Hoch oder Schluss = Tief ist. Es markiert einige, andere nicht. Jede Hilfe wäre sehr willkommen.

    Sieht der Computer mehr Ziffern im Preis als wir. Zum Beispiel sehen wir 1,44551 sowohl beim Schluss als auch beim Hoch; sieht der Computer möglicherweise 1.445519?


    Zitat Zitat von ;
    #property copyright VMesquita
    #property indior_chart_window/ein Indior wird im Hauptfenster des Charts gezeichnet
    #property indior_buffers 1
    int-Grenze;
    int init ()
    {
    //----
    Rückgabe (0);
    }
    int deinit()
    {
    Rückgabe (0);
    }
    int start()
    {
    doppelt O,C,H,L,O1,C1,H1,L1,O2,C2,H2,L2;
    Zeichenfolgentext;
    int counted_bars=IndiorCounted();
    limit=Bars-counted_bars;
    //---- auf mögliche Fehler prüfen
    if(counted_barslt;0) {
    Alarm (keine Balken ..);
    zurück (-1);
    }
    //---- der zuletzt gezählte Balken wird neu gezählt
    for(int i=1; ilt;limit; i ) {
    TO=Öffnen(NULL,0,i);
    C=iClose(NULL,0,i);
    H=iHigh(NULL,0,i);
    L=iLow(NULL,0,i);

    O1=iOpen(NULL,0,i-1);
    C1=iSchließen(NULL,0,i-1);
    H1=iHigh(NULL,0,i-1);
    L1=iLow(NULL,0,i-1);
    O2=iOpen(NULL,0,i 1);
    C2=iSchließen(NULL,0,i 1);
    H2=iHigh(NULL,0,i 1);
    L2=iLow(NULL,0,i 1);


    text=;
    if(((H-L)gt;4*(O-C))((C-L)/(0.001 H-L)gt;=0.75)((O-L)/(0.001 H-L)gt;=0.75)) text=Hang;
    if(H==C)text=KAUFEN;
    if(C==L)text=VERKAUFEN;

    //Wenn wir eine spezielle Kerze gefunden haben, schreiben Sie in das Diagramm
    wenn(text!=)
    {
    ObjectCreate(DoubleToStr(i,0) label, OBJ_TEXT, 0, Time[i], H);
    ObjectSetText(DoubleToStr(i,0) label, text, 15, Arial, Blue);
    PlaySound(wait.wav);
    }
    }
    }
    Ursprüngliche Gutschrift an VMesquita für den Code ... Ich habe ihn sehr wenig geändert.

  2. #2
    Codemeister, ja, Sie haben den Code geliefert und ich danke Ihnen sehr für Ihre Zeit und Energie. Das Problem liegt bei mir und meiner Unfähigkeit, die Teile zu einem kohärenten Code zusammenzusetzen. Natürlich bin ich mir sicher, dass Sie die ganze Zeit hören, wie einfach es sein sollte, für dieses oder jenes zu programmieren. Ich werde zum Reißbrett zurückkehren, um zu verstehen, wie die Teile fließen müssen. Kennen Sie ein Buch usw., das klein anfängt und Ihnen nach und nach die Teile gibt, die Sie brauchen? Alles, was ich gesehen habe, macht einige Annahmen über Informationen, die dem Lernenden möglicherweise nicht bekannt sind. Ist C die Programmiersprache, die MQL am nächsten kommt?

  3. #3

    Zitat Zitat von ;
    Kudos an diejenigen, die sich selbst das Programmieren beigebracht haben! Ich kann nicht glauben, wie schwer das ist. Dies ist mein letzter Versuch, aber ich verstehe nicht, was genau ich schreibe.
    hey Max..... lass es nicht dein letzter Versuch sein..... und denk daran, dass viele in diesem Forum viele Jahre und/oder viele tausend Dollar an College-Geld ausgegeben haben, um zu lernen, was du versuchst um es in ein paar monaten selbst zu lernen....../--- wenn es ihr ziel ist, ein kerzenmuster zu identifizieren und Trades entsprechend zu platzieren, könnte es besser sein, die anforderungen einfach in das ea zu codieren.... es ist einfacher und sauberer...... nicht klar, was Ihre Definition eines Hammers und eines umgekehrten Hammers ist, also repräsentiert das folgende Beispiel ein bullisches Engulfing-Muster.....h Eingefügter Code bool bull() { if((Close #91;2#93;lt;Öffnen#91;2#93 (Öffnen#91;1#93;lt;Schließen#91;2#93 (Schließen#91;1#93;gt;Öffnen #91;2#93) return(true); sonst zurück (falsch); }/---/--- Sie können auch Ziffern verwenden, um unterschiedliche Symbole zu erfüllen.... Eingefügter Code NormalizeDouble(Close#91;1#93;,Digits);

  4. #4
    Zuallererst, wie ich Ihnen bereits sagte, können Sie Dinge nicht hartcodieren und erwarten, dass es funktioniert. Zum Beispiel haben Sie im NormalizeDouble()-Aufruf 5, was mit Yen-Paaren nicht funktioniert. Verwenden Sie stattdessen die vordefinierte Variable Digits. Ich habe diesen Code bereits bereitgestellt und er wurde nicht richtig verwendet. bool hammer = MathAbs(High[1] - Close[1]) lt; nps*Punkt; Der Rest des Codes ist für mich unverständlich. Sie müssen den Code beim Posten richtig einrücken und in Hash-Tags einfügen.

  5. #5
    Kudos an diejenigen, die sich selbst das Programmieren beigebracht haben! Ich kann nicht glauben, wie schwer das ist. Dies ist mein letzter Versuch, aber ich verstehe nicht, was genau ich schreibe. Folgendes gibt mir immer wieder Fehler. Mein Ziel ist folgendes: Platzieren Sie einen Pfeil und drucken Sie ihn in die Protokolldatei, wann immer der Schluss innerhalb von 0,00002 (0,002 auf JPY) des Hochs oder/oder Tiefs liegt. Wenn ich mich im hohen Bereich befinde, möchte ich, dass es signalisiert, wenn es über 21 ema liegt und umgekehrt für das niedrige. int start() {int Zähler=1; for(int i=1; ilt;=Bars; i ) NormalizeDouble(Close[1],5); NormalizeDouble (Hoch[1],5); NormalizeDouble (Low[1],5); double nps=2 bool High[1]-Close[1]lt;= nps*Point; Rückgabe (0);

  6. #6
    Sie müssen Ihren Code zuerst überprüfen, indem Sie jedes Mal, wenn ein Signal generiert wird, eine Print()-Anweisung platzieren. Angenommen, das ist nicht das Problem, könnte es in MT4 liegen. Ich hatte Probleme mit Objects, wenn MT4 ausgelastet oder mein Computer ausgelastet war. Ich habe keine verzögerten Objekte gesehen, immer wurden sie nie erstellt/gelöscht/aktualisiert. Angenommen, das Problem ist zuerst die Codierung.

  7. #7
    Danke Hannover und CodeMeister! Ich habe jetzt ein Problem darin, dass das Signal nicht auf dem Chart bei der Eröffnung des folgenden Balkens platziert wird. In einem Fall wurde es erst 3 oder 4 Takte später angezeigt. Irgendwelche Vorschläge?

  8. #8

    Zitat Zitat von ;
    Wofür steht der nps?
    Es ist die Toleranz (über die Sie in Ihrem vorherigen Beitrag gesprochen haben) in Punkten. Ein Punkt ist ein Zehntel Pip für einen 5-stelligen Broker. Bei einem 5-stelligen Broker ist Point = 0,00001 für Nicht-JPY-Paare und 0,001 für JPY-Paare. Wenn Sie also nps auf eine Toleranz von 2 setzen, dann ist nps*Point unabhängig vom Paar 2 Punkte, was Ihrem Indy erlaubt funktionieren bei allen Paaren einwandfrei.

  9. #9

  10. #10
    Sie sollten vermeiden, irgendetwas in Ihrem Programm fest zu codieren. Vergleichen Sie nicht mit .00002, sondern mit nps*Point, wobei nps auf 2 oder eine beliebige Zahl gesetzt ist. Dadurch funktioniert der Code sowohl mit Yen-Paaren als auch mit anderen und Änderungen lassen sich leichter vornehmen. bool hammer = MathAbs(High[1] - Close[1]) lt; nps*Punkt;

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Die tradingintuitive Webseite verwendet Cookies
Wir nutzen Cookies, um Ihnen das Webseitenerlebnis bestmöglich anbieten zu können. Durch weitere Nutzung der Webseite erlauben Sie die Nutzung von Cookies. Für weitere Details und wie Sie ggf. diese Einstellungen verändern können, lesen Sie bitte unsere Datenschutzbestimmung. Lesen Sie mehr