Technischer Indikator

Tradingstrategien optimal bewerten: Ein Indikator für MetaTrader 4
MetaTrader4
Tradingstrategien optimal bewerten: Ein Indikator für MetaTrader 4

Viele von uns wünschen sich oft, auf visuelle Weise zu erkennen, wo eine bestimmte Handelsstrategie Schwächen aufweist. Und wenn wir gleichzeitig die objektiven Handelsstatistiken sehen könnten, wäre das wirklich großartig. In MetaTrader 4 gibt es zwar einen Backtester, aber das Ausführen eines Backtests im visuellen Modus für jede Änderung im EA kostet viel Zeit. Zudem sind die visuellen Möglichkeiten recht begrenzt. Multi-Währungsstrategien lassen sich damit auch nicht effizient testen. Ich habe versucht, all diese Herausforderungen anzugehen, und das Ergebnis ist dieser Open-Source-Indikator für visuelle Tests von Handelsstrategien. Natürlich ist es nicht möglich, einen vollkommen universellen Indikator für alle Zwecke zu erstellen, aber das aktuelle Framework lässt sich leicht an spezielle Bedürfnisse anpassen (wie beispielsweise Multi-Währungsstrategien). Besonderes Augenmerk wurde auf Spread-Management gelegt. Der Indikator berücksichtigt den Spread so, wie er im realen Handel und im Backtester von MT4 vorhanden ist. Wenn du den Indikator für deine eigenen Zwecke anpasst, solltest du das Spread-Management im Detail studieren, da du sonst möglicherweise großartige Strategieergebnisse auf einem M1-Zeitrahmen siehst, während es in der Realität eine Katastrophe wäre. :-) Zur Demonstration des Strategie-Testindicators füge ich einen Handelsindikator mit einer einfachen Handelsstrategie hinzu. Die Regeln der Strategie basieren auf MA-Kreuzen in Bezug auf die Preisaktion (so dass Trades sogar platziert werden können, bevor sie tatsächlich kreuzen, um die Verzögerung zu minimieren). Auch eine Ausstiegsstrategie ist vorhanden (basierend auf gegensätzlichen Signalen und einem langsamen MA-Kreuz in entgegengesetzter Richtung), und das Stop-Loss-Management wird über eine modifizierte Chandelier-SL-Strategie implementiert. Dieser Indikator dient als Beispiel, das für spezifische Bedürfnisse erweitert werden kann, aber einige Trader finden ihn sogar gut genug für ihr manuelles Trading. Die Idee hinter dem gesamten System Das Indikatorsystem ist modular aufgebaut. Zuerst müssen wir eine Handelsstrategie in einen Handelsindikator implementieren, bei dem zwei Puffer für Einstiegssignale, zwei für Ausstiegssignale und einer für das Stop-Loss verwendet werden. Ein Beispiel für einen solchen Indikator mit voller Funktionalität ist der angehängte StrategyIndi_1.0. Wir können diese Strategie dann mit einem Strategie-Testindikator StrategySym_1.0 auswerten. Wenn wir mit den Ergebnissen unzufrieden sind, optimieren wir einfach den Handelsindikator und können die Ergebnisse der Änderungen in Echtzeit und objektiv über Statistiken sehen. Wenn wir später einen EA implementieren möchten, ist das ganz einfach, da wir durch den Aufruf eines benutzerdefinierten Handelsindikators alle Einstiegs- und Ausstiegssignale sowie die SL-Werte erhalten. Wie man dieses System nutzt und an die eigenen Bedürfnisse anpasst? Um das System so zu nutzen, wie es ist, kopierst du beide Indikatoren in deinen MetaTrader\experts\indicators-Ordner. Stelle sicher, dass du das Terminal neu startest, bevor du sie verwendest, damit sie kompiliert werden. Es gibt bestimmte Einstellungen, die du möglicherweise anpassen möchtest; die meisten sind aus ihren Namen selbsterklärend, daher beschreibe ich nur die anderen: StrategyIndi-Parameter: ChandBars = 7 (Anzahl der Balken für die Chandelier-SL-Strategie) ChandATRFact = 2.0 (Faktor zur Multiplikation des langfristigen ATR, um die Chandelier-Distanz zu erhalten) RiskPercent = 2.0 (Risiko in Prozent des freien Kontostands zur Berechnung der Lotgröße gemäß dem anfänglichen SL) Offset = 10 (Offset von Balken auf dem Chart für die Platzierung von Pfeilen, in 4-stelligen Pips) BarsBack = 2000 (Anzahl der Balken, die aus der Vergangenheit verarbeitet werden) AlertSound = "alert.wav" (WAV-Datei für akustische Warnungen) UseSoundAlert = true (falls wir akustische Warnungen wünschen) UsePopupAlert = true (falls wir Popup-Fensterwarnungen wünschen) WriteToLog = false (falls wir Protokolldetails schreiben möchten) StrategySim-Parameter: MaxLossAtSL = 200.0 (wie viel Geld wir bereit sind, bei jedem SL zu verlieren) BarsBack = 2000 (Anzahl der Balken, die zur Strategieauswertung verarbeitet werden) WriteToLog = false (falls wir Protokolldetails schreiben möchten) Wenn du das System an deine eigenen Bedürfnisse anpasst, musst du dem StrategySym-Indikator alle Parameter aus deinem eigenen StrategyIndi-Indikator hinzufügen – die, die für die Simulation wichtig sind. Diese werden später in der GetIndiSignals-Methode verwendet, und du gibst einfach feste Werte für andere Parameter (wie UseSoundAlert) ein. Ansonsten muss im StrategySim nichts geändert werden, es sei denn, du möchtest es für andere Zwecke verwenden (wie Multi-Währungsstrategien). In diesem Fall sollten die Code-Kommentare und Variablennamen hoffentlich hilfreich genug sein. Wenn du Unterstützung benötigst, helfen wir dir gerne weiter, kontaktiere uns einfach über die unten angegebene Webadresse. Mit diesem System möchte ich zur Objektivität bei der Bewertung von Handelsstrategien (für manuelle Systeme oder EAs) beitragen, da die aktuellen Marketingansätze oft sehr manipulativ sind und viele Anfänger dazu bringen, ihr hart erarbeitetes Geld zu verlieren. Viele Grüße, Robert Für Kommentare, MT4-Programmierungen oder Beratungen zu diesem Thema kontaktiere mich bitte unter robert [dot] leskovar [at] gmail [dot] com. Die MQLTools-Website im Quellcode ist nicht mehr aktiv.

