Glatter MTF-MACD für frühere Kauf-Verkaufssignale
Ergebnis 1 bis 8 von 8

Thema: Glatter MTF-MACD für frühere Kauf-Verkaufssignale

  1. #1
    1 Anhang (e) Hallo Leute

    Haben Sie eine Idee, wie Sie diesen Code ändern können, damit dieser MTF-MACD-Anwender glatter wird?

    Nehmen wir an, der Indior wird für M1 verwendet, um einen M5-MACD zu zeichnen (unter Verwendung der Standardeinstellung 12, 26, 9), dann referenziert der Indior jeden in der Berechnung verwendeten Schlusskurs fünfmal, bis er zum nächsten Schlusswert wechselt (was sein wird) wieder 5 mal benutzt). Dadurch erhalten Sie den MTF-MACD, der sich selbst höher oder tiefer stuft.

    Wie kann dies geändert werden, so dass der Innenraum jederzeit den nächsten Schlusskurs im Hauptzeitrahmen angibt?
    Fall:
    Wir sind auf M1 und der MTF-MACD ist auf 5 (die nächst höhere TF) eingestellt. Um einen glatteren MACD-Wert zu erhalten, verwende ich jederzeit die aktuelle Preisverschiebung0 und den Schlusskurs bei Schicht5, Schicht10, 15, 20, 25 usw.
    Wenn bei M5 und MTF MACD auf M15 eingestellt ist, sollte der Indior die aktuelle Preisverschiebung0 und den Schlusskurs von Schicht3, Schicht6, 9 usw. angeben.

    Ich stelle mir vor, dass der Vorteil darin besteht, dass ein MACD-Wert mit einem höheren Zeitrahmen jedes Mal aktualisiert wird, wenn der niedrigere Zeitrahmen eine neue Leiste zeichnet. Natürlich wird nicht der exakt höhere TF-MACD-Wert gezeichnet, als wäre ein MACD auf diesem höheren TF aufgetragen worden. Dies wird jedoch zu einem früheren Nulldurchgang und möglicherweise zu früheren Handelssignalen führen.

    Ich habe den MTF-MACD hier abgerufen: [url = http:/codebase.mql4.com/5660].

    Der Code wird unten eingefügt. Kannst du mir helfen? Ein Teil des Codes in der Startfunktion muss geändert werden, um mein Ziel zu erreichen.

    Prost
    Tomas

    _______
    // ------------------------------------------- -------------------
    //| MTF MACD.mq4 |
    // ------------------------------------------- -------------------
    #property copyright mqlservice.co.uk
    #property link http://mqlservice.co.uk/

    #property indior_separate_window
    #property indior_buffers 2
    #property indior_color1 Grau
    #property indior_color2 Rot
    //---- Eingabeparameter
    extern int TimeFrame = 0;
    extern int FastEMA = 12;
    extern int SlowEMA = 26;
    extern int Signal = 9;
    extern int AppliedPrice = 0;
    extern int Shift = 0;

    extern string note0 = Angewandter Preis 0-CLOSE | 1-OPEN | 2-HIGH | 3-LOW |;
    externer String note1 = | 4-MEDIAN | 5-TYPISCH | 6-GEWICHTET |;
    externer String note2 = Zeitrahmen 0 = aktueller Zeitrahmen;
    externe Zeichenkette note3 = 1 = M1, 5 = M5, 15 = M15, 30 = M30;
    externer String note4 = 60 = H1, 240 = H4, 1440 = D1;
    externe Zeichenkette note5 = 10080 = W1, 43200 = MN1;
    //---- Puffer
    doppelter MainBuffer [];
    doppelter Signalpuffer [];

    // ------------------------------------------- -------------------
    //| Benutzerdefinierte Inneninitialisierungsfunktion |
    // ------------------------------------------- -------------------
    int init ()
    {
    int draw_begin = MathMax (FastEMA, SlowEMA);
    Zeichenfolge Kurzname = MTF-MACD-Preis;
    //---- drinnen
    SetIndexStyle (0, DRAW_HISTOGRAM, 0,2);
    SetIndexBuffer (0, MainBuffer);
    SetIndexStyle (1, DRAW_LINE);
    SetIndexBuffer (1, SignalBuffer);
    Print (MTF MACD.mq4, Ver. # 2);
    Drucken (Copyright © 2009/05/26 MQL Service UK http://mqlservice.co.uk/);
    Schalter (AppliedPrice) {
    Fall 1: Kurzname = Kurzname | ÖFFNEN brechen;
    Fall 2: Kurzname = Kurzname | HOCH ; brechen;
    Fall 3: Kurzname = Kurzname | NIEDRIG ; brechen;
    Fall 4: Kurzname = Kurzname | MEDIAN ; brechen;
    Fall 5: Kurzname = Kurzname | TYPISCH; brechen;
    Fall 6: Kurzname = Kurzname | GEWICHTET; brechen;
    Standard :
    AppliedPrice = PRICE_CLOSE; Kurzname = Kurzname | SCHLIESSEN ; brechen;
    }
    if (TimeFramelt; Period ()) TimeFrame = Period ();
    Zeichenfolge TFName =;
    Schalter (Zeitrahmen)
    {
    Fall 1: TFName = M1; brechen;
    Fall 5: TFName = M5; brechen;
    Fall 15: TFName = M15; brechen;
    Fall 30: TFName = M30; brechen;
    Fall 60: TFName = H1; brechen;
    Fall 240: TFName = H4; brechen;
    Fall 1440: TFName = D1; brechen;
    Fall 10080: TFName = W1; brechen;
    Fall 43200: TFName = MN1; brechen;
    Voreinstellung: TFName = Chart; Zeitrahmen = Periode (); brechen;
    }

    Kurzname = StringConenate (Kurzname, (TF TFName , FastEMA , SlowEMA , Signal ));
    IndiorShortName (Kurzname);
    SetIndexDrawBegin (0, draw_begin);
    SetIndexDrawBegin (1, draw_begin);
    SetIndexLabel (0, Main);
    SetIndexLabel (1, Signal);
    IndiorDigits (6);
    return (0);
    }
    // ------------------------------------------- -------------------
    //| Benutzerdefinierte Innenraumentfernungsfunktion |
    // ------------------------------------------- -------------------
    int deinit ()
    {
    //----

    //----
    return (0);
    }
    // ------------------------------------------- -------------------
    //| Benutzerdefinierte Iterationsfunktion für den Innenbereich |
    // ------------------------------------------- -------------------
    int start ()
    {
    Int Limit, iChart, iTF, Delta = 0;
    datetime TimeArray [];
    if (TimeFramegt; Period ()) delta = MathCeil (TimeFramePeriod ());
    int counted_bars = IndiorCounted ();
    //---- auf mögliche Fehler prüfen
    if (counted_barslt; 0) return (-1);
    //---- der zuletzt gezählte Balken wird angezeigt
    if (counted_barsgt; 0) counted_bars--;
    limit = Bars-counted_bars Delta;

    ArrayCopySeries (TimeArray, MODE_TIME, Symbol (), TimeFrame);

    iTF = 0;
    for (Chart = 0; iChart; limit; iChart)
    {
    while (Time [iChart] lt; TimeArray [iTF]) iTF ;
    Hauptpuffer [iChart] = EMPTY_VALUE;
    SignalBuffer [iChart] = EMPTY_VALUE;
    Hauptpuffer [iChart] = iMACD (Symbol (), Zeitrahmen, FastEMA, SlowEMA, Signal, AppliedPrice, MODE_MAIN, iTF Shift);
    SignalBuffer [iChart] = iMACD (Symbol (), Zeitrahmen, FastEMA, SlowEMA, Signal, AppliedPrice, MODE_SIGNAL, iTF Shift);
    }
    return (0);
    }

    // ------------------------------------------- -------------------

    https://www.tradingintuitive.com/att...1556900020.mq4

  2. #2
    Wie erfasse und referenziere ich ein Array von Preisen, bei dem das Array aus HigherTimeFramePresentTimeFrame = TFfactor und # der Perioden in MACD definiert ist? Das Array für die FastPeriod (in diesem Fall FastPeriod = 12) ist: Shift0 und 11 Perioden mit dem TFfactor zwischen jedem Wert (wenn PresentTimeFrame = M5 und HigherTimeFrame = M15 ist, dann ist das für die schnelle Periode referenzierte Array Shift0, 3, 6, 9 , 12, 15, 18, 21, 24, 27, 30, 33 auf M5). Dasselbe Prinzip gilt für das SlowPeriod-Array.

  3. #3
    1 Attachment (s) Denken Sie, dass dies etwas von dem ist, was Sie möchten (jetzt nicht mehr). Möglicherweise müssen Sie optimieren? (Nicht in Echtzeit ausprobiert). HTH
    https://www.tradingintuitive.com/att...0849415505.mq4

  4. #4
    Zitat Zitat von ;
    Denke, das geht ein bisschen dahin, was du willst (jetzt keine Zeit mehr). Möglicherweise müssen Sie optimieren? (Nicht in Echtzeit ausprobiert). HTH
    Danke - ich werde es testen, den Code studieren und mich bei Ihnen melden

  5. #5
    2 Attachment (s)
    Zitat Zitat von ;
    Denke, das geht ein bisschen dahin, was du willst (jetzt keine Zeit mehr). Möglicherweise müssen Sie optimieren? (Nicht in Echtzeit ausprobiert). HTH
    Hallo Futurespec Habe viel zu tun, aber jetzt habe ich es getestet. Der M1​​M5-Vergleich sah vielversprechend aus, da Ihre Version tatsächlich führend ist. Hier kreuzt das Histogramm bei 0317 unter der Zeroline, wo der andere MTF-MACD (ein gewöhnlicher MACD) bei 0320 - 3 Minuten später die Zeroline kreuzt. Es sieht jedoch so aus, als würde der Indior nur die Glättung durchführen, da er an ein Diagramm angehängt wird und nicht in Echtzeit ausgeführt wird. Der M5H1-Vergleich zeigte ein anderes Problem. Es scheint, als würde der höhere Zeitrahmenwert (im unteren Zeitrahmen) erst nach einer Periode vor dem nächsten vollen Stundenwert gelten. Ein gewöhnlicher MACD in einem H1-Chart und der andere MFT-MACD, der H1 referenziert, hat zum Zeitpunkt 1400 einen MACD-Wert von 0,000009. Der mnMTF-MACD erhält diesen Wert jedoch erst ab 1455 - also hier ist er verzögert. Dasselbe gilt für die 1500 Stunden vs. 1555 und 1600 Stunden vs. 1655 Werte. Stimmt es, dass Ihre Version die Werte durch Mittelung der Werte des höheren Zeitrahmens glättet? Das ist es, was ich anstrebe - Im Fall einer 5MH1-Referenz: Können Sie mathematisch ein Array von Schlusskursen definieren, 12 Stunden zurück für den FastPeriod-Wert und 26 Stunden zurück für den SlowPeriod-Wert? Zum Zeitpunkt 05 nach der vollen Stunde bezieht es sich also auf die Schlusskurse bei xx05 12 Stunden zurück und xx05 26 Stunden zurück ... und bei 10 Minuten nach der vollen Stunde bezieht sich dies auf alle Werte von xx10 für die letzten 12 und 26 Stunden. Danke fürs Helfen. Ich kann nicht garantieren, dass sich diese Idee lohnt, aber ich denke, Sie würden die Kombination aus Stabilität eines höheren Zeitrahmens und einem früheren Trade-Auslöser gewinnen.
    https://www.tradingintuitive.com/cry...fic-price.html
    https://www.tradingintuitive.com/for...red-green.html

  6. #6

    Zitat Zitat von ;
    Das ist es, was ich anstrebe - Im Fall einer 5MH1-Referenz: Können Sie mathematisch ein Array von Schlusskursen definieren, 12 Stunden zurück für den FastPeriod-Wert und 26 Stunden zurück für den SlowPeriod-Wert? Zum Zeitpunkt 05 nach der vollen Stunde bezieht es sich also auf die Schlusskurse bei xx05 12 Stunden zurück und xx05 26 Stunden zurück ... und bei 10 Minuten nach der vollen Stunde bezieht sich dies auf alle Werte von xx10 für die letzten 12 und 26 Stunden.
    Hat MT4 etwas, das dem Modulus-Operator in C entspricht? Mir wurde mitgeteilt, dass der Modulus-Operator in C hervorragend ist, um die nicht benötigten Werte auszulassen. Ref .:
    http://www.cprogramming.com/tutorial/modulus.htmlJA, das tut es tatsächlich! Ich habe mql4.com gesucht und festgestellt, dass die gleiche Funktion vorhanden ist. Wenn also delta = TimeFramePeriod () ist, können wir die Bedingung testen: if (bar% delta == 0) Alle Balken, die diese Bedingung als wahr zurückgeben, sollten in dem neuen MTF-Array enthalten sein, das für die MACD-Berechnung verwendet wird. Wenn der Diagrammzeitrahmen M5 ist und der höhere Referenzzeitrahmen H1 ist, dann würde delta = 60/5 = 12 sein, wenn (bar% delta == 0) die Balken dann bei der Verschiebung 0, 12, 24, 36, 48 usw. zurückgeben würde Nur diese Zahlen geben eine ganze Zahl zurück, wenn sie durch 12 (Delta) geteilt wird. Jeder andere Takt (z. B. Takt 37) gibt eine Dezimalzahl zurück, wenn er durch 12 geteilt wird. Auf diese Weise können die Taktstäbe, die für die MTF-MACD-Berechnung verwendet werden sollen, leicht in eine separate Taktfolge eingefügt werden, die für einen beliebigen Zeitraum verwendet werden kann MACD. Nun ist die Frage: Kann es codiert werden und wer kann das in MT4?

  7. #7
    MathMod (doppelter Wert, doppelter Wert2) macht es in MT4 genauso. Was das Codieren angeht ... kein Problem, aber leider habe ich derzeit keine Zeit.

  8. #8
    Vielen Dank für Ihre bisherige Hilfe!

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