Tuesday 2 May 2017

80 Trading Strategien Für Anfänger


MetaTrader 5 - Trading Systems 80-20 Handelsstrategie Einleitung 80-20 ist ein Name einer der Handelsstrategien (TS), die im Buch Street Smarts beschrieben sind: Hohe Wahrscheinlichkeit Kurzfristige Handelsstrategien 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. Daher 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 Potenzial 0.low Point TS8020ExtremumBreak ENTRYBUY ENTRYNONE) if (sePossibleSignal ENTRYSELL) sdSL dSL maPreise 1.high StopLoss zum heutigen Tief, wenn (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 starten. 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) while (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). Das Trading-Layout nach dem System ist am besten in Minuten-Charts zu sehen. Bitte beachten Sie, dass der Indikator die Bar-Daten anstelle von Tick-Sequenzen in Bars verwendet. Dies bedeutet, wenn der Preis mehrere Layout-Linien (z. B. Take Profit und Stop Loss Linien) auf einer einzigen Bar, können Sie nicht immer festlegen, welche von ihnen wurde zuerst gekreuzt. Eine weitere Unsicherheit ergibt sich aus der Tatsache, dass die Start - und Endlinien nicht übereinstimmen können. Andernfalls werden die Zeilen aus dem Puffer der DRAWLINE - und DRAWCOLORLINE-Typen für einen Benutzer einfach unsichtbar. Diese Eigenschaften reduzieren die Layoutgenauigkeit, aber es bleibt noch ganz klar. Expert Advisor für die Prüfung der 80-20 Handelsstrategie Die grundlegende EA für das Testen von Strategien aus dem Buch Street Smarts: High Probability Short-Term Trading Strategies wurde im Einzelnen im ersten Artikel beschrieben. Lasst uns zwei wesentliche Änderungen einfügen. Zuerst soll das Signalmodul im Indikator verwendet werden, was bedeutet, dass es sinnvoll wäre, die Trading-Level-Berechnung in ihm festzulegen. Wir haben das schon oben gemacht. Neben dem Signalstatus gibt die Funktion feGetEntrySignal die Auftragsposition zurück, Stop Loss und Take Profit Level. 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. Best easy Forex strategies Easy forex strategies for beginners should help even novice forex market traders achieve success in their transactions. Such strategies do not require any extensive or sophisticated skills in currency trading on the Forex market, and may be applied effectively by the beginners, bringing yields. Experienced foreign market traders tend to use complicated and sophisticated trading schemes, tools and approaches for deriving the greatest results of their forex market activities. However, while such approach is suitable for professional, novice traders might prefer using simpler strategies for plunging deeper into the forex market and for achieving positive trade results at once. In this article, we are going to investigate the best easy forex trading strategies for forex traders. Breakout Forex Easy Strategy The breakout strategy is an easy forex strategy free for all beginners wishing to start gaining on forex. In der obigen Abbildung sind bärische Stäbe in roter Farbe dargestellt. With growing bearish bars, selling is getting momentum. Therefore, the trader is required to track down closely the trend for identifying when to perform trade taking into consideration the possibility of change in the current trends. The yellow circle in the picture illustrates the beginning of downtrend (which is confirmed by the fact that the new low broke the previous uptrend low). This largest red bearish bar illustrates a very strong selling momentum. Nun kann unterhalb der Bar unter Berücksichtigung der günstigen Geschäftsbedingungen ein ausstehender Verkaufsauftrag liegen. Dieser anstehende Verkaufsauftrag wird durch die gelbe gepunktete Linie in der Tabelle dargestellt. Stop-Verlust befindet sich oberhalb der Öffnung und Schließung der vorherigen Balken (SL-Linie im Bild). Das erste Take-Profit-Ziel wird durch die TP1-Linie im Bild dargestellt, und das endgültige Take-Profit-Ziel wird durch die TP2-Linie dargestellt. Die beiden Linien stehen für den vorherigen bzw. nächsten Tiefstand. So ist der Ausbruch eine ganz einfache Strategie des Devisenhandels, und das einzige, was Sie für eine effektive Umsetzung benötigen, ist, das Moment der Trendumkehr zu visualisieren und zu überprüfen, was die optimale Dynamik für den Eintritt in die Transaktion ist. Easy Forex Scalping Strategy The forex scalping strategy is one of the easy forex strategies that work even for novice traders, and it is conventionally used on short time intervals ranging from several minutes to 15 minutes or less. For achieving the best results within this strategy, only two indicators are to be applied: 200 EMA, and the stochastic indicator. The main aim of the former is to reveal the trend, and the latter is used as an oscillator showing whether the market is dominated by excessive demand or supply. Für den Kauf unter dieser besten einfachen Forex-Strategie für schnelle Transaktionen, müssen mehrere Voraussetzungen erfüllt werden. First, price needs to stay above 200 EMA. Als nächstes müssen die stochastischen Linien unter 20 Linie fahren und nach oben zeigen. Zu diesem Zeitpunkt muss der Händler schnell seinen Kaufauftrag aktivieren, sofort den Stopverlust 15 bis 20 Pips weglegen. Take profit in this case will be set to 20 to 30 pips. For selling under the easy forex scalping strategy, this works in a rather reversed way. Thus, price should be located below 200 EMA, and the stochastic lines have to be above 80 line and point downward. Next, the trader quickly activates his sell order, and places stop loss 15 to 20 pips away. Ähnlich wie die Kauf-Setup, nehmen Gewinn in diesem Fall wird auf 20 bis 30 Pips gesetzt werden. The scalping strategy described above is an easy forex strategy for beginners. Dennoch sollte man bedenken, dass es noch einige Risiken gibt. Namely, the market may be generating a number of false signals which should be monitored via the 200 EMA angle. Wenn dieser Winkel flach ist oder ist, sollte der Handel vermieden werden. Andernfalls, wenn der Händler in der Lage ist, schnelle Entscheidungen zu treffen, indem er die aktuelle Marktdynamik bewertet, kann diese Strategie auch für Anfänger-Forex-Marktteilnehmer sehr effektiv sein. 100 EMA and Parabolic Stop and Reversal Easy Forex Strategy This strategy is one of the easy forex trading strategies which beginners may effectively use in their forex trade transactions. It only uses two basic indicators for analyzing the market situations and making the ultimate buyingselling decision: 100 EMA and the parabolic SAR (stop and reversal) indicator. Für den Kauf mit dieser Strategie muss der Preis über der Linie liegen, die 100 EMA repräsentiert. Als nächstes muss ein parabolischer SAR-Punkt unterhalb eines Leuchters auftauchen. Der Trader muss nun einen ausstehenden Kaufstoppauftrag 2 Pips über dem Höhepunkt des oben erwähnten Leuchters platzieren. Stop-Verlust sollte platziert werden 2 Pips unter dem nächsten Schwung niedrig. Die vorherige Schwung hoch in diesem Fall wird als Gewinn genommen. For selling under this strategy, the conditions are contrary. Der Preis muss sich unter 100 EMA befinden und ein parabolischer SAR-Punkt muss über einem Leuchter auftauchen. The trader than places a pending sell stop order 2 pips below the low point of the candlestick mentioned above. Stop loss should be placed 2 pips above the closest swing high. The previous swing low in this case is used as take profit. Dies kann eine einfache und profitable Forex-Strategie vor allem in starken Trends Märkte sein, wo ganz offensichtliche Signale für Kauf und Verkauf entstehen. Die Verwendung von früheren Swing-Extrempunkten als Gewinnwerte ist ein weiterer Vorteil dieser Strategie, die es noch verständlicher und einfacher zu bedienen macht. Dennoch kann der Markt auch falsche Signale erzeugen, und Zeitverzögerungen können eine wichtige Rolle spielen. So sollte der Händler immer aufmerksam bleiben, um unvorhergesehene Verluste zu vermeiden. Fazit Die Strategien, die von uns in diesem Artikel betrachtet werden, machen nur einen kleinen Teil der einfachen Forex-Strategien für Anfänger, die auf dem Markt verfügbar sind. Find an easy trading strategy in forex which suits best your goals and skills, and you will be able to start effectively trading an gaining yields from the forex market.80 trading strategies for novice The system is amongst the most typically used Forex software in part for the: high shopping for and selling frequency, little stop losses, chance totrade many currencies at the identical time and effectiveness at compounding smaller accounts. Its high trading turnover is done achievable merely asa result of it can actually take and assess a heap of trades a day. On the other hand, this specific strength can be a drawback providing it demandsincreased risk taking. I would like to thank Scott for such great help and instruction with all of your program (TOW 3.0). For me your Integrity, your caring andconsideration is very much appreciated. 80 trading strategies for novice (bonus ) The Fapturbo Evolution was revealed throughout 2009 to produce a ton higher FX trading overall performance and conjointly higher profits compared tothe former edition. This Forex automatic robot is placed among the Gold category that has a rating of nine over 10 for profitability and ease of use. As regards to tech support team its rated seven over ten. It is easy to setup and theres a relevant video guide to guide folks within the setupstage. Individuals do not require in-depth data of FX shopping for and selling to begin using this software package considering that it carries outalmost all the actual task. With the Play characteristic, users just would like to let the software trade with one fr1 of their own play bucks andthey are going to determine their funds multiply each week. Video 80 trading strategies for novice Proprietary Trading Strategies: 80-90 Winner Market Analysis 80 trading strategies for novice trade. An Forex Trading Strategy Perfect For Novice Traders And Triple. Forex Strategy Trading Tips The Forex Trading Every Trader. Forex Trading for Novices. In order to build your online trading skills we offer to get started trading with one of the best online trading software. Read the top Forex softwaretrading reviews to find out more about different trading software and their advantages. Description 80 trading strategies for novice I made 0 this morning on four trades (30 70 50 70) on the CL and am calling it quits for today. Good too as I had brought my live account balancedown to 27. I have bounced off the mat and reentered the fightYahoo I would have said just like you have been saying cut the darn computer OFF. My wife had to tell me. Did great some days but wouldnt follow my ruleor your guide lines and that is after some good trades and hitting a target goal. Cut The Computer Off. You cannot stress that enough to the group. Keep up the great work P S I sound like a trader in this email. Bonus 80 trading strategies for novice. An Forex Trading Strategy Perfect For Novice Traders And Triple. Forex Strategy Trading Tips The Forex Trading Every Trader. Forex Trading for Novices. Any recommendation, opinion or advice contained in such material reflects the views of TFF, and TFF expressly disclaims any responsibility for anydecisions or for the suitability of any security or transaction based on it. Specifically, any decisions you may make to buy, sell or hold a securitybased on such research will be entirely your own and not in any way deemed to be endorsed or influenced by or attributed to TFF. For the purposes of the new series, a nearby street location serves for exterior shots 187 North Gower Street in Bloomsbury. The currentresident copes very well indeed with the crowds of tourists taking selfies outside his door (all day at the weekend) and was amused to receive aletter addressed to the actors who the Sherlock fan letter-writer believed lived inside. Interiors are shot in film studios in Cardiff. (Bonus 80 trading strategies for novice.) Had a great time at the Vegas Live Trading Event Awesome stuff to say the least. I want to attend the upcoming event as well. Love the energy 4 years. Scott, youre one of the few folks I know who can say it like it really is - no BS. I wasted 5 years in college Lots of college debt tooonce I was out - what a waste. Discovered futures trading while in college in 1990 but never successful with it. Didnt have a computer with chartsthen either (had to actually call a broker on the phone - impossible to day trade) so times have changed for the better. Thanks for everything.

No comments:

Post a Comment