Forex Strategie 80 20

FOREX Strategien Forex Strategie, einfache Strategie, Forex Trading Strategie, Forex Scalping Forex Strategie Schaff Trend ist kaum etwas revolutionär und neu, aber es ist ziemlich rentabel und einfach für eine beträchtliche Zeit, und es basiert auf dem gleichen Display schaff Trendzyklus, die Wird ergänzt durch einen Indikator stochastisch. Für den Handel empfehle ich, einen der Makler zu wählen: FxPro oder Alpari (fügt 101 Ablagerung) hellip Strategie Forex 171Moho187 basiert auf einer Reihe von Standardindikatoren: MACD Indikator definiert den zugrunde liegenden Trend (Richtung des Handels), Momentum 8212 zeigt die aktuelle Stimmung Des Marktes, und die Fraktale Indikator bietet einen Einstiegspunkt, so dass die Strategie bietet einen guten Gewinn innerhalb eines Trends, aber es bedeutet nicht, dass ist die hellip Heute veröffentlichen wir eine ziemlich einfache, aber effektive Strategie Forex 171The double zero187, in Die nur ein Indikator und das runde Preisniveau mit dem Ende in zwei Nullen (für den vierstelligen Makler). Für den Handel empfehle ich, einen der Makler zu wählen: FxPro oder Alpari (fügt 50 Einzahlungen) Trotz der Einfachheit dieser Strategie ist hellip Strategy forex 171Fox187 ziemlich übertriebene Risiken und diese Tatsache muss berücksichtigt werden, wenn Sie es in Ihr Trading Set (Portfolio ) 8212 das Verhältnis von Gewinn Stop Verlust in Transaktionen ist manchmal nicht in der Trader8217s Bevorzugung, aber die hohe Genauigkeit der Signale am Eingang zum Markt und zusätzliche Filter hellx Forex Strategie 171mbush187 auf den ersten Blick könnte es ein bisschen verwirrend und kompliziert, Und wirklich für die Backtesting der Strategie erfordert erhebliche Geduld und Gründlichkeit, aber im realen Handel ist der ganze Prozess ganz einfach und logisch: das Hauptsignal wird im H4-Intervall erwartet, wo wir die Richtung des Handels bestimmen. Nächstes hellip Download MT4-Indikator - Money Management Calculator: MetaTrader 5 - Trading Systems 80-20 Handelsstrategie Einleitung 80-20 ist ein Name einer der Trading-Strategien (TS), die im Buch Street Smarts beschrieben sind: High Probability Short-Term Trading Strategies Von Linda Raschke und Laurence Connors. Ähnlich wie die in meinem vorherigen Artikel besprochenen Strategien. Die Autoren schreiben es auf die Bühne, wenn der Preis die Reichweitengrenzen prüft. Es konzentriert sich auch darauf, von falschen Ausbrüchen und Roll-backs von den Grenzen zu profitieren. Aber dieses Mal analysieren wir die Preisbewegung auf einem deutlich kürzeren Verlaufsintervall, das nur am Vortag beinhaltet. Die Lebensdauer eines erhaltenen Signals ist auch relativ kurz, da das System für den Intraday-Handel gedacht ist. Das erste Ziel des Artikels ist es, die Entwicklung der 80-20 Trading-Strategie-Signal-Modul mit MQL5-Sprache zu beschreiben. Dann werden wir dieses Modul an die leicht bearbeitete Version des grundlegenden Handelsroboters anschließen, der im vorherigen Artikel der Serie entwickelt wurde. Außerdem werden wir das gleiche Modul für die Entwicklung eines Indikators für den manuellen Handel verwenden. Wie bereits erwähnt, richtet sich der in der Artikelserie vorgesehene Code vor allem an leicht fortgeschrittenen Anfängern. Deshalb ist der Code neben seinem Hauptziel so konzipiert, dass er von der prozeduralen Programmierung zum objektorientierten übergehen kann. Der Code enthält keine Klassen. Stattdessen wird es vollständig implementieren Strukturen, die einfacher zu meistern sind. Ein weiteres Ziel des Artikels ist es, Werkzeuge zu entwickeln, die es uns ermöglichen zu überprüfen, ob die Strategie heute noch lebensfähig ist, da Raschke und Connors das Marktverhalten am Ende des letzten Jahrhunderts bei der Erstellung des Marktes einsetzten. Ein paar EA-Tests, die auf den aktuellen History-Daten basieren, werden am Ende des Artikels präsentiert. 80-20 Handelssystem Die Autoren nennen George Taylors Die Taylor Trading Technik. Sowie Steve Moores arbeitet an der Computeranalyse von Futures-Märkten und Derek Gipsons Handelserfahrung als theoretische Basis für ihre eigene Arbeit. Das Wesen der Handelsstrategie lässt sich kurz wie folgt beschreiben: Wenn die vorherigen Tage Open - und Close-Preise an den entgegengesetzten Tagesbereichen liegen, dann ist die Wahrscheinlichkeit einer Umkehrung in die vorangegangenen Tage heute sehr hoch. Die vorherigen Tage Öffnen und Schließen Preise sollten in der Nähe der Reichweite Grenzen zu finden. Die Umkehrung sollte den aktuellen Tag beginnen (nicht vor den vorherigen Tagen ist die Kerze geschlossen). Die Strategie Regeln für den Kauf sind wie folgt: 1. Stellen Sie sicher, dass der Markt in den oberen 20 eröffnet und geschlossen in der unteren 20 der täglichen Bereich gestern 2. Warten bis heute Tief Pausen der vorherigen Tage ein mindestens durch 5 Zecken 3. Setzen Sie einen Kauf ausstehende Bestellung auf den unteren Rand des gestern Bereichs 4. Sobald die ausstehende Bestellung auslöst, setzen Sie seine anfängliche StopLoss an den Tagen niedrig 5. Verwenden Sie nachlaufende Anschlag, um den erhaltenen Gewinn zu schützen Verkaufen Einreise Regeln sind ähnlich, aber die gestern bar sollte Sei bullisch, ein Kaufauftrag sollte am oberen Rand der Bar liegen, während StopLoss am heutigen High platziert werden sollte. Ein weiteres wichtiges Detail ist eine Größe einer geschlossenen Tagesbar. Laut Linda Raschke sollte es groß genug sein - mehr als die durchschnittliche Größe der Tagesbarren. Allerdings gibt sie nicht an, wie viele Geschichtstage bei der Berechnung des durchschnittlichen Tagesbereichs berücksichtigt werden sollten. Wir sollten auch bedenken, dass die TS ausschließlich für Intraday-Trading-Beispiele, die in der Buch-M15-Charts gezeigt werden, entworfen ist. Der Signalblock und die Indikatoren, die nach der Strategie ein Layout bilden, werden nachfolgend beschrieben. Sie können auch einige Screenshots mit den Indikatoroperationsergebnissen sehen. Sie verdeutlichen eindeutig Muster, die den Systemregeln und den mit den Mustern verbundenen Handelsebenen entsprechen. Die Musteranalyse sollte dazu führen, dass ein Kauf ausstehender Auftrag vergeben wird. Angemessene Handelsniveaus werden besser auf M1-Zeitrahmen gesehen: Ein ähnliches Muster mit der entgegengesetzten Handelsrichtung auf M5-Zeitrahmen: Sein Handelsniveau (M1-Zeitrahmen): Signalmodul Lets add Take Profit-Level-Berechnung, um das Hinzufügen neuer Optionen zu einem benutzerdefinierten TS zu veranschaulichen. Es gibt kein solches Niveau in der ursprünglichen Version, da nur ein nachlaufender Stopp verwendet wird, um eine Position zu schließen. Lets make Take Profit abhängig von der benutzerdefinierten minimalen Breakout Level (TS8020ExtremumBreak) werden wir es mit dem TS8020TakeProfitRatio Custom Ratio multiplizieren. Wir benötigen die folgenden Elemente der feGetEntrySignal-Signalmodule Hauptfunktion: aktueller Signalstatus, berechnete Ein - und Ausstiegsstufen (Stop Loss and Take Profit) sowie gestern Grenzen. Alle Ebenen werden über Links zu den an die Funktion übergebenen Variablen empfangen, während die Signale Rückgabestatus die Liste der Optionen aus dem vorherigen Artikel verwendet: enum ENUMENTRYSIGNAL ENTRYBUY, Kaufsignal ENTRYSELL, Verkaufssignal ENTRYNONE, kein Signal ENTRYUNKNOWN Status nicht definiert ENUMENTRYSIGNAL feGetEntrySignal ( D1 zwei Kerzenmusteranalyse datetime tTime, aktuelle Zeit Doppelverstärker dEntryLevel, Einstiegsebene (Link zur Variablen) Doppelverstärker dSL, StopLoss Level (Link zur Variablen) Doppelverstärker dTP, TakeProfit Level (Link zur Variablen) Doppelverstärker dRangeHigh , High of the patterns 1. st bar (link to the variable) double amp dRangeLow Low of the patterns 1. st bar (Link zur Variable)) Um ein Signal zu erkennen, müssen wir die letzten beiden Takte des D1-Zeitrahmens analysieren. Lässt uns von der ersten anfangen, wenn es nicht den TS-Kriterien entspricht, es besteht keine Notwendigkeit, den zweiten Balken zu überprüfen. Es gibt zwei Kriterien: 1. Die Balkengröße (Differenz zwischen Hoch und Niedrig) sollte den Durchschnittswert für die letzten XX Tage überschreiten (eingestellt durch die benutzerdefinierte Einstellung TS8020D1AveragePeriod). 2. Bar Open und Close Levels sollten sich an der Gegenseite von 20 befinden Der Stabbereich Wenn diese Bedingungen erfüllt sind, sollten hohe und niedrige Preise für die weitere Verwendung gespeichert werden. Da sich die ersten Balkenparameter nicht innerhalb des ganzen Tages ändern, ist es bei jedem Funktionsaufruf nicht sinnvoll, sie zu überprüfen. Lässt sie in statischen Variablen speichern: benutzerdefinierte Einstellungen Eingabe uint TS8020D1AveragePeriod 20 80-20: Anzahl der Tage für die Berechnung der durchschnittlichen täglichen Bereichseingabe uint TS8020ExtremumBreak 50 80-20: Minimaler Ausbruch des gestern Extremums (in Punkten) statisch ENUMENTRYSIGNAL sePossibleSignal ENTRYUNKNOWN Muster zuerst Stabsignalrichtung statische Doppelvariablen für die Speicherung der berechneten Pegel zwischen den Zecken sdEntryLevel 0, sdSL 0. sdTP 0, sdRangeHigh 0. sdRangeLow 0 prüfe die Musterleiste auf D1: if (sePossibleSignal ENTRYUNKNOWN) stLastD1Bar tCurrD1Bar 1 st bar ändert sich nicht diesen Tag Durchschnitt Tägliche Reichweite doppelte dAverageBarRange fdAverageBarRange (TS8020D1AveragePeriod, PERIODD1.TTime) if (ma Plätze 0.high ma Potenzial 0.low lt dAverageBarRange) 1 st bar ist nicht groß genug sePossibleSignal ENTRYNONE bedeutet kein Signal heute zurück (sePossibleSignal) double d20Percents 0.2 (maRates 0.hoch Ma Tarife 0.low) 20 der verstorbenen Strecke if ((bearish bar: ma Plätze 0.open gt maPreise 0.high d20Präsentiere bar eröffnet in den oberen 20 ampamp maPreise 0.close lt ma Potenzial 0.low d20Percents und geschlossen in den unteren 20) (Bullish: ma Plätze 0.close gt ma Potenzial 0.high d20Präsentiere bar geschlossen in den oberen 20 ampamp maPreise 0.open lt ma Potenzial 0.low d20Percents und eröffnet in den unteren 20)) 1. Stab entspricht den Bedingungen definieren die heutige Handelsrichtung für Die muster 1 st bar: sePossibleSignal maPreise 0.open gt ma Potenzial 0.close. ENTRYBUY ENTRYSELL Markteintritt: sdEntryLevel dEntryLevel sePossibleSignal ENTRYBUY. Ma. Ma papiere 0.hochmuster 1 st bar grenzbereich: sdRangeHigh dRangeHigh ma Konditionen 0.high sdRangeLow dRangeLow maPreise 0.low sonst 1 st bar openclose Niveaus entsprechen nicht den Bedingungen sePossibleSignal ENTRYNONE bedeutet kein Signal heute zurück (sePossibleSignal) Auflistung der Funktion zur Definition der Durchschnittlicher Balkenbereich innerhalb der angegebenen Anzahl von Balken auf dem angegebenen Zeitrahmen beginnend mit der angegebenen Zeitfunktion: double fdAverageBarRange (Berechnen Sie die durchschnittliche Balkengröße int iBarsLimit, wie viele Takte, um die ENUMTIMEFRAMES eTF PERIODCURRENT zu betrachten. Zeitschaltuhr Zeitpunkt tTime WRONGVALUE, wenn die Berechnung beginnen) double DAverageRange 0 Variable zur Summierung von Werten if (iBarsLimit lt 1) return (dAverageRange) MqlPreise ma Verweise bar info array erhalten bar info aus dem angegebenen geschichtsintervall: if (tTime WRONGVALUE) tTime TimeCurrent () int iPriceBars CopyPreise (Symbol eTF, tTime, iBarsLimit , Mo) Wenn (iPriceBars WRONGVALUE) if (LogLevel gt LOGLEVELNONE) PrintFormat (s: CopyRates: Fehler u. FUNKTION. LastError) Rückgabe (dAverageRange) if (iPriceBars lt iBarsLimit) if (LogLevel gt LOGLEVELNONE) DruckFormat (s: Kopierpreise: kopiert u bar von u. FUNKTION iPriceBars, iBarsLimit) Summe der Bereiche: int iBar iPriceBars while (iBar-- gt 0 ) Es gibt nur ein Kriterium für die Muster Zweite (aktuelle) Bar Ausbruch der gestern Bereich Grenze sollte nicht kleiner sein als die in den Einstellungen (die in den Einstellungen angegeben) (x) TS8020ExtremumBreak). Sobald der Pegel erreicht ist, erscheint ein Signal für die Platzierung eines ausstehenden Auftrags: Überprüfen Sie die Muster 2 (dd.) Stab auf D1: if (sePossibleSignal ENTRYBUY) sdSL dSL ma Posten 1.low StopLoss zum heutigen Hoch if (TS8020TakeProfitRatio gt 0 ) SdTP dTP dEntryLevel Punkt TS8020ExtremumBreak TS8020TakeProfitRatio TakeProfit Rückkehr (ist der Abwärtsausbruch deutlich gesehen Ma Plänen 1.close lt ma Posten 0.low Point TS8020ExtremumBreak ENTRYBUY ENTRYNONE) if (sePossibleSignal ENTRYSELL) sdSL dSL ma Posten 1.high StopLoss zum heutigen Niedrig if (TS8020TakeProfitRatio Gt 0) sdTP dTP dEntryLevel Punkt TS8020ExtremumBreak TS8020TakeProfitRatio TakeProfit Rückkehr (ist der Aufwärtsausbruch deutlich sichtbar) Maße 1.close gt ma Potenzial 0.Hochpunkt TS8020ExtremumBreak ENTRYSELL ENTRYNONE) Speichern Sie die beiden oben genannten Funktionen (feGetEntrySignal und fdAverageBarRange) und die benutzerdefinierten Einstellungen im Zusammenhang mit Empfängt ein Signal an die mqh-Bibliotheksdatei. Die vollständige Auflistung ist unten beigefügt. Ermöglicht die Datei Signal80-20.mqh und platziere sie in das entsprechende Verzeichnis des Terminal-Datenordners (MQL5IncludeExpertSignal). Indikator für den manuellen Handel Wie bei der EA ist die Anzeige auch das oben beschriebene Signalmodul zu verwenden. Der Indikator sollte einen Händler darüber informieren, dass er ein ausstehendes Order-Placement-Signal empfängt und die berechnete Level-Order-Platzierung zur Verfügung stellt. Nehmen Sie Profit - und Stop-Loss-Levels ein. Ein Benutzer kann eine Benachrichtigungsmethode ein Standard-Popup-Fenster, eine E-Mail-Benachrichtigung oder eine Push-Benachrichtigung auswählen. Es ist möglich, alle auf einmal oder eine beliebige Kombination zu wählen. Ein weiteres Indikatorziel ist ein Trading History Layout nach 80-20 TS. Der Indikator soll die täglichen Balken hervorheben, die den Systemkriterien entsprechen und die gebuchten Handelsebenen entsprechen. Die Pegellinien zeigen, wie sich die Situation im Laufe der Zeit entwickelt hat. Für mehr Klarheit, wie folgt: Wenn der Preis die Signalleitung berührt, wird dieser durch eine ausstehende Auftragslinie ersetzt. Wenn die ausstehende Bestellung aktiviert ist, wird ihre Linie durch Take Profit und Stop Loss Linien ersetzt. Diese Zeilen werden unterbrochen, wenn der Preis einen von ihnen berührt (die Bestellung ist geschlossen). Dieses Layout macht es einfacher, die Effizienz der Handelssystemregeln zu bewerten und zu definieren, was verbessert werden kann. Beginnen wir mit der Deklaration der Puffer und deren Anzeigeparameter. Zuerst müssen wir die beiden Puffer mit der vertikalen Flächenfüllung (DRAWFILLING) deklarieren. Die erste ist, um die volle tägliche Bar-Bereich des Vortages zu markieren, während eine andere ist, um den inneren Bereich nur zu markieren, um es von der oberen und unteren 20 des Bereichs in TS zu trennen. Danach deklariere die beiden Puffer für die mehrfarbige Signalleitung und die ausstehende Auftragszeile (DRAWCOLORLINE). Ihre Farbe hängt von der Handelsrichtung ab. Es gibt noch zwei Zeilen (Take Proft und Stop Loss) mit ihrer Farbe bleiben die gleichen (DRAWLINE) sie sind, die gleichen Standardfarben zu verwenden, die ihnen im Terminal zugeordnet sind. Alle ausgewählten Anzeigetypen, mit Ausnahme einer einfachen Zeile, benötigen jeweils zwei Puffer, daher sieht der Code wie folgt aus: property indicatorchartwindow property indicatorbuffers 10 property indicatorplots 6 property indicatorlabel1 1 st bar der pattern property indicatortype1 DRAWFILLING property indicatorcolor1 clrDeepPink. ClrDodgerBlue property indicatorwidth1 1 property indicatorlabel2 1 st bar der Mustereigenschaft indicatortype2 DRAWFILLING property indicatorcolor2 clrDeepPink. ClrDodgerBlue property indicatorwidth2 1 property indicatorlabel3 Signalleveleigenschaft indicatortype3 DRAWCOLORLINE property indicatorstyle3 STYLESOLID property indicatorcolor3 clrDeepPink. ClrDodgerBlue property indicatorwidth3 2 property indicatorlabel4 Einstiegseigenschaft indicatortype4 DRAWCOLORLINE property indicatorstyle4 STYLEDASHDOT property indicatorcolor4 clrDeepPink. ClrDodgerBlue property indicatorwidth4 2 property indicatorlabel5 Stop Loss property indicatortype5 DRAWLINE property indicatorstyle5 STYLEDASHDOTDOT property indicatorcolor5 clrCrimson property indicatorwidth5 1 property indicatorlabel6 Take Profit property indicatortype6 DRAWLINE property indicatorstyle6 STYLEDASHDOTDOT property indicatorcolor6 clrLime property indicatorwidth6 1 Ermöglicht den Händlern die Möglichkeit, die Befüllung der täglichen Muster zu deaktivieren Erste Balken, wählen Sie die Signal-Benachrichtigungsoptionen und begrenzen die Historie-Layout-Tiefe. Alle Handelssystemeinstellungen aus dem Signalmodul sind hier ebenfalls enthalten. Um dies zu tun, müssen wir die im Modul verwendeten Variablen vorläufig auflisten, auch wenn einige von ihnen nur in der EA verwendet werden sollen und im Indikator keine Notwendigkeit haben: include ltExpertSignalSignal80- 20.mqhgt 80-20 TS Signalmodul-Eingang Bool ShowOuter true 1 st bar des Musters: Gesamteingang anzeigen bool ShowInner true 1 st bar des Musters: Zeige den inneren Bereichseingang bool AlertPopup true Alert: Ein Popup-Fenster anzeigen bool AlertEmail false Alert: Senden Sie eine eMail Eingabe-String AlertEmailSubj Alert: eMail-Betreff-Eingang bool AlertPush true Alert: Senden einer Push-Benachrichtigungseingabe uint BarsLimit 2000 Historie-Layout-Tiefe (in den aktuellen TF-Balken) ENUMLOGLEVEL LogLevel LOGLEVELNONE Logging-Modus double buff1stBarOuter, buff1stBarOuterZero, Puffer für das Plotten des gesamten Spektrums der Muster 1 st bar buff1stBarInner, buff1stBarInnerZero, Puffer für das Plotten der internen 60 der Muster 1 st bar buffSignal, buffSignalColor, Signalleitung Puffer buffEntry, buffEntryColor, ausstehende Order Line Puffer buffSL, BuffTP, StopLoss und TakeProfit Linien Puffer gdExtremumBreak 0 TS8020ExtremumBreak in Symbolpreise int GiD1AveragePeriod 1. korrekter Wert für TS8020D1AveragePeriod giMinBars WRONGVALUE minimal erforderliche Anzahl von Stäben für die Re-Berechnung int OnInit () überprüft den eingegebenen TS8020D1AveragePeriod-Parameter: giD1AveragePeriod int (fmin (1. TS8020D1AveragePeriod)) Umwandlung von Punkten in Symbolpreise: gdExtremumBreak TS8020ExtremumBreak Point Minimum erforderliche Anzahl Der Balken für die Re-Berechnung Anzahl der Takte des aktuellen TF innerhalb eines Tages giMinBars int (86400 PeriodSeconds ()) Indikator Puffer Ziel: 1 St Balken Vollbereich Rechteck SetIndexBuffer (0. buff1stBarOuter, INDICATORDATA) PlotIndexSetDouble (0. PLOTEMPTYVALUE. 0) SetIndexBuffer (1. buff1stBarOuterZero, INDICATORDATA) 1 St bar Innenbereich Rechteck SetIndexBuffer (2. buff1stBarInner, INDICATORDATA) PlotIndexSetDouble (1. PLOTEMPTYVALUE 0) SetIndexBuffer (3. buff1stBarInnerZero, INDICATORDATA) Signalleitung SetIndexBuffer (4. buffSignal, INDICATORDATA) PlotIndexSetDouble (2. PLOTEMPTYVALUE 0) SetIndexBuffer (5. buffEntryColor, INDICATORCOLORINDEX) SL-Zeile SetIndexBuffer (8. BuffEntryColor, INDICATORCOLORINDEX) Aufgezeichnete Auftragsplatzierungszeile SetIndexBuffer (6. buffEntry, INDICATORDATA) PlotIndexSetDouble (3. PLOTEMPTYVALUE) BuffSl, INDICATORDATA) PlotIndexSetDouble (4. PLOTEMPTYVALUE 0) TP-Zeile SetIndexBuffer (9. BuffTP, INDICATORDATA) PlotIndexSetDouble (5. PLOTEMPTYVALUE 0) IndicatorSetInteger (INDICATORDIGITS Ziffern) IndicatorSetString (INDICATORSHORTNAME 80-20 TS) Platzieren Sie den Hauptprogrammcode Auf die eingebaute OnCalculate-Funktion die Loop für die Iteration über die aktuellen Zeitrahmen Bars von der Vergangenheit auf die Zukunft suchen sie für ein Signal mit der Funktion aus dem Signal-Modul. Deklarieren und initialisieren Sie die notwendigen Variablen mit Anfangswerten. Lets definieren die älteste Loop-Leiste für die erste Berechnung unter Berücksichtigung einer benutzerdefinierten Historie Tiefe Limit (BarsLimit). Für nachfolgende Anrufe werden alle Stäbe des aktuellen Tages (anstelle des letzten Taktes) neu berechnet, da das Zwei-Stab-Muster tatsächlich dem D1-Diagramm gehört, unabhängig vom aktuellen Zeitrahmen. Außerdem sollten wir vor den sogenannten Phantomen schützen: Wenn wir während der Neuinitialisierung keine Zwangsindikatorpuffer auslösen, so bleiben bei der zeitlichen oder zeitlichen Verknüpfung nicht mehr relevante gefüllte Bereiche auf dem Bildschirm. Der Puffer-Clearing sollte nach der Indikator-Initialisierung an den ersten OnCalculate-Funktionsaufruf gebunden werden. Allerdings reicht die standardmäßige vorvariable Variable nicht aus, um festzulegen, ob der Aufruf der erste ist, da er nicht nur während des ersten Funktionsaufrufs Null enthalten kann, sondern auch beim Ändern der Prüfsumme. Ermöglicht es, einige Zeit zu beheben, um dieses Problem ordnungsgemäß zu lösen, indem wir die Struktur, die nicht durch die Einstellung der vorberechneten Variablen auf Null beeinflusst wird, Die Struktur besteht darin, Daten, die häufig in den Indikatoren verwendet werden, zu speichern und zu verarbeiten: - Flag der OnCalculate-Funktion zum ersten Start - der Zähler der berechneten Balken, der beim Ändern der Prüfsumme nicht auf Null gesetzt ist - Flag der Änderung der Prüfsumme - Flag des Anfangs von Eine neue Bar - aktuelle Bar Startzeit. Die Struktur, die alle diese Daten kombiniert, soll auf globaler Ebene deklariert werden. Es sollte in der Lage sein, Daten aus irgendwelchen eingebauten oder benutzerdefinierten Funktionen zu sammeln oder zu präsentieren. Lets Name dieser Struktur Brownie. Es kann bis zum Ende des Indikator-Codes platziert werden. Ein einziges globales Typ-Strukturobjekt namens goBrownie soll auch dort deklariert werden: struct BROWNIE datetime tLastBarZeitzeit des letzten verarbeiteten Balkens int iPrewCalculated Anzahl der berechneten Balken bool bFirstRun first launch flag bool bHistoryUpdated history update flag bool bIsNewBar new bar opening flag BROWNIE ( Standardwerte): tLastBarTime 0 iPrewCalculated WRONGVALUE bFirstRun bIsNewBar wahr bHistoryUpdated falsch Leere fReset (bool bResetFirstRun true) Standardwerte: tLastBarTime 0 iPrewCalculated WRONGVALUE if (bResetFirstRun) bFirstRun wahr auf Null gesetzt, wenn es die Erlaubnis ist bIsNewBar wahr bHistoryUpdated falsch Leere fUpdate (int iNewPrewCalculated WRONGVALUE ) Flag der OnCalculate eingebaute Funktion zuerst anrufen, wenn (bFirstRun ampamp iPrewCalculated gt 0) bFirstRun false neue bar datetime tThisBarTime TimeCurrent () - TimeCurrent () PeriodSeconds () bIsNewBar tLastBarTime tThisBarTime aktualisieren die aktuelle Bar Zeit if (bIsNewBar) tLastBarTime tThisBarTime if (INewPrewCalculated gt - 1) gibt es irgendwelche Änderungen in der Geschichte bHistoryUpdated iNewPrewCalculated 0 ampamp iPrewCalculated gt WRONGVALUE Verwendung vorwccculiert im Falle von OnCalculate 1. Aufruf if (iPrewCalculated WRONGVALUE) iPrewCalculated iNewPrewCalculated oder wenn es keine Historie Update sonst, wenn (iNewPrewCalculated gt 0) iPrewCalculated INewPrewCalculated BROWNIE goBrownie Lets informiere den Brownie des Indikator-De-Initialisierungsereignisses: void OnDeinit (const int reason) goBrownie. fReset () informiere Brownie Wenn nötig, kann die Datenmenge, die von der Brownie gespeichert wird, erweitert werden, wenn benutzerdefinierte Funktionen oder Klassen Preise benötigen , Volumina oder die aktuellen Balken verteilen Wert (Open, High, Low, Close, Tickvolume, Volume, Spread). Es ist bequemer, fertige Daten aus der OnCalculate-Funktion zu verwenden und sie über Brownie zu übergeben, anstatt die Zeitreihen-Kopierfunktionen (CopyOpen, CopyHigh etc. oder CopyRates) zu verwenden. Das spart die CPU-Ressourcen und eliminiert die Notwendigkeit, die Verarbeitung von Fehlern zu arrangieren Dieser Sprachfunktionen. Lässt uns zurück zur Hauptindikatorfunktion kommen. Das Deklarieren von Variablen und die Vorbereitung der Arrays mit der goBrownie-Struktur sehen wie folgt aus: goBrownie. fUpdate (prevcculierte) Feeddaten an Brownie int iPeriodBar 0. Hilfszähler iCurrentTFBar ratestotal - int (BarsLimit) Balkenindex der aktuellen TF-Schleife starten statische datetime stLastD1Bar 0 Zeit Der letzten verarbeiteten Leiste des Paares von D1-Balken (Muster 2 nd bar) statisch int si1stBarofDay 0 Index der aktuellen Tage erste Bar if (goBrownie. bFirstRun) lösche die Puffer während der Neuinitialisierung: ArrayInitialize (buff1stBarInner, 0) ArrayInitialize ( (Buff1stBarOuterZero, 0) ArrayInitialize (buff1stBarOuterZero, 0) ArrayInitialize (buffEntry, 0) ArrayInitialize (buffEntryColor, 0) ArrayInitialize (buffSignal, 0) ArrayInitialize (buffSignalColor, 0) ArrayInitialize (buffTP, 0) ArrayInitialize (buffSL, 0) stLastD1Bar 0 si1stBarofDay 0 else datetime tTime TimeCurrent () minimale Re-Berechnungstiefe - ab dem Vortag: iCurrentTFBar ratestotal - Bars (Symbol. PERIODCURRENT TTime - tTime 86400. tTime) - 1 ENUMENTRYSIGNAL eSignal ENTRYUNKNOWN signal double dSL WRONGVALUE. SL-Ebene dTP WRONGVALUE. TP-Ebene dEntryLevel WRONGVALUE. Einstieg dRangeHigh WRONGVALUE. DRangeLow WRONGVALUE Ränder der Muster 1. Stabbereich datetime tCurrD1Bar 0. Strom D1 bar Zeit (Muster 2 nd bar) tD1BarToFill 0 D1 bar Zeit zu befüllen (Muster 1 st bar) stellen Sie sicher, dass der ursprüngliche Re-Berechnungs-Bar-Index innerhalb akzeptabel ist Bereich: iCurrentTFBar int (fmax (0. fmin (iCurrentTFBar, ratestotal - giMinBars))) während (iCurrentTFBar lt ratestotal ampamp. IsStopped ()) die Hauptprogrammschleife befindet sich hier. Überprüfen Sie das Vorhandensein eines Signals bei der Iteration über den Strom Zeitrahmen: eSignal feGetEntrySignal (Zeit iCurrentTFBar, dEntryLevel, dSL, dTP, dRangeHigh, dRangeLow) if (eSignal gt 1) setzt kein Signal während des Tages ein, an dem die Bar gehört Wenn es ein Signal an einem neuen Tage ersten Takt gibt, ist die Reichweite von Die vorherige tägliche Bar sollte gefüllt werden. Der Wert der tD1BarToFill-Variablen des Datetime-Typs wird als Flag verwendet. Wenn es gleich WRONGVALUE ist, ist an dieser Leiste keine Füllung erforderlich. Die Signalleitung sollte an der gleichen ersten Leiste beginnen, aber verlängert sie auf die letzte Leiste des Vortages für eine bessere Layoutwahrnehmung. Da die Berechnungen einer Signalleitung sowie Linien - und Füllfarben für bullish und bearish Bars unterschiedlich sind, können wir zwei ähnliche Blöcke machen: tCurrD1Bar Zeit iCurrentTFBar Zeit iCurrentTFBar 86400 Beginn des Tages gehört die Bar zu if (stLastD1Bar lt tCurrD1Bar) tD1BarToFill Zeit iCurrentTFBar 1 Zeit iCurrentTFBar 1 86400 si1stBarofDay iCurrentTFBar sonst tD1BarToFill WRONGVALUE vorherige Tagesleiste, keine neue Füllung erforderlich stLastD1Bar tCurrD1Bar erinnern, wenn (tD1BarToFill WRONGVALUE) Füllen der vorherigen Tage D1 bar: iPeriodBar iCurrentTFBar if (dEntryLevel lt dRangeHigh) if (ShowOuter) while (- - iPeriodBar gt 0), wenn (Time iPeriodBar lt tD1BarToFill) brechen buff1stBarOuterZeroiPeriodBar dRangeLow buff1stBarOuteriPeriodBar dRangeHigh if (ShowInner) iPeriodBar iCurrentTFBar während (--iPeriodBar gt 0), wenn (Time iPeriodBar lt tD1BarToFill) brechen buff1stBarInnerZeroiPeriodBar dRangeLow 0,2 (dRangeHigh dRangeLow) buff1stBarInneriPeriodBar dRangeHigh 0.2 ( dRangeHigh dRangeLow) Start der Signalleitung von den vorherigen Tagen letzten Takt buffSignaliCurrentTFBar buffSignaliCurrentTFBar 1 dRangeLow gdExtremumBreak buffSignalColoriCurrentTFBar buffSignalColoriCurrentTFBar 1 0 else if (ShowOuter), während (--iPeriodBar gt 0), wenn (Time iPeriodBar lt tD1BarToFill) brechen buff1stBarOuterZeroiPeriodBar dRangeHigh buff1stBarOuteriPeriodBar dRangeLow if ( ShowInner) iPeriodBar iCurrentTFBar während (--iPeriodBar gt 0), wenn (Time iPeriodBar lt tD1BarToFill) brechen buff1stBarInnerZeroiPeriodBar dRangeHigh 0,2 (dRangeHigh dRangeLow) buff1stBarInneriPeriodBar dRangeLow 0,2 (dRangeHigh dRangeLow) Start der Signalleitung von den vorherigen Tagen letzten Takt buffSignaliCurrentTFBar buffSignaliCurrentTFBar 1 dRangeHigh gdExtremumBreak BuffSignalColoriCurrentTFBar buffSignalColoriCurrentTFBar 1 1 sonst weiter Alle verbleibenden Layoutlinien sind innerhalb der aktuellen Zeitrahmenleisten-Iterationsschleife aufgetragen. Wie bereits erwähnt, sollte die Signalleitung an der Bar enden, wo der Preis es berührte. Die anstehende Auftragslinie sollte an der gleichen Stange beginnen und auf der Stange enden, an der der Kontakt mit dem Preis erfolgt. Nehmen Sie Profit und Stop Loss Linien sollten an der gleichen Bar beginnen. Das Layout des Musters ist an der Leiste beendet, bei der der Preis eine von ihnen berührt: Signalleitung bis über eine Bar gekreuzt: iPeriodBar iCurrentTFBar if (dEntryLevel lt dRangeHigh) while (iPeriodBar lt ratestotal) if (Time iPeriodBar gt tCurrD1Bar 86399) brechen buffSignaliPeriodBar dRangeLow gdExtremumBreak buffSignalColoriPeriodBar 0 if (dRangeLow gdExtremumBreak gt Low iPeriodBar) brechen sonst während (iPeriodBar lt ratestotal), wenn (Time iPeriodBar gt tCurrD1Bar 86399) brechen buffSignaliPeriodBar dRangeHigh gdExtremumBreak buffSignalColoriPeriodBar 1 if (dRangeHigh gdExtremumBreak lt Hohe iPeriodBar) Pause Eingabezeile bis gekreuzt durch A bar: if (dEntryLevel lt dRangeHigh) während (iPeriodBar lt ratestotal) if (Zeit iPeriodBar gt tCurrD1Bar 86399) brechen buffEntryiPeriodBar dRangeLow buffEntryColoriPeriodBar 0 if (dRangeLow lt High iPeriodBar) if (buffEntryiPeriodBar 1 0.) Starten und beenden auf einer einzigen Leiste, Verlängert um 1 bar auf die Vergangenheit buffEntryiPeriodBar 1 dRangeLow buffEntryColoriPeriodBar 1 0 brechen sonst während (iPeriodBar lt ratestotal) if (Zeit iPeriodBar gt tCurrD1Bar 86399) brechen buffEntryiPeriodBar dRangeHigh buffEntryColoriPeriodBar 1 if (dRangeHigh gt Low iPeriodBar) if (buffEntryiPeriodBar 1 0.) Starten und Enden auf einer einzigen Bar, verlängern um 1 bar auf die Vergangenheit buffEntryiPeriodBar 1 dRangeHigh buffEntryColoriPeriodBar 1 1 Pause TP und SL Linien, bis einer von ihnen durch eine Bar gekreuzt wird: if (dEntryLevel lt dRangeHigh) SL ist gleich dem Low seit dem Beginn von Ein Tag: dSL Niedriges ArrayMinimum (Niedrig. Si1stBarofDay, iPeriodBar si1stBarofDay) während (iPeriodBar lt ratestotal) if (Zeit iPeriodBar gt tCurrD1Bar 86399) brechen buffSLiPeriodBar dSL buffTPiPeriodBar dTP if (dTP lt High iPeriodBar dSL gt Low iPeriodBar) Wenn (buffSLiPeriodBar 1 0.) Starten und enden auf einem einzigen Balken, Verlängern um 1 bar auf die Vergangenheit buffSLiPeriodBar 1 dSL buffTPiPeriodBar 1 dTP Pause sonst SL ist gleich dem High seit Beginn eines Tages: dSL High ArrayMaximum (High. Si1stBarofDay, iPeriodBar si1stBarofDay) während (iPeriodBar lt ratestotal) if (Time iPeriodBar gt TCurrD1Bar 86399) brechen buffSLiPeriodBar dSL buffTPiPeriodBar dTP if (dSL lt High iPeriodBar dTP gt Low iPeriodBar) Wenn (buffSLiPeriodBar 1 0.) An einem einzigen Balken starten und enden, verlängern Sie sich um 1 bar auf die Vergangenheit buffSLiPeriodBar 1 dSL buffTPiPeriodBar 1 dTP break Lets place Der Rufcode der fDoAlert-Signal-Benachrichtigung funktioniert aus der Schleife. In der Tat hat es etwas breitere Chancen im Vergleich zu denjenigen, die in diesem Indikator die Funktion ist in der Lage, mit Audiodateien zu arbeiten, was bedeutet, dass diese Option kann hinzugefügt werden, um benutzerdefinierte Einstellungen. Das gleiche gilt für die Fähigkeit, separate Dateien für Kauf und Verkauf von Signalen zu wählen. Funktionsauflistung: void fDoAlert (Funktion zum Senden von Signalen und Meldungen String sMessage, Warnmeldung bool bAlert true, ein Pop-up-Fenster anzeigen bool bSound false. Eine Sounddatei spielen bool bEmail false. Senden Sie eine eMail bool bNotification false Senden Sie eine Push-Benachrichtigung String sEmailSubject eMail Betreff String sSound Alert. wav Sound Datei) statische Zeichenfolge ssPrevMessage gab es Stille vorherige Alert-Nachricht statische datetime stPrevTime vorherige Alert Bar Zeit datetime tThisBarTime TimeCurrent () PeriodSeconds () PeriodSeconds () aktuelle Bar Zeit if (ssPrevMessage sMessage stPrevTime tThisBarTime) (Ssss, TimeToString (TimeLocal (), TIMESECONDS), Ortszeit Symbol Symbol StringSubstr (EnumToString (ENUMTIMEFRAMES (Periode)), 7), die Zeit, die Sie sich befinden, TF sMessage message) Benachrichtigungssignal aktivieren: if (bAlert) Alert (sMessage) if (bEmail) SendMail (sEmailSubject Symbol. SMessage) if (bNotification) SendNotification (sMessage) if (bSound) PlaySound (sSound) Der Code für die Überprüfung der Notwendigkeit, die Funktion aufzurufen und den Text für ihn zu bilden, befindet sich im Programmkörper vor Abschluss des OnCalculate Event Handlers: alert iPeriodBar ratestotal 1 aktueller bar if (AlertPopup AlertEmail AlertPush 0) zurück (ratestotal) all ist deaktiviert wenn (buffSignaliPeriodBar 0) zurückkehren (ratestotal) nichts zu fangen noch (oder bereits) wenn (buffSignaliPeriodBar gt High iPeriodBar buffSignaliPeriodBar lt Low iPeriodBar) zurück (ratestotal) nein Signalleitung berühren Meldung Text: String sMessage StringFormat (TS 80-20: benötigt ss, TP: s, SL: s, buffSignalColoriPeriodBar gt 0. BuyStop SellStop, DoubleToString (dEntryLevel, Digits), DoubleToString (dTP, Digits), DoubleToString ( DSL, Digits)) Benachrichtigung: fDoAlert (sMessage, AlertPopup, false AlertEmail, AlertPush, AlertEmailSubj) return (ratestotal) komplett OnCalculate-Operation Der gesamte Quellcode des Indikators befindet sich in den angehängten Dateien (TS80-20.mq5). The trading layout according to the system is best seen on minute charts. Please note that the indicator uses the bar data rather than tick sequences inside bars. This means if the price crossed several layout lines (for example, Take Profit and Stop Loss lines) on a single bar, you cannot always define which of them was crossed first. Another uncertainty stems from the fact that the start and end lines cannot coincide. Otherwise, the lines from the buffer of DRAWLINE and DRAWCOLORLINE types will simply be invisible to a user. These features reduce the layout accuracy but it still remains quite clear. Expert Advisor for testing the 80-20 trading strategy The basic EA for testing strategies from the book Street Smarts: High Probability Short-Term Trading Strategies was described in details in the first article. Lets insert two significant changes in it. First, the signal module is to be used in the indicator as well meaning it would be reasonable to set trading levels calculation in it. We have already done this above. Apart from the signal status, the feGetEntrySignal function returns order placement, Stop Loss and Take Profit levels. Therefore, lets remove the appropriate part of the code from the previous EA version adding the variables for accepting levels from the function and edit the function call itself. The listings of the old and new code blocks can be found in the attached file (strings 128-141). Another significant addition to the basic EA code is due to the fact that, unlike the previous two, this TS deals with a short-term trend. It assumes that the roll-back happens once a day and is unlikely to be repeated. This means that the robot has to make only one entry ignoring the existing signal all the rest of the time until the next day. The easiest way to implement that is to use a special flag static or global variable of bool type in the program memory. But if the EA operation is interrupted for some reason (the terminal is closed, the EA is removed from the chart, etc.), the flag value is lost as well. Thus, we should have the ability to check if todays signal was activated previously. To do this, we may analyze the history of trades for today or store the date of the last entry in the terminal global variables rather than in the program. Let us use the second option since it is much easier to implement. Provide users with the ability to manage one entry per day option and set an ID of each launched version of the robot it is needed to use global variables of the terminal level: input bool OneTrade false One position per day input uint MagicNumber 2016 EA magic number Lets add the variables necessary to implement one entry per day option to the programs global variables definition block. Initialize them in the OnInit function: string gsPrefix identifier of (super)global variables bool gbPositionToday false , gbPendingToday false Create a prefix of (super)global variable names: gsPrefix StringFormat ( SSB s u s. Symbol. MagicNumber, MQLInfoInteger ( MQLTESTER ). t . ) Has the robot worked with market or pending orders today gbPositionToday int ( GlobalVariableGet (gsPrefix LastPositionDate )) TimeCurrent () TimeCurrent () 86400 gbPendingToday int ( GlobalVariableGet (gsPrefix LastPendingDate )) TimeCurrent () TimeCurrent () 86400 Here the robot reads the values of global variables and compares the written time with the day start time, thus defining if the todays signal has already been processed. Time is written to the variables in two places lets add the appropriate block to the pending order installation code (additions highlighted): if (iTry - 10 ) if (LogLevel gt LOGLEVELNONE) Print ( Pending order placing error ) the distance from the current price is not enough :( if (LogLevel gt LOGLEVELERR) PrintFormat ( Pending order cannot be placed at the s level. Bid: s Ask: s StopLevel: s , DoubleToString (dEntryLevel, Digits ), DoubleToString (goTick. bid, Digits ), DoubleToString (goTick. ask, Digits ), DoubleToString (gdStopLevel, Digits ) ) else to update the flag: GlobalVariableSet ( in the terminal global variables gsPrefix LastPendingDate , TimeCurrent () TimeCurrent () 86400 ) gbPendingToday true in the program global variables The second block is placed after the code defining a newly opened position: if ( PositionSelect ( Symbol )) if ( PositionGetDouble ( POSITIONSL ) 0 .) if (gbPositionToday) update the flag: GlobalVariableSet ( in the terminal global variables gsPrefix LastPositionDate , TimeCurrent () TimeCurrent () 86400 ) gbPositionToday true in the program global variables . These are the only significant changes in the previous EA version code. The finalized source code of the new version is attached below. Strategy backtesting In order to illustrate the trading system viability, its authors use patterns detected on the charts from the end of the last century. Therefore, we need to check its relevance in todays market conditions. For testing, I took the most popular Forex pair EURUSD, the most volatile pair USDJPY and one of the metals XAUUSD. I increased the indents specified by Raschke and Connors 10 times, since four-digit quotes were used when the book was written, while I tested the EA on five-digit ones. Since there is no any guidance concerning the trailing parameters, I have selected the ones that seem to be most appropriate to daily timeframe and instrument volatility. The same applies to the Take Profit calculation algorithm added to the original rules the ratio for its calculation was chosen arbitrarily, without deep optimization. The balance chart when testing on the five-year EURUSD history with the original rules (no Take Profit): The same settings and Take Profit: The balance chart when testing the original rules on the five-year USDJPY history: The same settings and Take Profit: The balance chart when testing the original rules on the daily gold quotes for the last 4 years: The full data on the robot settings used in each test can be found in the attached archive containing the complete reports. Conclusion The rules programmed in the signal module match the 80-20 trading system description provided by Linda Raschke and Laurence Connors in their book Street Smarts: High Probability Short-Term Trading Strategies. However, we have extended the original rules a bit. The tools (the robot and the indicator) are to help traders draw their own conclusions concerning the TS relevance in todays market. In my humble opinion, the TS needs a serious upgrade. In this article, I have tried to make some detailed comments on developing the code of the signal module, as well as the appropriate robot and indicator. I hope, this will help those who decide to do the upgrade. Apart from modifying the rules, it is also possible to find trading instruments that fit better to the system, as well as signal detection and tracking parameters. FOREX Strategies Forex Strategy, Simple strategy, Forex Trading Strategy, Forex Scalping Forex Strategy 80-20 8212 another very simple and quite an interesting strategy forex Linda Raschke (previously we looked at 2 of its strategy: Turtle Soup, Turtle Soup plus One ), in which trade is conducted only on the daily range (D1) and trading signals are only During the 1 st trading day. Investigating the patterns of financial markets, it was noted that if the price on the market closes at the top or bottom 10 -20 of its daily range, then there is a possibility and it is 80 -90, the next morning, the price will continue to move in the same direction (ie towards the closing day candles), but eventually the price closes above or below this candle in only 50 of cases . That8217s a given fact (a chance to turn in the middle of the 2 nd day after the close of the 1 st day candles), and allowed 80-20 strategy exist and be popular in the financial markets. So, let8217s look at how deals are made in Forex Strategy 80-20 . an example of the transaction on the purchase . Suppose we open a trading terminal MetaTrader 4 today and note that: 1) Yesterday8217s daily candle was discovered in the upper 20 of its daily range and closed in the bottom 20 of its daily range. Ie If the daily candle divided into 5 parts, the opening price of yesterday8217s daily candle is in the top 1 5 of a closed candle. And the closing price is at the bottom 1 5 of the closed day candles. Figure 1. Dedicated bearish candle was discovered in 1 5 of the upper range and closed at 1 5 of its lower range 2) Today8217s daily candle opens and the price at the market went in the same direction as the close of the previous daily candle 8212 ie for sale, presumably for at least 10-15 points. 3) At this moment, when the price is already below yesterday8217s low and we have clearance to be placed pending order, we set the pending order to buy the type Buy Stop at yesterday8217s low price Figure 2. This is the same candle as in Figure 1, only the hourly interval. Expose the pending order to buy at a time when the price of the 2 nd hour candle falls below yesterday8217s low. 4) After the opening of trading positions in the purchase, we will establish a safety stop-loss orders below a few points (3-5) segodneshnego minimum. 5) Next, use a trailing stop (Universal trailing stop. the standard in Metatrader 4, or a trailing stop on the 1 st paragraph ) to lock in profits and tightens our stop-loss at a safe distance that you define for themselves, depending on the the chosen currency pair and the volatility in the forex market. For example, if the amount of daily candles 100-200 points, and trailing stop should be placed at a distance 50-70-100 points. Candle 50-70 points 8212 tryling-stop: 25-30 points. 6) If you prefer, you can put a profit target at a distance of at least 3.2 times the initial stop-loss (as required by our Money Management Forex ). Or record profits on the important Fibonacci levels. built by the first candle (38,2, 61,8) 7) Or you can simply rearrange the position of zero level. as soon as you see fit and leave the deal by the end of the trading day, and then look to close it or leave open. But I personally believe that it is better to use a trailing stop to lock in profits. For transactions on sale 8212 the rules of the opposite Figure 3. Vystalyaem pending order to sell Sell Stop, when the price broke yesterday makismum. Stop-loss is 10-15 points higher than this maximum, because price is not too moved away from him and turned around. Note: The transactions in this strategy are not as common, but if you observe the laws of several currency pairs, the probability of the conditions and the entry into the market will garazdo above By this strategy, forex trading you can buy Note: if you want to receive updates Expert Advisor - LEAVE positive feedback in the store Plati. ru without specifying e-mail in the body of reviews e-mail please indicate on the payment page 8212 which indicates where the goods will be delivered Subject to strict adherence to rules of the forex strategy 80-20, we get approximately the following trading results ( test results Adviser 80-20 strategy ): 1) Test strategies forex 80-20 8212 EURUSD (D1) with Expert Advisor 80-20 strategy 2) Test strategies forex 80-20 8212 EURJPY (D1) with Expert Advisor 80-20 strategy 3) test strategies forex 80-20 8212 USDCAD (D1) with Expert Advisor 80-20 strategyForex Strategy 80-20 - another very simple and quite an interesting strategy forex Linda Raschke (previously we looked at 2 of its strategy: Turtle Soup, Turtle Soup plus One ), in which trade is conducted only on the daily range (D1) and trading signals are only During the 1 st trading day. I recommend selecting a Broker Forex with Terminal MetaTrader 4 . Investigating the patterns of financial markets, it was noted that if the price on the market closes at the top or bottom 10 -20 of its daily range, then there is a possibility and it is 80 -90, the next morning, the price will continue to move in the same direction (ie towards the closing day candles), but eventually the price closes above or below this candle in only 50 of cases . Thatrsquos a given fact (a chance to turn in the middle of the 2 nd day after the close of the 1 st day candles), and allowed 80-20 strategy exist and be popular in the financial markets. So, letrsquos look at how deals are made in Forex Strategy 80-20 . an example of the transaction on the purchase. Suppose we open a trading terminal MetaTrader 4 today and note that: 1) Yesterdayrsquos daily candle was discovered in the upper 20 of its daily range and closed in the bottom 20 of its daily range. Ie If the daily candle divided into 5 parts, the opening price of yesterdayrsquos daily candle is in the top 1 5 of a closed candle. And the closing price is at the bottom 1 5 of the closed day candles. Figure 1. Dedicated bearish candle was discovered in 1 5 of the upper range and closed at 1 5 of its lower range 2) Todayrsquos daily candle opens and the price at the market went in the same direction as the close of the previous daily candle - ie for sale, presumably for at least 10-15 points. 3) At this moment, when the price is already below yesterdayrsquos low and we have clearance to be placed pending order, we set the pending order to buy the type Buy Stop at yesterdayrsquos low price Figure 2. This is the same candle as in Figure 1, only the hourly interval. Expose the pending order to buy at a time when the price of the 2 nd hour candle falls below yesterdayrsquos low. 4) After the opening of trading positions in the purchase, we will establish a safety stop-loss orders below a few points (3-5) segodneshnego minimum. 5) Next, use a trailing stop (Universal trailing stop. the standard in Metatrader 4, or a trailing stop on the 1 st paragraph ) to lock in profits and tightens our stop-loss at a safe distance that you define for themselves, depending on the the chosen currency pair and the volatility in the forex market. For example, if the amount of daily candles 100-200 points, and trailing stop should be placed at a distance 50-70-100 points. Candle 50-70 points - tryling-stop: 25-30 points. 6) If you prefer, you can put a profit target at a distance of at least 3.2 times the initial stop-loss (as required by our Money Management Forex ). Or record profits on the important Fibonacci levels, built by the first candle (38,2, 61,8) 7) Or you can simply rearrange the position of zero level. as soon as you see fit and leave the deal by the end of the trading day, and then look to close it or leave open. But I personally believe that it is better to use a trailing stop to lock in profits. For transactions on sale - the rules of the opposite Figure 3. Vystalyaem pending order to sell Sell Stop, when the price broke yesterday makismum. Stop-loss is 10-15 points higher than this maximum, because price is not too moved away from him and turned around. Note: The transactions in this strategy are not as common, but if you observe the laws of several currency pairs, the probability of the conditions and the entry into the market will garazdo abovBy this strategy, forex trading you Expert Advisor to the 80-20 strategy Subject to strict adherence to rules of the forex strategy 80-20, we get approximately the following trading results ( test results Adviser 80-20 strategy ): 1) Test strategies forex 80-20 - EURUSD (D1) with Expert Advisor 80-20 strategy 2) Test strategies forex 80-20 - EURJPY (D1) with Expert Advisor 80-20 strategy 3) test strategies forex 80-20 - USDCAD (D1) with Expert Advisor 80-20 strategy


Comments

Popular posts from this blog

Binär Option Strategie 2013

Forex Strategie Builder Professionell Seriell

Forex Guru V3