Ich denke, der Indikator braucht ArraySetSeries (mf, true) und (ms, true) in OnInit (), um richtig zu funktionieren.
Alle Operatoren
if (flg == 0) / / initialise on first pass { ArrayInitialize (ag, EMPTY_VALUE); ArrayInitialize (bg, EMPTY_VALUE); ArrayInitialize (cg, EMPTY_VALUE); hi = 0; I = 0; trend = 0; flg = 1; }
wären effektiver in OnInit () und müssten nicht "flg" verwenden
EA in Bezug auf ... mit MACD denke, seine Strategie-Algorithmus ist wie folgt vereinfacht:
Öffnen Sie kaufen: MACDcurrent>MACDprev && MACDcurrent<0; buyed = true.
Close buy: buyed && MACDcurrent<MACDprev && MACDcurrent>0; buyed = false
Für den Verkauf umgekehrte Aktionen.
Wenn wir SL und TP verwenden, wenn der EA nicht in Betrieb ist, kann ich "buy" oder "sell" als Trend (slow MA) sagen und auf ein neues Signal warten.
Hallo, ich weiß nicht, warum dieser Indikator: madelta_inc.mq5, zeichnet nichts, wenn ich es auf dem Chart anhängen. Hier füge ich Ihnen ein Bild, so dass Sie sehen können, was ich sage. Ich habe auch unten den Code mit der Änderung josemiguel1812 schlägt vor, verwenden Sie nicht die Flagge: 'flg', und verschieben Sie einen Teil des Codes, um die OnInit() Ereignis. Ich habe nicht verwendet: ArraySetAsSeries (mf, true) und ArraySetAsSeries (ms, true), weil sowohl 'mf' als auch 'ms' nur ein Element Arrays sind und ich denke, dass diese Änderung keine Auswirkung haben wird, auch MT5 erlaubt nicht die Verwendung dieser Funktion für statische Arrays. Aber was ich gerne wissen würde, ist, warum der Indikator nicht gezeichnet wird. Könnten Sie den folgenden Code ausprobieren und ihn testen?
Vielen Dank im Voraus, Cyberglassed.
//+------------------------------------------------------------------+ //|madelta_inc | //|Copyright 2013 Winston | //+------------------------------------------------------------------+ #property copyright "Winston 2013" #property version "1.10" #property description "madelta_inc" #property indicator_separate_window #property indicator_buffers 4 #property indicator_plots 3 #property indicator_type1 DRAW_COLOR_LINE #property indicator_color1 White,Yellow,Red #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #property indicator_type2 DRAW_LINE #property indicator_color2 Yellow #property indicator_style2 STYLE_DOT #property indicator_width2 1 #property indicator_type3 DRAW_LINE #property indicator_color3 Red #property indicator_style3 STYLE_DOT #property indicator_width3 1 input double d = 0.00195; //delta input double m = 39.2; //mult input int F = 26; //schneller gleitender Durchschnitt input ENUM_MA_METHOD FM = MODE_SMA; //schneller Durchschnittsmodus input ENUM_APPLIED_PRICE FP = PRICE_WEIGHTED; //schneller Preismodus input int S = 51; // Langsam gleitender Durchschnitt input ENUM_MA_METHOD SM = MODE_EMA; // Langsamer Durchschnittsmodus input ENUM_APPLIED_PRICE SP = PRICE_MEDIAN; //slow price mode int Ms, Mf, trend; double px, hi, lo; double ms[1], mf[1]; double ag[], bg[], cg[], ac[]; //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0, ag, INDICATOR_DATA); ArraySetAsSeries(ag, true); //signal SetIndexBuffer(1, ac, INDICATOR_COLOR_INDEX); ArraySetAsSeries(ac, true); //Signaltrendfarbe SetIndexBuffer(2, bg, INDICATOR_DATA); ArraySetAsSeries(bg, true); //hi-Schwelle SetIndexBuffer(3, cg, INDICATOR_DATA); ArraySetAsSeries(cg, true); //lo Schwelle ArrayInitialize(ag, EMPTY_VALUE); ArrayInitialize(bg, EMPTY_VALUE); ArrayInitialize(cg, EMPTY_VALUE); hi = 0; lo = 0; trend = 0; Mf = iMA(NULL, PERIOD_H1, F, 0, FM, FP); Ms = iMA(NULL, PERIOD_H1, S, 0, SM, SP); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, // Größe des Preis[]-Arrays const int prev_calculated, // Balken, die bei einem früheren Aufruf behandelt wurden const int begin, // von wo aus die signifikanten Daten beginnen const double &price[]) // zu berechnendes Array { CopyBuffer(Mf, 0, 0, 1, mf); //schneller gleitender Durchschnittswert CopyBuffer(Ms, 0, 0, 1, ms); // Langsam gleitender Durchschnittswert px = pow(m * (mf[0] - ms[0]), 3); //Verstärken und Würfeln der Differenz if (px > hi) { //Trend erkennen hi = px; lo = hi - d; trend = 1; } if (px < lo) { //mit Farbwechsel lo = px; hi = lo + d; trend = 2; } ag[0] = px; bg[0] = hi; cg[0] = lo; ac[0] = trend; return (rates_total); } //+------------------------------------------------------------------+
Hallo, ich weiß nicht, warum dieser Indikator: madelta_inc.mq5, zeichnet nichts, wenn ich es auf dem Chart anhängen. Hier füge ich Ihnen ein Bild, so dass Sie sehen können, was ich sage. Ich habe auch unten den Code mit der Änderung josemiguel1812 schlägt vor, verwenden Sie nicht die Flagge: 'flg', und verschieben Sie einen Teil des Codes, um die OnInit() Ereignis. Ich habe nicht verwendet: ArraySetAsSeries (mf, true) und ArraySetAsSeries (ms, true), weil sowohl 'mf' als auch 'ms' nur ein Element Arrays sind und ich denke, dass diese Änderung keine Auswirkung haben wird, auch MT5 erlaubt nicht die Verwendung dieser Funktion für statische Arrays. Aber was ich gerne wissen würde, ist, warum der Indikator nicht gezeichnet wird. Könnten Sie den folgenden Code ausprobieren und ihn testen?
Vielen Dank im Voraus, Cyberglassed.
Was erwarten Sie? Es werden nur die Werte des Index 0 der Puffer des Indikators gesetzt.
Es war ein wenig verwirrend für mich sehen, dass immer der Index 0 der Puffer zugewiesen wurden, so dass ich erwartet, dass die ArraySetAsSeries hatte einen Einfluss auf das intuitive Verhalten von dem, was man denken könnte (umgekehrt) oder so etwas, ich bin Anfänger in mql5. Jedenfalls musste ich meinen Computer aus einem anderen Grund neu starten und versuchte erneut den Indikator und jetzt zeichnet er Linien, wie ich am Anfang erwartet hatte. Ich hänge ein Bild an.
Vielen Dank, Cyberglassed.
Es war ein wenig verwirrend für mich sehen, dass immer der Index 0 der Puffer zugewiesen wurden, so dass ich erwartet, dass die ArraySetAsSeries hatte einen Einfluss auf das intuitive Verhalten von dem, was man denken könnte (umgekehrt) oder so etwas, ich bin Anfänger in mql5. Jedenfalls musste ich meinen Computer aus einem anderen Grund neu starten und versuchte erneut den Indikator und jetzt zeichnet er Linien, wie ich am Anfang erwartet hatte. Ich hänge ein Bild an.
Vielen Dank, Cyberglassed.
Entweder ist der Code, den Sie ausführen, nicht derselbe wie der, den Sie gepostet haben, oder Ihr Terminal zeichnet Daten, die aus irgendwelchen Puffern kommen.
Der Code, den Sie gepostet haben, kann nicht zu einem solchen Ergebnis führen.
Vielen Dank für Ihren Kommentar. Der Indikator ist vielleicht ungewöhnlich, da er nur mit dem Strategy Tester im Visulization-Modus funktionieren soll.
Klicken Sie im Navigator mit der linken Maustaste auf den Ea und dann mit der rechten Maustaste auf Test. In Strategy tester EURUSD, H1 und kreuzen Sie das Feld Visulization an und dann Start, der Indikator sollte erscheinen.
Lassen Sie mich wissen, wie Sie vorankommen.
Mit freundlichen Grüßen
Winston
etwas ist falsch mit diesem EA. Wenn ich versuche, den Handel auf nur ein Paar der Währung dieser EA didn`t enything durch 2 Tage, Indikator somtimes zeigen sel und kaufen Signal zur gleichen Zeit.
Wenn ich versuche, auf mehrere Währungspaare zu handeln, tut es das gleiche, aber ich beobachtete, dass, wenn ich manuell schließen Positionen es wieder zu handeln beginnen, etwas ist sehr falsch mit diesem EA, etwas blockiert den Handel in Meta Trader 5
Wenn ich ihn im Strategietester getestet habe, ist alles in Ordnung, aber wenn ich versuche zu handeln, öffnet er nur Positionen und schließt sie nicht, ich muss sie manuell schließen ....
Könnte jemand das Problem beheben?

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Unterschied zwischen zwei gleitenden Durchschnitten:
Expert Advisor basierend auf dem Unterschied von zwei gleitenden Durchschnitten.
Autor: Winston