2010.04.01
Market Way: Ein leistungsstarker Indikator für MetaTrader 4
MetaTrader4
Market Way: Ein leistungsstarker Indikator für MetaTrader 4

Idee: Der Market Way Indikator hat zwar eine alte Idee, aber er ist alles andere als veraltet. Er fasst die Differenz zwischen Eröffnungs- und Schlusskursen über einen bestimmten Zeitraum zusammen und bietet damit wertvolle Einblicke in die Marktbewegungen. Der Hauptindikator umfasst: Summe nur der bärischen Kerzen; Summe nur der bullischen Kerzen; Außerdem wird ein gewichteter Durchschnitt über den gesamten Zeitraum angezeigt. Vorteile: Vereint (wichtig!) die Möglichkeiten eines Oszillators und eines Trendindikators; Einfach zu verstehen und zu interpretieren; Bietet gute Einstiegspunkte für Aufwärts- oder Abwärtsbewegungen; Zeigt bullische und/oder bärische Druckniveaus, die für die Platzierung von Stopps und Gewinnzielen entscheidend sein können; Erkennt die Stärke seitlicher Bewegungen (hohe oder niedrige Volatilität); Markiert überkaufte/überverkaufte Niveaus; Visualisiert die Wellenbewegungen des Preises und zeigt Möglichkeiten zur Divergenz/Konvergenz; Hilft bei der Entscheidung über zukünftige Preisbewegungen und (wichtig!) beim Markteinstieg nur mit diesem Indikator; Funktioniert gut mit Daten aus jedem Zeitrahmen sowie in anderen Märkten; Filtert ohne zusätzliche Glättungsfilter falsche Signale beim Durchbrechen der SMA mit demselben Zeitraum. Nachteile: Benötigt immer einen Abrechnungszeitraum, was die Genauigkeit der analysierten Daten verringert (das Hauptproblem aller Indikatoren); Die Möglichkeiten dieses Indikators sind noch nicht umfassend erforscht. Empfohlene Parameter: extern int IdMain = 12; // Hauptlinie (auf dem Chart als Punkte dargestellt) extern int IdBull = 12; // bullische Linie, idealerweise gleichwertig mit der bärischen und der Hauptlinie extern int IdBear = 12; // bärische Linie, idealerweise gleichwertig mit der bullischen Linie und der Hauptlinie extern int IdArray = 12; // Glättungswert aller Linien im Chart, auch als SIGNAL-Linien bezeichnet Auf dem Display wird ein Histogramm angezeigt, das den Unterschied zwischen der bullischen Linie (weiße Balken) und der SMA sowie der bärischen Linie (schwarze Balken) und der SMA darstellt. Empfohlene Einstellungen sind Vielfache von 12, sowie Werte, die sowohl durch 3 als auch durch 4 teilbar sind, mit einem Maximum von 108 und einem Minimum von 12, eventuell auch 9 und 7. Dieser Indikator im Strategietester: Dies ist ein Beispiel zur Veranschaulichung des Indikators. Die Trades werden beim Öffnen eines Bars getätigt, daher ist kein „Jeder Tick“-Test erforderlich. Handelsmodus: 1 pro Bar. Zeitrahmen: täglich, Instrument: EURUSD, Zeitraum: 1999 bis 2010. Stop Loss und Gewinn auf 500 Punkte eingestellt, die Schließung erfolgt beim Eintreten des gegenteiligen Trades. Bedingungen für Long-Positionen: MainAccumulation1 - MainSMA1 > 0 // Hauptlinie über dem geglätteten Wert && BullPressure1 - Point > 0 // Bullischer Druck über 0 && BearPressure1 - Point > 0 // Bärischer Druck über 0 && MainAccumulation1 - Point > 0 // Hauptlinie über 0 Bedingungen für Short-Positionen: MainAccumulation1 - MainSMA1 < 0 // Hauptlinie unter dem geglätteten Wert && BullPressure1 - Point < 0 // Bullischer Druck unter 0 && BearPressure1 - Point < 0 // Bärischer Druck unter 0 && MainAccumulation1 - Point < 0 // Hauptlinie unter 0 Bedingungen für den Ausstieg sind strikt gegensätzlich. Unten sehen Sie die Entwicklung des Eigenkapitals (Equity) mit einer Genauigkeit von 5 Stellen. Wie Sie sehen können, fiel das Eigenkapital nach der Eröffnung eines Trades selten unter -200 Punkte.

