MetaTrader 5 - Handelssysteme 80-20 Handelsstrategie Einführung 80-20 ist eine der Handelsstrategien (TS), die im Buch Street Smarts: High Probability Short-Term Trading Strategies von Linda Raschke und Laurence Connors beschrieben werden. Ähnlich wie die in meinem vorherigen Artikel diskutierten Strategien. Die Autoren es dem Stadium zuzuschreiben, wenn der Preis die Bereichsgrenzen prüft. Es konzentriert sich auch auf den Gewinn von falschen Breakouts und Roll-Backs von den Grenzen. Aber diesmal analysieren wir die Kursbewegung auf einem deutlich kürzeren Historienintervall mit nur dem Vortag. Die Lebensdauer eines erhaltenen Signals ist auch relativ kurz, da das System für den Intraday-Handel bestimmt 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 mit der leicht veränderten Version des grundlegenden Handelsroboters verbinden, 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, zielt der in der Artikelserie vorgesehene Code in erster Linie auf leicht fortgeschrittene Programmierer. Daher ist der Code, neben seinem Hauptziel, entworfen, um von der prozeduralen Programmierung zu der objektorientierten zu bewegen. Der Code enthält keine Klassen. Stattdessen wird es vollständig umzusetzen Strukturen, die einfacher zu meistern sind. Ein weiteres Ziel des Artikels ist es, Werkzeuge zu entwickeln, die es uns erlauben, zu überprüfen, ob die Strategie heute noch lebensfähig ist, da Raschke und Connors das Marktverhalten am Ende des letzten Jahrhunderts bei der Schaffung des Marktes genutzt haben. Ein paar EA-Tests auf der Grundlage der aktuellen Historiendaten werden am Ende des Artikels präsentiert. 80-20 Handelssystem Die Autoren nennen George Taylors die Taylor Handelstechnik. Sowie Steve Moores arbeitet an der Computeranalyse von Futures-Märkten und Derek Gipsons Handelserfahrung als theoretische Grundlage für ihre eigene Arbeit. Das Wesen der Handelsstrategie kann wie folgt kurz beschrieben werden: Liegen die vorherigen Tage Open und Close an den gegenüberliegenden Tagesbereichsgebieten, so ist die Wahrscheinlichkeit einer Umkehrung in Richtung der vorherigen Tage sehr hoch. Die vorherigen Tage öffnen und schließen Preise sollten in der Nähe der Reichweite Grenzen zu finden. Die Stornierung sollte den aktuellen Tag beginnen (nicht vor dem letzten Tag 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 schloss in den unteren 20 des täglichen Bereichs gestern 2. Warten bis heute Tief bricht die vorherigen Tage eine mindestens von 5 Zecken 3. Legen Sie einen Kauf Pending Order auf dem unteren Rand des yesterdays Bereich 4. Sobald die ausstehende Order triggers, setzen ihre anfänglichen StopLoss an den Tagen Low 5. Verwenden Sie nachlaufende Stop, um den erhaltenen Gewinn zu schützen Verkauf Eintrag Regeln sind ähnlich, aber die gestern Bar sollte Bullish sein, sollte ein Kaufauftrag an der oberen Grenze der Bar sein, während StopLoss auf dem heutigen High platziert werden sollte. Ein weiteres wichtiges Detail ist die Größe einer geschlossenen Tagesbar. Nach Linda Raschke, sollte es groß genug sein - mehr als die durchschnittliche Größe der täglichen Bars. Sie legt jedoch nicht fest, wie viele Historientage bei der Berechnung der durchschnittlichen täglichen Reichweite berücksichtigt werden sollten. Wir sollten auch bedenken, dass die TS ist ausschließlich für Intraday-Handel Beispiele in der Buch-M15-Charts gezeigt konzipiert. Der Signalblock und der Indikator, der ein Layout gemäß der Strategie bildet, werden nachfolgend beschrieben. Sie können auch sehen, ein paar Screenshots mit dem Indikator Betriebsergebnisse. Sie zeigen eindeutig Muster, die den Systemregeln und den mit den Mustern verknüpften Handelsebenen entsprechen. Die Musteranalyse sollte dazu führen, dass ein Kauf pending order. Entsprechende Handelsniveaus werden am M1-Zeitrahmen besser gesehen: Ähnliches Muster mit der entgegengesetzten Handelsrichtung auf M5-Zeitrahmen: Seine Handelsstufen (M1-Zeitrahmen): Signalmodul Ermöglicht das Hinzufügen einer Gewinnniveauberechnung, 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 Halt zum Schließen einer Position verwendet wird. Lets make Take Profit abhängig von der benutzerdefinierten minimalen Breakout-Ebene (TS8020ExtremumBreak) werden wir es durch die benutzerdefinierte Verhältnis TS8020TakeProfitRatio multiplizieren. Folgende Elemente der feGetEntrySignal-Signalbaugruppe werden benötigt: Stromsignalstatus, berechnete Ein - und Ausstiegsebenen (Stop Loss und Take Profit) sowie gestern Bereichsgrenzen. Alle Ebenen sind über Links auf die Variablen an die Funktion erhalten, während die Signale Status zurückgeben, die Liste der Optionen aus dem vorherigen Artikel verwendet: enum ENUMENTRYSIGNAL ENTRYBUY, kaufen ENTRYSELL Signal, Signal ENTRYNONE verkaufen, kein Signal ENTRYUNKNOWN Status nicht definiert ENUMENTRYSIGNAL feGetEntrySignal ( D1 Zweikanalmusteranalyse datetime tTime, aktuelle Zeit double amp dEntryLevel, Einstiegsebene (Verknüpfung zur Variablen) double amp dSL, StopLoss Level (Link zur Variable) double amp dTP, TakeProfit Level (Link zur Variablen) double amp dRangeHigh , High von den Mustern 1 st bar (link zur Variablen) double amp dRangeLow Low von den Mustern 1 st bar (Link zur Variablen) Um ein Signal zu erkennen, müssen wir die letzten beiden Balken des D1 Zeitrahmens analysieren. Beginnt von dem ersten, wenn es die TS-Kriterien nicht erfüllt, besteht keine Notwendigkeit, den zweiten Balken zu überprüfen. Es gibt zwei Kriterien: 1. Die Balkengröße (Differenz zwischen High und Low) sollte den Durchschnittswert für die letzten XX Tage überschreiten (durch die benutzerdefinierte Einstellung TS8020D1AveragePeriod festgelegt). 2. Die Bar Open und Close Level sollten sich an der gegenüberliegenden Stelle von 20 befinden Der Stabbereich Wenn diese Bedingungen erfüllt sind, sollten hohe und niedrige Preise für weitere Verwendung gespeichert werden. Da sich die ersten Balkenparameter nicht innerhalb des ganzen Tages ändern, gibt es keinen Sinn, sie bei jedem Funktionsaufruf zu überprüfen. Hier können sie speichern in statischen Variablen: benutzerdefinierte Einstellungen Eingang uint TS8020D1AveragePeriod 20 80-20: Anzahl der Tage für uint TS8020ExtremumBreak die durchschnittliche tägliche Bereichseingang Berechnen von 50 80-20: Minimum Ausbruch des Yesterdays extremum (in Punkten) statisch ENUMENTRYSIGNAL sePossibleSignal ENTRYUNKNOWN Muster zuerst bar Signalrichtung statische Doppelgrößen für das berechnete zwischen Speichern von Zecken sdEntryLevel 0, SDSL 0. SDTP 0, sdRangeHigh 0. sdRangeLow 0 check die Muster ersten Takt auf D1: if (sePossibleSignal ENTRYUNKNOWN) stLastD1Bar tCurrD1Bar 1. bar ändert sich nicht, diesen Tag durchschnittlich Tagesbereich Doppel dAverageBarRange fdAverageBarRange (TS8020D1AveragePeriod, PERIODD1. TTime) if (maRates 0.high maRates 0.low lt dAverageBarRange) 1 st bar ist nicht groß genug, um sePossibleSignal ENTRYNONE bedeutet kein Signal heute return (sePossibleSignal) Doppel d20Percents 0.2 (maRates 0.high MaRates 0.low) 20 der gestrigen Reichweite wenn ((bearish bar: maRates 0.open gt maRates 0.high d20Percents bar geöffnet in den oberen 20 ampamp maRates 0.close lt maRates 0.low d20Percents und geschlossen in den unteren 20) (Bullish: maRates 0.close gt maRates 0.high d20Percents bar geschlossen in den oberen 20 ampamp maRates 0.open lt maRates 0.low d20Percents und öffnete in den unteren 20)) 1 st bar entspricht den Bedingungen definieren todays trading Richtung für Die Muster 1. Stufe: sePossibleSignal maRates 0.open gt maRates 0.close. ENTRYBUY. ENTRYSELL Markteintrittsstufe: sdEntryLevel dEntryLevel sePossibleSignal ENTRYBUY. MaRates 0.low. maRates 0.high Muster 1 st Barserie Grenzen: sePossibleSignal ENTRYNONE bedeutet kein Signal heute return (sePossibleSignal) Anzeige der Funktion sdRangeHigh dRangeHigh maRates 0.high sdRangeLow dRangeLow maRates 0.low sonst 1. Bar in der Nähe Ebenen öffnen Bedingungen nicht übereinstimmen für die Definition die durchschnittliche Barserie innerhalb der angegebenen Anzahl von Bars auf dem angegebenen Zeitraum von der Funktion angegebenen Zeit beginnt: Doppel fdAverageBarRange (. Berechnen durchschnittliche bar Größe int iBarsLimit, wie viele Bars ENUMTIMEFRAMES eTF PERIODCURRENT zu berücksichtigen Bars Zeitraum Datetime TTime WRONGVALUE wenn die Berechnung zu starten) Doppel dAverageRange 0 Variable für Werte, wenn (iBarsLimit lt 1) return (dAverageRange) MqlRates maRates bar info Array erhalten bar info aus dem angegebenen Geschichte Intervall summiert. if (TTime WRONGVALUE) TTime TimeCurrent () int iPriceBars CopyRates (Symbol eTF, TTime, IBarsLimit, maRates) if (iPriceBars WRONGVALUE) if (LogLevel gt LOGLEVELNONE) PrintFormat (s: Kopierschutz: Fehler u. FUNKTION. LetzteFehlerNr) return (dAverageRange) if (iPriceBars lt iBarsLimit) if (LogLevel gt LOGLEVELNONE) Printformat (s: CopyRates: kopiert u Stäbe u FUNCTION iPriceBars, iBarsLimit) Summe der Bereiche:.. Int iBar iPriceBars während (iBar-- gt 0 ) DAverageRange maountsiBar. high maRatesiBar. low Durchschnittlicher Wert: return (dAverageRange double (iPriceBars)) Es gibt nur ein Kriterium für die Muster zweiten (aktuellen) Barausbruch des yesterdays Bereichsgrenze sollte nicht kleiner sein als die in den Einstellungen TS8020ExtremumBreak). Sobald der Pegel erreicht ist, erscheint ein Signal zur Abgabe eines ausstehenden Auftrags: Überprüfen Sie die Muster 2. (aktueller) Balken auf D1: if (sePossibleSignal ENTRYBUY) sdSL dSL maPrüfungen 1. StoppLow auf die heutigen High if (TS8020TakeProfitRatio gt 0 ) SDTP dTP dEntryLevel Punkt TS8020ExtremumBreak TS8020TakeProfitRatio Takeprofit return (ist der Ausbruch nach unten maRates 1.close lt maRates 0.low Punkt TS8020ExtremumBreak ENTRYBUY. ENTRYNONE) if (sePossibleSignal ENTRYSELL) SDSL dSL maRates 1.high Stoploss auf den heutigen Low if (TS8020TakeProfitRatio gesehen deutlich gt 0) SDTP dTP dEntryLevel Punkt TS8020ExtremumBreak TS8020TakeProfitRatio Takeprofit return (ist der Ausbruch nach oben maRates 1.close gt maRates klar 0 gesehen. high Punkt TS8020ExtremumBreak ENTRYSELL. ENTRYNONE) speichern Sie die beiden oben genannten Funktionen (feGetEntrySignal und fdAverageBarRange erwähnt) und die benutzerdefinierten Einstellungen in Bezug auf Empfangen eines Signals an die mqh-Bibliotheksdatei. Die vollständige Liste ist unten angebracht. Hier können Sie die Datei Signal80-20.mqh benennen und in das entsprechende Verzeichnis des Terminal-Datenordners (MQL5IncludeExpertSignal) legen. Indikator für manuelles Handeln Wie bei der EA ist auch das oben beschriebene Signalmodul zu verwenden. Der Indikator sollte einen Händler darüber informieren, dass er ein anstehendes Order-Placement-Signal erhält und die berechneten Ebenen Order Placement, Take Profit und Stop Loss Level zur Verfügung stellt. Ein Benutzer kann eine Benachrichtigungsmethode ein Standard-Popup-Fenster, E-Mail-Benachrichtigung oder Push-Benachrichtigung auswählen. Es ist möglich, alle auf einmal oder jede Kombination, die Sie mögen, zu wählen. Ein weiteres Indikatorziel ist ein Handelsgeschichtslayout nach 80-20 TS. Das Kennzeichen ist es, die täglichen Balken hervorzuheben, die den Systemkriterien entsprechen. Die Pegellinien zeigen, wie sich die Situation im Laufe der Zeit entwickelt hat. Für mehr Klarheit können wir tun, wie folgt: Wenn der Preis die Signalleitung berührt, wird diese durch eine ausstehende Bestellzeile ersetzt. Wenn der ausstehende Auftrag aktiviert ist, wird seine Zeile durch die Optionen Take Profit und Stop Loss ersetzt. Diese Zeilen werden unterbrochen, wenn der Preis eine davon berührt (die Bestellung ist geschlossen). Dieses Layout macht es leichter, 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. Der erste ist, den vollen täglichen Stabbereich des vorhergehenden Tages hervorzuheben, während ein anderer ist, den inneren Bereich nur zu markieren, um ihn von den oberen und unteren 20 des Bereichs zu unterscheiden, der in TS verwendet wird. Danach deklarieren Sie die beiden Puffer für die mehrfarbige Signalleitung und die anstehende Auftragszeile (DRAWCOLORLINE). Ihre Farbe hängt von der Handelsrichtung ab. Es gibt andere zwei Zeilen (Take Proft und Stop Loss) mit ihrer Farbe bleiben die gleiche (DRAWLINE) sie sind die gleichen Standard-Farben zugewiesen werden, um ihnen im Terminal. Alle ausgewählten Anzeigetypen mit Ausnahme einer einfachen Zeile benötigen jeweils zwei Puffer, so dass der Code wie folgt aussieht: property indicatorchartwindow-Eigenschaft indicatorbuffers 10 property indicatorplots 6 Eigenschaft indicatorlabel1 1 St Balken der Mustereigenschaft indicatortype1 DRAWFILLING-Eigenschaft indicatorcolor1 clrDeepPink. ClrDodgerBlue Eigenschaft indicatorwidth1 1 Eigenschaft indicatorlabel2 1 St Balken der Mustereigenschaft indicatortype2 DRAWFILLING Eigenschaft indicatorcolor2 clrDeepPink. ClrDodgerBlue Eigenschaft indicatorwidth2 1 property indicatorlabel3 Signalpegeleigenschaft indicatortype3 DRAWCOLORLINE Eigenschaft indicatorstyle3 STYLESOLID Eigenschaft indicatorcolor3 clrDeepPink. ClrDodgerBlue Eigenschaft indicatorwidth3 2 property indicatorlabel4 Einstiegseigenschaft indicatortype4 DRAWCOLORLINE Eigenschaft indicatorstyle4 STYLEDASHDOT Eigenschaft indicatorcolor4 clrDeepPink. clrDodgerBlue Eigenschaft indicatorwidth4 2 Eigenschaft indicatorlabel5 Stop-Loss-Eigenschaft indicatortype5 DrawLine Eigenschaft indicatorstyle5 STYLEDASHDOTDOT Eigenschaft indicatorcolor5 clrCrimson Eigenschaft indicatorwidth5 1 Objekt indicatorlabel6 Profit Immobilien indicatortype6 DrawLine Eigentum Nehmen indicatorstyle6 STYLEDASHDOTDOT Eigenschaft indicatorcolor6 clrLime Eigenschaft indicatorwidth6 1 Lets Händler bieten die Möglichkeit, die Füllung der täglichen Muster zu deaktivieren Ersten Balken, wählen Sie Signal Benachrichtigung Optionen und begrenzen die Historie-Layout-Tiefe. Alle Trading-Systemeinstellungen des Signalmoduls sind hier ebenfalls enthalten. Dazu müssen wir die im Modul verwendeten Variablen vorläufig aufzählen, auch wenn einige von ihnen nur im EA verwendet werden und im Indikator nicht erforderlich sind: include ltExpertSignalSignal80- 20.mqhgt 80-20 TS Signalmoduleingang Bool ShowOuter true 1 St Balken des Musters: Zeigen Sie den vollen Bereich Eingang bool ShowInner true 1 St Balken des Musters: Zeigen Sie den inneren Bereich Eingang bool AlertPopup true Alert: Zeigen Sie ein Popup-Fenster Eingang bool AlertEmail false Alert: E-Mail senden AlertEmailSubj Alert-Eingabestring: E-Mail Betreff Eingang Bool AlertPush wahr Alarm: eine Push-Benachrichtigung Eingang senden uint BarsLimit 2000 Geschichte Layout Tiefe (in der aktuellen TF Balken) ENUMLOGLEVEL LogLevel LOGLEVELNONE Logging-Modus Doppel buff1stBarOuter, buff1stBarOuterZero, Puffer für die gesamte Palette der Muster Plotten 1 st bar buff1stBarInner, buff1stBarInnerZero, Puffer, um den internen 60 der Muster 1 st bar buffSignal, buffSignalColor zum Plotten, Signalleitungspuffer buffEntry, buffEntryColor, noch nicht erledigten Auftrag Zeilenpuffer buffSL, buffTP, Stoploss und Takeprofit Linien Puffer gdExtremumBreak 0 TS8020ExtremumBreak in Symbol Preise int giD1AveragePeriod 1. korrekten Wert für TS8020D1AveragePeriod giMinBars WRONGVALUE minimal erforderliche Anzahl von Takten für die erneute Berechnung int OnInit () prüfen Sie die eingegebene TS8020D1AveragePeriod Parameter: giD1AveragePeriod int (fmin (1. TS8020D1AveragePeriod)) Umwandlung Punkte auf Symbol Preise: gdExtremumBreak TS8020ExtremumBreak Punkt minimal erforderliche Anzahl Bars für Neuberechnung Anzahl der Balken des aktuellen TF innerhalb eines Tages giMinBars int (86400 PeriodSeconds ()) Indikator Puffer Ziel: 1. Bars vollständige Palette Rechteck SetIndexBuffer (0 buff1stBarOuter, INDICATORDATA) PlotIndexSetDouble (0 PLOTEMPTYVALUE. 0) SetIndexBuffer (1. buff1stBarOuterZero, INDICATORDATA) 1. Bars inneren Bereich Rechteck SetIndexBuffer (2. buff1stBarInner, INDICATORDATA) PlotIndexSetDouble (1. PLOTEMPTYVALUE. 0) SetIndexBuffer (3. buff1stBarInnerZero, INDICATORDATA) Signalleitung SetIndexBuffer (4. buffSignal, INDICATORDATA) PlotIndexSetDouble (2. PLOTEMPTYVALUE. 0) SetIndexBuffer (5. buffSignalColor, INDICATORCOLORINDEX) noch nicht erledigten Auftrag Bestücklinie SetIndexBuffer (6. buffEntry, INDICATORDATA) PlotIndexSetDouble (3. PLOTEMPTYVALUE. 0) SetIndexBuffer (7. buffEntryColor, INDICATORCOLORINDEX) SL Linie SetIndexBuffer (8. buffSL, INDICATORDATA) PlotIndexSetDouble (4. PLOTEMPTYVALUE. 0) TP Linie SetIndexBuffer (9. buffTP, INDICATORDATA) PlotIndexSetDouble (5. PLOTEMPTYVALUE. 0) IndicatorSetInteger (INDICATORDIGITS. Digits) IndicatorSetString (INDICATORSHORTNAME. 80-20 TS) Platzieren Sie den Haupt-Code-Programme Auf die eingebaute OnCalculate-Funktion die Schleife für die Iteration über die aktuellen Zeitrahmen von der Vergangenheit in die Zukunft suchen sie für ein Signal mit der Funktion aus dem Signal-Modul. Deklarieren und initialisieren Sie die notwendigen Variablen mit Initialwerten. Definiert die älteste Schleifenleiste für die erste Berechnung unter Berücksichtigung eines benutzerdefinierten History-Tiefenlimits (BarsLimit). Bei nachfolgenden Anrufen werden alle Balken des aktuellen Tages (anstelle des letzten Taktes) neu berechnet, da das Zwei-Balken-Muster tatsächlich unabhängig vom aktuellen Zeitrahmen zum D1-Diagramm gehört. Außerdem sollten wir gegen die sogenannten Phantome schützen: Wenn wir bei der Neuinitialisierung kein erzwungenes Indikatorpuffer-Clearing durchführen, bleiben beim Umschalten von Zeitrahmen oder Symbolen nicht mehr relevante gefüllte Bereiche auf dem Bildschirm. Das Puffer-Clearing sollte an den ersten OnCalculate-Funktionsaufruf nach der Indikatorinitialisierung gebunden werden. Die standardmäßig vorberechneten Variablen reichen jedoch nicht aus, um festzustellen, ob der Aufruf der erste ist, da er nicht nur während des ersten Funktionsaufrufs, sondern auch beim Ändern der Prüfsumme Null enthalten kann. Lets verbringen einige Zeit, um dieses Problem ordnungsgemäß zu lösen, indem Sie die Struktur nicht durch die Einstellung der vorberechneten Variable auf Null. Die Struktur dient zum Speichern und Verarbeiten von Daten, die häufig in den Indikatoren verwendet werden: - Flag der Funktion OnCalculate zum ersten Start - der Zähler der berechneten Balken, der beim Ändern der Prüfsummenflagge der Änderung der Prüfsummenflagge des Beginns 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, zu sammeln oder präsentieren Daten von jeder eingebauten oder benutzerdefinierten Funktionen. Nennen Sie diese Struktur Brownie. Er kann am Ende des Anzeigecodes platziert werden. Eine einzige globale Typ Strukturobjekt namens goBrownie ist auch dort erklärt werden: struct BROWNIE Datetime tLastBarTime Zeit der letzten verarbeiteten bar int iPrewCalculated Anzahl der berechneten Bars Bool bFirstRun ersten Bool Start Flag bHistoryUpdated Geschichte Update-Flag Bool bIsNewBar neue bar Öffnungs Flagge 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 ) Flagge der Funktion OnCalculate eingebaute in erster anrufen, wenn (bFirstRun ampamp iPrewCalculated gt 0) bFirstRun falsche Datumzeit neue Bar tThisBarTime TimeCurrent () - TimeCurrent () PeriodSeconds () bIsNewBar tLastBarTime tThisBarTime die aktuelle Bar Zeit aktualisieren, wenn (bIsNewBar) tLastBarTime tThisBarTime wenn (iNewPrewCalculated gt - 1) gibt es irgendwelche Veränderungen in der Geschichte bHistoryUpdated iNewPrewCalculated 0 ampamp iPrewCalculated gt WRONGVALUE Verwendung prewcalculated bei OnCalculate 1. Aufruf if (iPrewCalculated WRONGVALUE) iPrewCalculated iNewPrewCalculated oder wenn es keine Geschichte Update else if (iNewPrewCalculated gt 0) iPrewCalculated iNewPrewCalculated BROWNIE goBrownie Läßt die Brownie des Ereignisses Anzeige Deinitialisierung informieren: void OnDeinit (const int Grund) goBrownie. fReset () informieren Brownie Falls erforderlich, die Menge des durch die Brownie gespeicherten Daten können erweitert werden, wenn benutzerdefinierte Funktionen oder Klassen Preise müssen , Volumes oder den aktuellen Balken-Spread-Wert (Open, High, Low, Close, tickvolume, volume, spread). Es ist bequemer, fertige Daten aus der OnCalculate-Funktion zu verwenden und über Brownie zu übertragen, anstatt die Zeitreihen-Kopierfunktionen (CopyOpen, CopyHigh etc. oder CopyRates) zu verwenden, dies erspart die CPU-Ressourcen und eliminiert die Notwendigkeit, die Verarbeitung von Fehlern zu arrangieren Dieser Sprachfunktionen. Rückkehr zur Hauptanzeigefunktion. Variablen und zur Vorbereitung der Arrays Deklarieren der Blick goBrownie Struktur wie folgt verwendet: goBrownie. fUpdate (prevcalculated) feed Daten zu Brownie int iPeriodBar 0. Hilfszähler iCurrentTFBar ratestotal - int (BarsLimit) bar Index des aktuellen TF Schleife statischen Datetime stLastD1Bar 0 Mal starten der zuletzt bearbeiteten Balken des Paares von D1 Bars (Muster 2 nd bar) static int si1stBarofDay 0 Index der aktuellen Tage ersten Takt if (goBrownie. bFirstRun) die Puffer während der erneuten Initialisierung löschen: ArrayInitialize (buff1stBarInner, 0) ArrayInitialize ( buff1stBarInnerZero, 0) ArrayInitialize (buff1stBarOuter, 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 sonst datetime tTime TimeCurrent () minimale Neuberechnungstiefe - vom Vortag: iCurrentTFBar ratestotal - Balken (Symbol. ZEITSCHRIFT. TTime - tTime 86400. tTime) - 1 ENUMENTRYSIGNAL eSignal ENTRYUNKNOWN Signal doppelt dSL WRONGVALUE. SL-Ebene dTP WRONGVALUE. TP-Ebene dEntryLevel WRONGVALUE. Einstieg dRangeHigh WRONGVALUE. dRangeLow WRONGVALUE Grenzen der Muster 1 st Barserie Datetime tCurrD1Bar 0. Strom D1 bar Zeit (Muster 2 nd bar) tD1BarToFill 0 D1 bar Zeit gefüllt werden (Muster 1 st bar) sicherstellen, dass die anfängliche Neuberechnung bar Index innerhalb akzeptabel ist Bereich: iCurrentTFBar int (fmax (0 fmin (iCurrentTFBar, ratestotal - giMinBars))) Überprüfen Sie das Vorhandensein eines Signals während (iCurrentTFBar lt ratestotal ampamp IsStopped ().) ist die Hauptprogrammschleife hier befindet, wenn über die aktuelle Iteration Zeitraum Bars: eSignal feGetEntrySignal (Time iCurrentTFBar, dEntryLevel, dSL, DTP-, dRangeHigh, dRangeLow) if (eSignal gt 1) während des Tages kein Signal weiterhin die Bar gehört wenn ein Signal an einem neuen Tag erste Bar, der Bereich der Die vorherige Tagesbar sollte ausgefüllt werden. Der Wert der tD1BarToFill-Variable vom Datetime-Typ wird als Flag verwendet. Wenn es gleich WRONGVALUE ist, ist keine Füllung auf dieser Leiste erforderlich. Die Signalleitung sollte am gleichen ersten Balken beginnen, lässt sie aber zur besseren Layout-Wahrnehmung auf den letzten Balken des Vortags erweitern. Da die Berechnungen von einer Signalleitung, sowie Linie und Füllung Farben für bullish und bearish Bars unterschiedlich sind, können zwei ähnliche Blöcke machen: tCurrD1Bar Zeit iCurrentTFBar Zeit iCurrentTFBar 86400 Beginn des Tages gehört die Bar zu, wenn (stLastD1Bar lt tCurrD1Bar) tD1BarToFill Zeit iCurrentTFBar 1 Zeit iCurrentTFBar 1 86400 si1stBarofDay iCurrentTFBar sonst tD1BarToFill WRONGVALUE vorherigen Tages-Bar, 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), während (- - 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 weiterhin sonst Alle übrigen Layout Linien sind innerhalb des aktuellen Zeitrahmen Bars Iterationsschleife aufgetragen werden. Wie bereits erwähnt, sollte die Signalleitung an der Bar enden, wo der Preis sie berührte. Die anstehende Auftragslinie sollte an der gleichen Leiste beginnen und auf der Leiste enden, an der der Kontakt mit dem Preis erfolgt. Nehmen Sie Profit und Stop Loss Linien sollte an der gleichen Bar starten. Das Layout des Musters wird an der Bar beendet, bei dem der Preis berührt eine von ihnen: Die Signalleitung bis durch einen Balken gekreuzt: iPeriodBar iCurrentTFBar if (dEntryLevel lt dRangeHigh), während (iPeriodBar lt ratestotal), wenn (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 Bar: if (dEntryLevel lt dRangeHigh), während (iPeriodBar lt ratestotal), wenn (Time iPeriodBar gt tCurrD1Bar 86399) brechen buffEntryiPeriodBar dRangeLow buffEntryColoriPeriodBar 0 if (dRangeLow lt Hohe iPeriodBar), wenn (. buffEntryiPeriodBar 1 0) starten und auf einer einzigen Bar zu beenden, erstrecken sich von 1 bar in die Vergangenheit buffEntryiPeriodBar 1 dRangeLow buffEntryColoriPeriodBar 1 0 Pause sonst während (iPeriodBar lt ratestotal), wenn (Time iPeriodBar gt tCurrD1Bar 86399) brechen buffEntryiPeriodBar dRangeHigh buffEntryColoriPeriodBar 1 if (dRangeHigh gt Low iPeriodBar) if (buffEntryiPeriodBar 1 0.) beginnen und Ende auf einem Balken erstrecken sich von 1 bar in die Vergangenheit buffEntryiPeriodBar 1 dRangeHigh buffEntryColoriPeriodBar 1 1 Pause TP und SL Linien bis einer von ihnen durch einen Balken gekreuzt wird: if (dEntryLevel lt dRangeHigh) SL seit dem Beginn der Nieder gleich von Ein Tag: dSL Low ArrayMinimum (Low. si1stBarofDay, iPeriodBar si1stBarofDay), während (iPeriodBar lt ratestotal), wenn (Time iPeriodBar gt tCurrD1Bar 86399) brechen buffSLiPeriodBar dSL buffTPiPeriodBar dTP wenn (DTP lt Hohe iPeriodBar dSL gt Low iPeriodBar) if (buffSLiPeriodBar 1 0.) beginnen und auf einer einzigen Bar zu beenden, von 1 bar verlängern SL in die Vergangenheit buffSLiPeriodBar 1 dSL buffTPiPeriodBar 1 dTP brechen andere ist gleich dem Hoch seit dem Beginn eines Tages: dSL Hohe ArrayMaximum (High si1stBarofDay, iPeriodBar si1stBarofDay.), während (iPeriodBar lt ratestotal), wenn (Time iPeriodBar gt tCurrD1Bar 86399) buffSLiPeriodBar dSL buffTPiPeriodBar dTP brechen, wenn (dSL lt Hohe iPeriodBar dTP gt Low iPeriodBar) if (buffSLiPeriodBar 1 0.) beginnen und auf einer einzigen Bar zu beenden, um 1 bar auf den buffSLiPeriodBar 1 dSL buffTPiPeriodBar 1 dTP Pause vorbei verlängern Lässt Platz Der Rufcode der fDoAlert-Signalbenachrichtigung aus der Schleife heraus. In der Tat hat es etwas breitere Chancen im Vergleich zu denjenigen, die in diesem Indikator die Funktion in der Lage, mit Audio-Dateien arbeiten, was bedeutet, dass diese Option kann, um benutzerdefinierte Einstellungen hinzugefügt werden. Gleiches gilt für die Möglichkeit, separate Dateien für Kauf - und Verkaufssignale auszuwählen. Funktionslisting:.. Leere fDoAlert (Funktion für echte Signale und Benachrichtigungen String sMessage, Alarmmeldung Bool bAlert Senden zeigen ein Pop-up-Fenster Bool bSound falsch spielen eine Sounddatei Bool bEmail false false eine eMail Bool bNotification senden eine Push-Benachrichtigung zu senden.. String sEmailSubject. eMail Zeichenkette sSound ALERT. WAV Tondatei) static string ssPrevMessage Stille vorherige Warnmeldung statische Datetime stPrevTime vorherige Benachrichtigung bar Zeit Datumzeit tThisBarTime TimeCurrent () PeriodSeconds () PeriodSeconds () Stromschiene Zeit, wenn (ssPrevMessage sMessage stPrevTime tThisBarTime war) ein anderer und oder 1 st in dieser Bar erinnern: ssPrevMessage sMessage stPrevTime tThisBarTime eine Nachrichtenkette bilden. sMessage String (ssss, TimeToString (TimeLocal (), TIMESECONDS) Ortszeit Symbol Symbol StringSubstr (EnumToString (ENUMTIMEFRAMES (Periode)), 7) , TF sMessage-Meldung) 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 aufrufen und bilden den Text für sie im Programmkörper vor Beendigung des OnCalculate Event-Handler befindet: alert iPeriodBar ratestotal 1 Strom bar if (AlertPopup AlertEmail AlertPush 0) return (ratestotal) alle ist deaktiviert, wenn (buffSignaliPeriodBar 0) return (ratestotal) noch nichts zu fangen (oder schon), wenn (buffSignaliPeriodBar gt Hoch iPeriodBar buffSignaliPeriodBar lt Low iPeriodBar) return (ratestotal) nein Signalleitung berühren Nachrichtentext: string sMessage String (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, falsche AlertEmail, AlertPush, AlertEmailSubj) return (ratestotal) komplett OnCalculate Betrieb der gesamte Quellcode des Indikators in den angehängten Dateien (TS80-20.mq5) gefunden werden. Das Trading-Layout nach dem System ist am besten in Minuten-Charts zu sehen. Bitte beachten Sie, dass der Indikator die Balken-Daten anstelle von Tick-Sequenzen innerhalb der Balken verwendet. Das heißt, wenn der Kurs mehrere Layoutlinien (zB Take Profit und Stop Loss Linien) auf einer einzigen Leiste überschritten hat, können Sie nicht immer festlegen, welche davon zuerst überschritten wurden. Eine weitere Unsicherheit ergibt sich aus der Tatsache, dass die Anfangs - und Endzeilen nicht zusammenfallen können. Andernfalls werden die Zeilen aus dem Puffer der DRAWLINE - und DRAWCOLORLINE-Typen für einen Benutzer einfach nicht sichtbar. Diese Merkmale 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 Teststrategien aus dem Buch Street Smarts: Hohe Wahrscheinlichkeit Kurzfristige Handelsstrategien wurde im Einzelnen im ersten Artikel beschrieben. Hier können zwei wesentliche Änderungen vorgenommen werden. 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.80 trading strategies for novice One and done. 1 contract on the TF. 82 ticks. Amazing. Ich liebe dich. This thing is fking great. 0 today so far and playing by the rules. Forex Trading Strategy Session: The 80 20 Rule Explained: How To Hunt Stops 80 trading strategies for novice. Unlike some FCA firms, One Financial Markets does not mix client money with its own funds. One Financial Markets segregates client monies from its ownand does not use client funds for its own financing needs, thus providing additional comfort and protection to clients. 80 trading strategies for novice. 9 12 15, 7:55:48 AM ron covin: Scott Jaz is always a big help. She has a lot of patience, listens to the Nuances of your problem, knows how to9 12 15, 8:48:33 AM ron covin: Research solutions to your problem. We are testing a solution to my not receiving The Oil Money email. Jaz helped mewith better understanding Skype and general computer procedures. Jaz, as you well know, is a great asset to your organization. I really appreciate hertaking the time to help me. I really appreciate your taking the time to reply to my Skype message. Jaz spent two hours helping me. That is really atestimonial to your word about reading every email and going the extra mile to helping someone. I guess theres a message in all this about myignorance and maybe ineptitude however just having the opportunity to work with yourself and Jaz give me the inspiration and to work on and improve myweaknesses. I Learn something about myself, computers and your trading systems and philosophy each time I have the opportunity to experience yourinfluences. My many ways of showing my appreciation is just a small token of how much I appreciate my association with you and your staff. Thanksagain Scott. And also much thanks to Jaz. TTUL 9 12 15, 8:52:47 AM ron covin: The missing word in this dialogue is incentive. Thanks again forEVERYTHING. 80 trading strategies for novice - Read more Read more 80 trading strategies for novice The FCA is regarded by both consumers and financial service professionals as the pre-eminent financial regulatory body and is empowered under the UKGovernments Financial Services Markets Act to supervise and regulate financial services business in and from the United Kingdom. 80 trading strategies for novice. Forex Trading Strategies For Novice Traders. but if you want to make money you will have to spend much time to learn them and use in your trading strategy. All these properties contribute to form Fapturbo highly performing Forex trading autopilot tool. Traders are assured giant profitable rates methods, capitalization in the short term and long-term and thus success. I downloaded kstrat1 v3 yesterday and hit target real quick. this morning I turned it on around 807 and hit two winning trades and hit target. so intwo days made almost 4 on my account. needless to say I quit once goal was made. The most difficult part for me is quitting while winning buthaving done this for some time Ive had those days where I was way up and continued and finished down.80 trading strategies for novice. 80 trading strategies for novice. The address, which made its first appearance as the famous fictional detectives residence in the book A Study in Scarlet, doesnt appear in the recent BBC1 series. The actual 221B Baker Street is occupied by the Sherlock Holmes Museum, a small institution with awaxworks room, a drawing room well laid out in Victorian style, and a gift shop. This system is one among several forex robot software programs but the main big difference is truly that FAP Robot may be a foreign currency combinesoftware program which when it had been available came out with many other important options. The FAP Turbo48 is sometimes a abundant better releaseof the prior edition and also one among the encouraging software packages of its time. When it had been introduced its sales climbed to a lot of thanforty-three thousands copies. The particular bot was analyzed throughout the course of around six months. Watch 80 trading strategies for novice Final one for today. Just happened on DX - 90 Ticks - in the green box. 80 trading strategies for novice online. Just to let you know, I watched the 4 hrs of free instructions from The Oil Money over the weekend and traded sim on Monday. Ended up 0.00 after 2hrs. Tues I went live, but was cautious and made 0.00, Wed cleared .00 and Thurs 0.00. I have to go to my day job at 10:00 am central timeand have only a couple hrs to trade the usually crazy open on the Cl. I knew the information was making a difference in my trades and confidence inmaking those trades. By Fri I purchased the full program to get all I could to improve my knowledge. Im only on Day 2 as of now and am lookingforward to the next week of learning. I appreciate the 1 year membership here as part of the purchase of the program. Have not been to the chat orreally know what is available on this site yet. Thanks Scott for giving us all the opportunity to make a major change in our lives. Ive had myaccount for 3 or 4 months but have not been able to be truly profitable consistently. Im looking forward to financial freedom in My life. ThanksAgain.80 trading strategies for novice. Traded it live today by the bookscalped early in the day and after I had a good cushion took one last trade and allowed it to surf. Up ,070.00 onthe CL using 1 lot. I cant wait to get my hands on the Pivot Scalper. This program might just be the fix to my inconsistent trading behavior. 44 Eaton Square in well-to-do Belgravia serves for exterior shots of The Womans house. The interiors were, again, shot inNewport: in a private residence known as Fields House thats also been seen in episode Blink of Dr Who. Scott, you always have something new and informative. My account size is very small (2000.00) so Im working with currencies and only taking the bestfutures trades. Still taking one step forward one step backwards. Im thinking of taking a position trade for a few months or weeks and your teachingon fridays really help. Youre wonderful, keep up the great job of teaching. God bless.(80 trading strategies for novice online.) The phone box that you see in the image above was filled with hand-written notes commemorating the so-called death of Sherlock at theend of Series 2:
Nachdem ich die Hochschule abgeschlossen hatte, gab es keinen Job, also beschloss ich, ein kleines Unternehmen zu führen, aber es gab kein ausreichendes Geld, ich schließe das Geschäft, die Dinge wurden sehr hart für mich, ich war das einzige Kind meiner Eltern und meiner Eltern sind beide alt, sie sind für die tägliche Fütterung auf mich angewiesen , wie sich diese NEUE PROGRAMMIERTE BLANK ATM CARD in einen Geldautomaten hacken und viel Geld abheben kann, also kontaktierte ich die Firma über ihre E-Mail, zu meiner größten Überraschung bekam ich nach einigen Tagen die Karte, nachdem ich nur eine geringe Gebühr für die Karte bezahlt hatte. Diese leere Geldautomatenkarte ist in der Tat ein großartiges, wunderbares Produkt, ich hätte nie geglaubt, dass ich all diese Dinge, die ich heute habe, erwerben könnte, mit dieser großen Freude in meinem Herzen, deshalb teile ich die gute Nachricht mit ... Das Leben besteht darin, positiv und geduldig zu sein, daran zu glauben, dass große Dinge möglich sind passieren innerhalb weniger Sekunden...BRAIN HACKERS TECH WORLD hat mein Leben verändert...Gott sei Dank, für sie email, VIA ( brainhackers@aol.com )
ReplyDelete