2010.03.30
Trendindikator für höhere Zeitrahmen - MetaTrader 4
MetaTrader4
Trendindikator für höhere Zeitrahmen - MetaTrader 4

Beschreibung: Dieser Indikator zeigt den allgemeinen Trend eines höheren Zeitrahmens auf dem aktuellen (niedrigeren Zeitrahmen) Chart an:Wenn MA_1 &lt; MA_2 &lt; MA_3 &lt; MA_4 im höheren Zeitrahmen vorliegt, ist eine ordnungsgemäße Reihenfolge der gleitenden Durchschnitte (MAs) gegeben und es herrscht ein Abwärtstrend. In diesem Fall erscheint auf dem aktuellen, niedrigeren Zeitrahmen-Chart eine rote Linie, die dies anzeigt. Diese rote Linie basiert auf dem PCI (Price Channel Index) Indikator und kann als Unterstützungslinie verwendet werden. Wenn der integrierte RSI-Indikator aktiviert ist, wird jedes Mal, wenn der RSI in den überkauften Bereich geht, ein Alarm ausgelöst, der darauf hinweist, dass eine mögliche Umkehr wahrscheinlicher ist, d.h. der Trend des niedrigeren Zeitrahmens setzt den übergeordneten Trend des höheren Zeitrahmens fort. Es wird empfohlen, bei einem Schlusskurs unterhalb der roten PCI-Unterstützungslinie einzutreten. Siehe Beispielbild unten.Wenn MA_1 &gt; MA_2 &gt; MA_3 &gt; MA_4 im höheren Zeitrahmen vorliegt, ist eine ordnungsgemäße Reihenfolge der MAs gegeben und es herrscht ein Aufwärtstrend. In diesem Fall erscheint auf dem aktuellen, niedrigeren Zeitrahmen-Chart eine grüne Linie. Diese grüne Linie basiert ebenfalls auf dem PCI-Indikator und kann als Widerstandslinie verwendet werden. Wenn der integrierte RSI-Indikator aktiviert ist, wird jedes Mal, wenn der RSI in den überverkauften Bereich geht, ein Alarm ausgelöst, der auf eine mögliche Umkehr hinweist, d.h. der Trend des niedrigeren Zeitrahmens setzt den übergeordneten Trend des höheren Zeitrahmens fort. Es wird empfohlen, bei einem Schlusskurs oberhalb der grünen PCI-Widerstandslinie einzutreten.Eine graue Linie zeigt an, dass kein Trend im höheren Zeitrahmen vorhanden ist.Hinweis: Ich empfehle die folgenden Zeitrahmenkombinationen: Höherer Zeitrahmen: Aktueller Zeitrahmen: Tageschart 1-Stunden-Chart 4-Stunden-Chart 15-Minuten-Chart 1-Stunden-Chart 5-Minuten-Chart 5/15-Minuten-Chart 1-Minuten-Chart Bild: Eigenschaften: extern int Upper_Timeframe = 240; // Höherer Zeitrahmen in Minuten, z.B. 240 = 4 Stunden extern int Upper_Timeframe_MA_1 = 10; // MA_1 muss der schnellste MA sein extern int Upper_Timeframe_MA_2 = 20; extern int Upper_Timeframe_MA_3 = 50; extern int Upper_Timeframe_MA_4 = 100; // MA_4 muss der langsamste MA sein extern bool RSI_Check_On = true; // Überprüft die RSI Überkauft/Überverkauft Bedingungen extern bool RSI_Alert_On = true; // Audioalarm für RSI Überkauft/Überverkauft Bedingungen extern int RSI_Period = 12; // RSI-Periode extern int Upper_RSI_Limit = 70; // Obergrenze, ab der Überkauft-Bedingungen angezeigt werden extern int Lower_RSI_Limit = 30; // Untergrenze, unter der Überverkauft-Bedingungen angezeigt werden extern int PCI_Period = 5; // PCI-Periode. z.B. 5 legt die Unterstützungslinie im Abwärtstrend auf das niedrigste Tief der letzten 5 Kerzen fest extern int PCI_Shift = 1; // PCI-Verschiebung, am besten auf 1 gesetzt extern double Entry_Buffer = 0.0002; // Erhöht die Breite des PCI-Kanals um die angegebenen Pips. z.B. senkt die Unterstützungslinie im Abwärtstrend extern color Dot_Color = Blue;

2010.03.26
DemoBufferPattern: Ein nützlicher Indikator für MetaTrader 5
MetaTrader5
DemoBufferPattern: Ein nützlicher Indikator für MetaTrader 5

Der DemoBufferPattern ist ein innovativer Indikator für den MetaTrader 5, der Ihnen hilft, Marktmuster durch die Kombination von Kerzen, Fraktalen und Zigzag-Linien zu erkennen. Dieser Indikator nutzt verschiedene Zeichenstile: Farbige Kerzen zeichnen Pfeile zeichnen Farbigen Zigzag zeichnen Farbige Linien zeichnen //+------------------------------------------------------------------+ //| Initialisierungsfunktion des benutzerdefinierten Indikators | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- Zuordnung der Indikatorpuffer &nbsp;&nbsp; SetIndexBuffer( 0,P1B1,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 1,P1B2,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 2,P1B3,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 3,P1B4,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 4,P1BC,INDICATOR_COLOR_INDEX); &nbsp;&nbsp; SetIndexBuffer( 5,P2B1,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 6,P3B1,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 7,P4B1,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 8,P4B2,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer( 9,P4BC,INDICATOR_COLOR_INDEX); &nbsp;&nbsp; SetIndexBuffer(10,P5B1,INDICATOR_DATA); &nbsp;&nbsp; SetIndexBuffer(11,P5BC,INDICATOR_COLOR_INDEX); //--- Hilfspuffer für Zwischenberechnungen &nbsp;&nbsp; SetIndexBuffer(12,P4M1,INDICATOR_CALCULATIONS); &nbsp;&nbsp; SetIndexBuffer(13,P4M2,INDICATOR_CALCULATIONS); //--- Diese sollten nach allen Puffern platziert werden, die angezeigt werden sollen, sonst ... probieren Sie es selbst aus //--- PFEIL &nbsp;&nbsp; PlotIndexSetInteger(1,PLOT_ARROW,217); &nbsp;&nbsp; PlotIndexSetInteger(2,PLOT_ARROW,218); &nbsp;&nbsp; PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-iArrowShift); &nbsp;&nbsp; PlotIndexSetInteger(2,PLOT_ARROW_SHIFT,iArrowShift); &nbsp;&nbsp; PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE); &nbsp;&nbsp; PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE); //--- ZIGZAG &nbsp;&nbsp; PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0.0); //--- MA &nbsp;&nbsp; maHandle=iMA(Symbol(),0,ExtPeriod,0,MODE_EMA,PRICE_CLOSE); &nbsp;&nbsp; return(0); &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Iterationsfunktion des benutzerdefinierten Indikators | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const int prev_calculated, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const datetime&amp; time[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double&amp; open[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double&amp; high[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double&amp; low[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double&amp; close[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long&amp; tick_volume[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long&amp; volume[], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const int&amp; spread[]) &nbsp;&nbsp;{ //--- &nbsp;&nbsp; CalcCandles(rates_total,prev_calculated,open,high,low,close); &nbsp;&nbsp; CalcFractal(rates_total,prev_calculated,high,low,P2B1,P3B1); &nbsp;&nbsp; CalcZigzag (rates_total,prev_calculated,high,low,P4B1,P4B2,P4BC,P4M1,P4M2); &nbsp;&nbsp; CalcColorMA(rates_total,prev_calculated,P5B1,P5BC); //--- Rückgabewert von prev_calculated für den nächsten Aufruf &nbsp;&nbsp; return(rates_total); &nbsp;&nbsp;}

2010.03.25
Trade Sessions Indikator für MetaTrader 5: So nutzen Sie ihn optimal
MetaTrader5
Trade Sessions Indikator für MetaTrader 5: So nutzen Sie ihn optimal

Dieser Indikator basiert auf DRAW_FILLING Buffern. Es sind keine Eingabeparameter vorhanden. Stattdessen werden die Funktionen TimeTradeServer() und TimeGMT() verwendet. Beachten Sie, dass es zu Ungenauigkeiten bei den Handelszeiten kommen kann. Die Werte stammen von der ersten Seite, die ich gefunden habe :))Es ist möglich, die Werte im Konstantenblock zu ändern; die GMT-Zeit wird verwendet. // Zeitkonstanten sind nach Greenwich angegeben const int&nbsp;&nbsp; AsiaOpen=0; const int&nbsp;&nbsp; AsiaClose=9; const int&nbsp;&nbsp; AsiaOpenSummertime=1;&nbsp;&nbsp; // Die asiatische Session verschiebt sich const int&nbsp;&nbsp; AsiaCloseSummertime=10; // nach den Zeitänderungen const int&nbsp;&nbsp; EuropaOpen=6; const int&nbsp;&nbsp; EuropaClose=15; const int&nbsp;&nbsp; AmericaOpen=13; const int&nbsp;&nbsp; AmericaClose=22; Es besteht die Möglichkeit, die Zeitwechsel zur Sommerzeit zu nutzen. Aktuell ist das noch recht primitiv umgesetzt und erfolgt über die Funktion TimeDaylightSavings(); //+--------------------------------------------------------------------+ // Bestimmung der Sommerzeit ist für zukünftige Berechnungen reserviert //+--------------------------------------------------------------------+ bool Summertime(datetime time) { &nbsp;&nbsp; if(TimeDaylightSavings()!=0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); &nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(false); }&nbsp; Nach der Umstellung auf die Sommerzeit ändert sich die Zeit für die gesamte Historie und umgekehrt. Die erste Version des Indikators wurde bei MQL4 veröffentlicht.

2010.03.15
Erste Vorherige 337 338 339 340 341 342 343 344 345 346 347 Nächste Letzte