Tuesday, 21 February 2017

Learn Forex Trading Für Anfänger Pdf Editor

Wie man Forex Trading. High Renditen machen Devisenmärkte Forex eine sehr attraktive Investition Option für einige Leute Das hohe Risiko in Devisenhandel kann in erhebliche Verluste für selbst erfahrene Händler zu übersetzen Lernen Sie so viel wie möglich über wie diese Branche arbeitet, bevor Sie in Erwägung ziehen Ihr Geld und möglicherweise das Hemd aus dem Rücken auf dem Tisch. Lesen Sie über die Grundlagen der Devisenhandel, zusammen mit den besten Optionen für die meisten Verbraucher bei Bankrate, eine vertrauenswürdige Website mit einer Fülle von Geld und Investitionsberatung. Finden Sie über Betrügereien, die sind Weit verbreitet in dieser Branche bei der Federal Trade Commission FTC Website Diese Agentur macht Regelungen zum Schutz der Verbraucher vor skrupellosen Händlern, die alles versprechen und liefern Reißverschluss Die FTC überwacht die Branche sehr eng und gibt regelmäßige Updates auf wichtige Entwicklungen. Sign up für ein kostenloses Praxis-Konto bei Die Forex-Website Machen Sie virtuelle Währung Trades mit Ihrem kostenlosen Praxis-Konto für dreißig Tage Weiter zu folgen Ow den Markt so lange wie nötig für Sie zu verstehen, was Sie wissen und was Sie don t wissen. Get Tipps und Tricks an Sie Mailbox von TopForexReview Get News Feeds oder Warnungen auf Themen, die die Währungen beeinflussen können, die Sie erwägen den Handel beginnen mit Nur ein paar Währungen, so können Sie den Überblick über Änderungen und die möglichen Ursachen. Join ein oder zwei Forex Trader Foren und diskutieren die Trends, Probleme und Fallen in der Branche Fragen in den Foren Die meisten Benutzer sind freundlich und hilfreich für Neulinge Profitieren Sie von Andere Leute s Erfahrungen und entwickeln Sie Ihren Spielplan, bevor Sie vorwärts gehen. Setzen Sie beiseite eine kleine Summe der wirklichen Praxis Bargeld über einen einmonatigen Zeitraum Verwenden Sie Geld, das Sie bereits zu diskretionäre Einkommen zugeteilt haben, wie Einsparungen von Ihrem Morgen Kaffee laufen regelmäßig statt Latte und Pocket die Ersparnisse, Mittagessen für einen Monat müssen Sie Lunchpaket oder Pause öffnen Sie Ihre Münze und Bargeld in der Hälfte nicht alle an Ihrem lokalen Lebensmittelgeschäft Wechselzentrum. Wählen Sie eine seriöse currenc Y Trading-Website oder Broker, nachdem Sie Empfehlungen von anderen Händlern zu bewerten und sie auf der FTC-Website zu untersuchen Versuchen Sie, sich an Ihr Budget und den Spielplan, dass Sie beim Üben zu halten. Das Forex-Wunder verdienen 600 pro Jahr. Trader macht effektive jährliche Wachstum von 10 840.Malcolm Rees Letzten Monat Geldweb berichtete über die Investitionsprogramm, NaxaInvest, die Investoren Renditen von 2 pro Tag angeboten, angeblich durch den Handel auf dem Devisenmarkt forex. Folgend der Bericht, der Financial Services Board FSB war schnell, eine Erklärung abzugeben Warnung Investoren, um das System zu vermeiden, da es nicht ein autorisierter Finanzdienstleister war. Überraschenderweise haben Forex-Befürworter eine Verteidigung von Naxas Behauptungen, die Rücksendungen über 600 sind möglich durch Währungshandel. Ein solcher Forex-Guru ist FSB-lizenziert Johan van As . Erfolgreiche Forex-Händler können viel besser als die 2 Profit pro Tag von diesen Systemen angeboten, er behauptet. Through seiner Firma ForexMasters Van As bietet Kunden drei-da Y Forex-Trainingsprogramme aus seinem Haus, zu einem Preis von R10 000.A kräftige Gebühr, vielleicht, aber nicht, wenn die Art der Rücksendungen Van As behauptet, in der Lage sein, seinen Kunden zu helfen, sind möglich. Verteidigung seiner Ansprüche, Van As Hat Moneyweb mit dem Prospekt von PrivateFX ein privat geführtes Forex-Programm bereitgestellt, das behauptet, eine 716 zusammengesetzte Rendite in 14 Monaten generiert zu haben. Er behauptet auch, dass der internationale Forex-Guru Greg Secker R25 000 für zwei Trainingstage und drei Stunden telefonisches Backup, Im Vergleich. Jedoch warnt Van As warnt Unternehmen Handel im Namen der Kunden sind sehr vorsichtig mit ihrem Geld-Management und Risiko-take. Therefore die Ergebnisse sind niedriger als eine Person kann. Individuals raking es in. Sie Personen gehören Van As Client Adrian, Der anscheinend 337 60 in sein Handelskonto am 11. Juli 2007 hinterlegt hat und behauptet, einen Gewinn von 9 133 00 innerhalb der folgenden drei Monate gemacht zu haben. Das entspricht einem jährlichen Wachstum von 10 840.Moneyweb hat eine Kopie o F seine Konten, die diese Wachstumsraten als genau anzählen. Ander so erfolgreicher Forex Trader ist Lourens Smit, ein 80-jähriger Rentner, ein Van As client. Forex für den richtigen Mann, wenn Sie vernünftigerweise mit Zahlen kennt, ist ein Geschenk vom Himmel, sagt er. Ich bin nicht bereit, dies zu garantieren, aber ich habe durchschnittlich 10 jeden Monat, den ich mit 8k begonnen habe, und ich arbeitete es bis zu einer sehr erheblichen Menge von ziemlich ein paar hunderttausend Dollar in weniger als einem Jahr , Sagte er. Es gibt keine Möglichkeit, dass jeder mit all der Erfahrung in der Welt kann Ihnen beibringen, was in den nächsten fünf Minuten passieren wird Aber es gibt Trends zu folgen und es gibt 101 verschiedene Methoden, die Sie beschäftigen können, um Ihnen zu entscheiden, ob Dies ist ein langer Schuss oder kurzer Schuss, sagt er. Ein Chor von Champion. ForexMasters ist keineswegs eine einzige Stimme, die das Lied von fantastischen Forex-Renditen singt. Stattdessen scheint es von einem immer intensivierenden Chor von Forex-Befürwortern verbunden zu sein Twitter stream, Van As gefördert die U S Forex Software, forexdominator dessen Schöpfer, Cecil Robles, behauptet, in der Lage sein, Bewegungen auf dem Devisenmarkt mit 84 Genauigkeit vorhersagen. Mit dem Kauf der Software Forex Investoren don t müssen praktisch alles zu tun, außer zu entscheiden, wie viel Gewinn, den Sie auf die machen wollen Chancen der Software alarmiert Sie und gelegentlich überwachen Ihre offenen Trades. Die Software basiert auf 25 000 der Forschung und Entwicklung und es macht 99 der schweren Heben für Sie, er behauptet. Greg Secker, hat auch seine Runden in SA s gemacht Motivierende Sprechforen, auch in Sandton City, durch die Wissens-Action-Kampagne. Secker s Versprechen der Bereitstellung der größten Chance in der Geschichte der Menschheit durch schnelle Forex Millionen wurde von der britischen Wächter befragt, die zeigte, dass seine Handels-Tochtergesellschaft Nettovermögen hatte Von nur 91 132 am 31. Dezember 2010 und machte einen Verlust im Jahr 97 13.Locally, die Investitionsplattform Trading Ergebnisse bietet Investoren Zugang zu den fantastischen re Wendungen, die von der US-Plattform generiert werden, die seit November 2011 einen Gewinn von 931 13 aufweist. Die Website der Website hat ursprünglich den Anlegern ein 3 bis 5 Wachstum pro Monat versprochen, scheint aber die Aussage geändert zu haben, da sie von Moneyweb informiert wurde, dass die versprechenden Renditen übertreffen 20 pro Jahr über dem Repo-Satz ist illegal nach dem Consumer Protection Act. Vista haben ihre Ergebnisse seit 2009 veröffentlicht und haben ein Wachstum von mehr als 60 pro Jahr gezeigt und im vergangenen Jahr zeigten sie ihr Wachstum von 100, sagt Trading Results Director, Pierre Van der Walt. So sagen wir, dass wir bieten 40-60 Wachstum, das weniger als das ist. Während viele Forex Trading-Plattformen bieten eine einfache und schnelle Tor zu untold Millionen Van Wie ist ein wenig mehr in Bezug auf die Risiken beteiligt. Forex Handel ist nicht Eine einfache Aktivität, sagt er, obwohl Hinzufügen, dass es auch nicht zu schwierig ist. Sie müssen eine sehr disziplinierte Person sein, müssen Sie viel Geduld haben, muss in der Lage sein, Stress zu ertragen, muss ein gutes Verständnis haben G der Märkte und muss eine gute Methode haben, um die Marktbewegungen zu interpretieren, sagt er. Der Trader muss mit dem Risiko bequem sein und muss die Tatsache akzeptieren, dass er sein Geld verlieren kann, wenn er zu viele Fehler macht. Es braucht Zeit, sich zu entwickeln Geschicklichkeit im Handel Es gibt leider kein schnelles Fix oder wird reich-schnelles Rezept. Jedoch, auch im Lichte von Van Als Warnung, die offensichtliche Gelegenheit für Laien, Renditen zu generieren, die die von professionellen Fondsmanagern erzielten, die eine gewisse offensichtliche Frage stellen. Warum aren t mehr Investment-Manager Platzierung Client s Geld in Forex-Fonds und warum aren t plethora von Forex-Experten, die Ausbildung bieten nicht einfach in den Markt selbst, um die Renditen zu generieren, die sie versprechen, anstatt verbringen Zeit liefern die teure, aber nicht fantastisch teuer, Ausbildung Programme, die sie anbieten. Forex Märkte sind unvorhersehbar und volatil, so bedeutet dies, dass es möglich ist, eine Menge Geld zu machen, aber das Gegenteil ist auch wahr, sagt Chantal Robertson, hea D von Specialist Sales bei FNB. Die Forex-Märkte wäre eine hohe Risiko-Investition, und man würde daher erwarten, eine bessere Rendite im Vergleich zu sagen, eine Beteiligung zu investieren. Jedoch, angesichts der Volatilität der Märkte, ist es unwahrscheinlich, dass massive Renditen Wäre auf einer nachhaltigen Basis erreichbar. Ein Wort der Vorsicht für alle potenziellen Investoren, wenn versprochen, so brillante Renditen ist, dass sie sicherstellen müssen, dass sie mit einem renommierten Unternehmen Dies gilt insbesondere bei der Verwendung einer ausländischen Handelsplattform. Typisch Einzelpersonen finanzieren diese Durch ihre ausländische Investitionszulage, die den regulatorischen Anforderungen unterliegt. Tanya Woker, ehemaliger stellvertretender Vorsitzender des Ausschusses für Handel und Industrie s Consumer Affairs Committee hat auch gewarnt, dass, wie bei NaxaInvest, verspricht fantastische Renditen durch Investitionen Chancen wie Forex werden häufig als Front verwendet, um Investoren in illegale get-rich-quick-Systeme wie Ponzis und Pyramiden zu locken. Robertson betont, dass die FNB als autorisierter Händler keine spekulative Handelsplattform als Produkt anbietet. Step-By-Step-Anleitung zum Schreiben eines Expertenberaters in MQL5 für Anfänger. Dieser Artikel richtet sich an Anfänger, die lernen wollen, wie man schreibt Einfache Experten-Berater in der neuen MQL5-Sprache Wir werden zunächst beginnen, indem wir definieren, was wir wollen, dass unser EA-Experten-Berater zu tun, und dann weiter, wie wir wollen, dass die EA es zu tun.1 Trading-Strategie. Was unsere EA wird. Es wird Überwachen einen bestimmten Indikator, und wenn eine bestimmte Bedingung erfüllt ist oder bestimmte Bedingungen erfüllt sind, wird es einen Handel entweder einen Short Sell oder Long Buy, abhängig von der gegenwärtigen Bedingung, die erfüllt worden ist. Die oben genannte ist eine Handelsstrategie Vor Ihnen Kann eine EA schreiben, du musst zuerst die Strategie entwickeln, die du in die EA automatisieren möchtest. In diesem Fall lasst uns die obige Aussage modifizieren, damit sie die Strategie widerspiegelt, die wir in eine EA entwickeln wollen. Wir verwenden einen Indikator namens Moving Average mit einer Periode von 8 Yo Sie können irgendeine Periode wählen, aber für den Zweck unserer Strategie, verwenden wir 8.We wünschen unsere EA, einen Long Buy-Handel zu platzieren, wenn das Moving Average-8 für unsere Diskussion, ich werde es als MA - 8 steigt nach oben und der Preis ist dahinter und es wird einen Short Sell platzieren, wenn MA-8 nach unten abnimmt und der Preis dicht unter ihm liegt. Wir werden auch einen anderen Indikator namens Average Directional Movement ADX mit Periode 8 verwenden Um zu helfen, festzustellen, ob der Markt tendiert oder nicht Wir tun dies, weil wir nur den Handel betreten wollen, wenn der Markt tendiert und sich entspannt, wenn der Markt reicht, das ist, nicht Trending Um dies zu erreichen, werden wir nur unseren Handel platzieren Kaufen oder Verkaufen, wenn die Bedingungen erfüllt sind und der ADX-Wert größer ist 22 Wenn ADX größer ist als 22, aber abnehmend oder ADX kleiner als 22 ist, werden wir nicht handeln, auch wenn die Bedingung B erfüllt ist. Wir wollen auch Schützen Sie uns, indem Sie einen Stop-Loss von 30 Pips setzen, und für unsere Profit ta Rget werden wir einen Gewinn von 100 Pips ansprechen. Wir wollen auch, dass unsere EA nach Kauf verkauft Kaufchancen nur, wenn eine neue Bar gebildet wurde und wir werden auch sicherstellen, dass wir eine Kaufposition öffnen, wenn die Kaufbedingungen erfüllt sind und wir nicht Haben bereits eine geöffnet, und öffnen Sie eine Verkaufsposition, wenn die Verkaufsbedingungen erfüllt sind und wir haben noch nicht ein geöffnetes. Wir haben jetzt unsere Strategie entwickelt, jetzt ist es Zeit, mit dem Schreiben unseres Kodex zu beginnen.2 Schreiben Sie einen Expert Advisor. Begin, indem Sie starten Der MetaQuotes-Spracheditor 5 Drücken Sie dann Strg N oder klicken Sie auf die Schaltfläche Neu in der Menüleiste. Abbildung 1 Starten eines neuen MQL5-Dokuments Im MQL5-Assistenten-Fenster wählen Sie Experten-Berater und klicken Sie auf Weiter, wie in Abb. 2 gezeigt. Abbildung 2 Auswählen Programmtyp Im nächsten Fenster geben Sie den Namen ein, den Sie Ihrem EA im Feld Name geben möchten. In diesem Fall habe ich MyFirstEA eingegeben. Sie können dann Ihren Namen in das Feld Autor und auch Ihre Website-Adresse oder E-Mail-Adresse im Link eingeben Kasten, wenn Sie eins haben. Abbildung 3 Allgemeine Eigenschaften des Experte Adv Isor. Since wir in der Lage sein, einige der Parameter für unsere EA zu ändern, um zu sehen, welche der Werte uns das beste Ergebnis geben können, werden wir sie durch Klicken auf die Schaltfläche Hinzufügen hinzufügen. Figur 4 Einstellen der EA-Eingabeparameter Unsere EA, wir wollen in der Lage sein, mit unseren Stop Loss, Take Profit, ADX Period und Moving Average Period Einstellungen zu experimentieren, also definieren wir sie an diesem Punkt. Double Klicken Sie unter den Namen Abschnitt und geben Sie den Namen des Parameters, Dann doppelklicken Sie unter den Typ, um den Datentyp für den Parameter auszuwählen, und doppelklicken Sie unter den Abschnitt Anfangswert und geben Sie den Anfangswert für den Parameter ein. Wenn Sie fertig sind, sollte es so aussehen. Abbildung 5 Datentypen von EA Eingabeparameter. Wie Sie oben sehen können, habe ich einen ganzzahligen int-Datentyp für alle Parameter ausgewählt. Lass uns ein wenig über Datentypen sprechen. Der Char-Typ dauert 1 Byte Speicher 8 Bits und erlaubt das Ausdrücken in der binären Notation 2 8 256 Werte Der Char-Typ kann sowohl positiv als auch negativ sein Werte Der Wertebereich ist von -128 bis 127.uchar Der uchar-Integer-Typ belegt auch 1 Byte Speicher, sowie den Char-Typ, aber im Gegensatz dazu ist es nur für positive Werte gedacht. Der Minimalwert ist Null, der Maximalwert 255 Der erste Buchstabe u im Namen des uchar-Typs ist die Abkürzung für unsigned. short Die Größe des kurzen Typs beträgt 2 Bytes 16 Bits und erlaubt dementsprechend das Ausgeben des Wertebereichs gleich 2 der Leistung 16 2 16 65 536 Da der Kurztyp ein Vorzeichen ist und sowohl positive als auch negative Werte enthält, liegt der Wertebereich zwischen -32 768 und 32 767.Toll. Der unsigned short type ist der Typ ushort, der ebenfalls eine Größe von 2 Bytes hat Der Minimalwert ist 0, der Maximalwert ist 65 535.int Die Größe des int-Typs beträgt 4 Bytes 32 Bits Der Minimalwert ist -2 147 483 648, der maximale ist 2 147 483 647.uint Der unsigned Integer-Typ ist Uint Es dauert 4 Bytes Speicher und erlaubt das Ausdrücken von ganzen Zahlen von 0 bis 4 294 967 295.long Die Größe von Der lange Typ ist 8 Bytes 64 Bits Der Minimalwert ist -9 223 372 036 854 775 808, der Maximalwert ist 9 223 372 036 854 775 807.ulong Der ulong Typ belegt auch 8 Bytes und kann Werte von 0 bis 18 446 speichern 744 073 709 551 615. Aus der obigen Beschreibung der verschiedenen Datentypen sind die nicht signierten Integer-Typen nicht für die Speicherung von negativen Werten ausgelegt, jeder Versuch, einen negativen Wert zu setzen, kann zu unerwarteten Konsequenzen führen. Wenn Sie beispielsweise negative Werte speichern möchten , Können Sie sie nicht in den unsignierten Typen speichern, dh uchar, uint, ushort, ulong. Back an unsere EA Wenn wir uns die Datentypen anschauen, werden Sie mit mir einverstanden sein, dass wir annehmen, um char oder uchar Datentypen zu verwenden, da die Daten, die wir beabsichtigen Speichern in diesen Parametern sind weniger als 127 oder 255. Für eine gute Speicherverwaltung, das ist das Beste, was zu tun ist. Um unsere Diskussion willen, werden wir immer noch an den int-Typ bleiben. Wenn Sie fertig sind, setzen Sie alle notwendigen Parameter, Klicken Sie auf die Schaltfläche Fertig und die MetaQuote S Editor wird das Skelett des Codes für Sie erstellen, wie in der nächsten Abbildung gezeigt. Lassen Sie den Code in die verschiedenen Abschnitte für ein besseres Verständnis brechen. Der obere Teil Header des Codes ist, wo die Eigenschaft der EA definiert ist Sie können sehen Dass hier die Werte, die Sie in den MQL5-Assistenten in Abbildung 3 gefüllt haben. In diesem Abschnitt des Codes können Sie zusätzliche Parameter wie Beschreibung beschreiben Kurztext Beschreibung der EA, deklarieren Konstanten, enthalten zusätzliche Dateien oder Import-Funktionen. Wenn eine Anweisung beginnt Mit einem Symbol, heißt es eine Präprozessor-Direktive und es endet nicht mit einem Semikolon anderes Beispiel für Präprozessor-Direktiven enthält. Die Definitionsrichtlinie wird für eine Konstantenerklärung verwendet Es ist in der Form geschrieben. Definieren identifier tokenstring. What dies ist ersetzen jedes Vorkommen der Kennung in Ihrem Code mit dem Wert tokenstring. Definieren ABC 100 definieren COMPANYNAME MetaQuotes Software Corp. It ersetzen jedes Vorkommen von COMPANYNAME durch die Zeichenfolge MetaQuotes Software Corp oder es wird jedes Vorkommen von ABC mit der Char oder Integer 100 in Ihrem Code ersetzen. Sie können mehr über die Präprozessor-Richtlinien in der MQL5 Manual Lassen Sie uns nun mit unserer Diskussion fortfahren. Der zweite Teil des Headers unseres Codes ist der Eingabeparameter Abschnitt. Wir geben alle Parameter an, die in unserem EA in diesem Abschnitt verwendet werden. Dazu gehören alle Variablen, die von allen verwendet werden Die Funktionen, die wir in unserem EA schreiben werden. Variablen, die auf dieser Ebene deklariert werden, heißen Globale Variablen, weil sie von jeder Funktion in unserer EA zugänglich sind, die sie benötigen können. Die Eingabeparameter sind Parameter, die nur außerhalb unserer EA geändert werden können Deklariere andere Variablen, die wir im Rahmen unserer EA manipulieren werden, aber nicht außerhalb unserer EA in diesem Abschnitt zur Verfügung stehen werden. Next ist die EA Initialisierungsfunktion Dies ist die Tanne St-Funktion, die aufgerufen wird, wenn die EA gestartet oder an ein Diagramm angeschlossen ist und es nur einmal genannt wird. Dieser Abschnitt ist der beste Ort, um einige wichtige Schecks zu machen, um sicherzustellen, dass unsere EA sehr gut funktioniert. Wir können entscheiden, ob Das Diagramm hat genug Stäbe für unsere EA zu arbeiten, etc. Es ist auch der beste Platz, um die Griffe zu bekommen, die wir für unsere Indikatoren ADX und Moving Average Indikatoren verwenden werden. Die OnDeinit functio n heißt, wenn die EA aus dem Diagramm entfernt wird. Für unsere EA werden wir die Handles für unsere Indikatoren während der Initialisierung in diesem Abschnitt freigegeben. Diese Funktion verarbeitet das NewTick-Ereignis, das generiert wird, wenn ein neues Angebot für ein Symbol empfangen wird. Hinweis, dass Expert Advisor keine Handelsoperationen ausführen kann, wenn Die Verwendung von Expert Advisors in der Client-Terminal ist nicht erlaubt Button Auto Trading. Figure 6 Autotrading ist aktiviert. Die meisten unserer Codes, die unsere Handelsstrategie implementieren wird, die früher entwickelt wurde, wird in diesem Abschnitt geschrieben werden. Jetzt haben wir bei th E verschiedene Abschnitte des Kodex für unsere EA, lassen Sie uns beginnen, Fleisch zu dem Skelett hinzuzufügen.2 2 EINGANG PARAMETER ABSCHNITT. Wie Sie sehen können, haben wir mehr Parameter hinzugefügt Bevor wir fortfahren, die neuen Parameter zu besprechen, lassen Sie uns etwas besprechen, das Sie sehen können Jetzt Die beiden Schrägstriche erlauben uns, Kommentare in unsere Codes zu setzen Mit Kommentaren können wir wissen, was unsere Variablen stehen oder was wir zu diesem Zeitpunkt in unserem Code machen. Es gibt auch ein besseres Verständnis unseres Codes Sind zwei grundlegende Möglichkeiten, um Kommentare zu schreiben. Dies ist eine einzige Zeile Kommentar. Dies ist ein mehrzeiliger Kommentar. Dies ist ein mehrzeiliger Kommentar Mehrzeilige Kommentare beginnen mit dem Paar von Symbolen und enden mit dem one. The Compiler ignoriert alle Kommentare bei der Kompilierung Ihres codes. Unter Einzeilige Kommentare für die Eingabeparameter ist ein guter Weg, um unsere EA-Benutzer verstehen, was diese Parameter steht Für die EA Input Eigenschaften, werden unsere Benutzer nicht sehen, den Parameter selbst, aber stattdessen werden sie sehen Die Kommentare wie gezeigt Unten. Figure 7 Expert Advisor Eingabeparameter. Now, zurück zu unserem Code. Wir haben beschlossen, zusätzliche Parameter für unsere EA hinzuzufügen Die EAMagic ist die magische Zahl für alle Bestellungen von unserem EA Der minimale ADX-Wert AdxMin wird als doppelter Datentyp deklariert Ein Doppel wird verwendet, um Gleitkomma-Konstanten zu speichern, die einen ganzzahligen Teil, einen Dezimalpunkt und einen Bruchteil enthalten. double mysum 123 5678.double b7 0 09876. Lot zu handeln Lot stellt das Volumen des Finanzinstruments dar, das wir wollen Handel Dann haben wir andere Parameter erklärt, die wir verwenden werden. Der adxHandle wird für die Speicherung des ADX-Indikator-Handles verwendet, während der MaHandle den Griff für den Moving Average-Indikator speichert. Der plsDI, minDI, adxVal sind dynamische Arrays, die das halten werden Werte von DI, - DI und Haupt-ADX des ADX-Indikators für jeden Balken auf dem Diagramm Das maVal ist ein dynamisches Array, das die Werte des Moving Average-Indikators für jeden Balken auf dem Chart enthält. Auf dem Weg, was sind dynamische Arrays Ein dynamisches Array ist Ein Array ohne Dimension deklariert Mit anderen Worten, kein Wert wird im Paar von eckigen Klammern angegeben Ein statisches Array, auf der anderen Seite hat seine Dimensionen am Punkt der Deklaration definiert. double allbars 20 Dies wird 20 Elemente. pclose ist ein Variable wir verwenden, um die Close-Preis für die Bar, die wir gehen zu überwachen für die Überprüfung unserer Buy Sell Trades. STP und TKP werden verwendet werden, um die Stop Loss und die Take Profit Werte in unserem EA.2 3 EA gespeichert werden INTIALISIERUNGS-ABSCHNITT. Hier erhalten wir die Griffe unseres Indikators mit den entsprechenden Indikatorfunktionen. Der ADX-Indikator-Handle wird durch die Verwendung der iADX-Funktion erhalten. Es nimmt das Diagramm-Symbol NULL bedeutet auch das aktuelle Symbol auf dem aktuellen Diagramm, der Zeitplan-Zeitrahmen 0 auch Bedeutet den aktuellen Zeitrahmen auf dem aktuellen Diagramm, die ADX-Mittelungsperiode für die Berechnung des Index, den wir früher unter Eingabeparameter definiert haben, als Parameter oder Argumente. int iADX Stringsymbol, Symbolname ENUMTIMEFRAMES p Zeitraum, Periode int Adxperiod-Mittelungsperiode. Der Moving Average-Indikator-Handle wird durch die Verwendung der iMA-Funktion erhalten. Es hat die folgenden Argumente. Das Diagramm-Symbol, das mit Symbolsymbol oder NULL für das aktuelle Symbol auf dem aktuellen Diagramm erhalten werden kann Zeitrahmen, der unter Verwendung von Periodenperiode oder 0 für den aktuellen Zeitrahmen auf dem aktuellen Chart erhalten werden kann. die Moving Average-Mittelungsperiode, die wir früher unter Eingangsparameter definiert haben. Die Verschiebung des Indikators relativ zur Preisdiagrammverschiebung hier ist 0.the Moving Durchschnittliche Glättungstypen könnten beliebige der folgenden Mittelungsmethoden sein Einfache Mittelwertbildung-MODESMA, Exponential-Mittelwertbildung-MODEEMA, geglättete Mittelwertbildung-MODESMMA oder Linear-gewichtete Mittelwertbildung-MODELWMA, und der Preis, der für die Mittelung verwendet wird, verwenden wir den engen Preis. int iMA String Symbol Symbolname ENUMTIMEFRAMES Periodendauer int maperiod Mittelungsperiode int mashift horizontale Verschiebung ENUMMAMETHOD mamethod Glättung Typ ENUMAPPLIEDPRICE applicationpri Ce Art des Preises oder handle. Please lesen Sie das MQL5 Handbuch, um mehr Details über diese Indikatorfunktionen zu erhalten Es gibt Ihnen ein besseres Verständnis von, wie man jeden Indikator benutzt. Wir versuchen wieder, auf irgendeinen Fehler zu überprüfen, falls die Funktion nicht erfolgreich zurückkehrte Der Griff, wir bekommen einen INVALIDHANDLE Fehler Wir verwenden die Alert-Funktion, um den Fehler mit der GetlastError-Funktion anzuzeigen. Wir entscheiden, den Stop Loss und die Take Profit Werte in den Variablen STP und TKP zu speichern, die wir früher erklärt haben Warum machen wir das. Da die Werte, die in den INPUT-Parametern gespeichert sind, schreibgeschützt sind, können sie nicht geändert werden. Hier wollen wir also sicherstellen, dass unsere EA sehr gut mit allen Brokern arbeitet. Ziffern oder Ziffern r nennt die Anzahl der Dezimalstellen, die die Genauigkeit des Preises bestimmen Des aktuellen Chart-Symbols Für eine 5-stellige oder 3-stellige Preisliste multiplizieren wir sowohl den Stop Loss als auch den Take Profit um 10,2 4 EA DEINTIALIZATION SECTION. Since diese Funktion wird aufgerufen, wenn die EA deaktiviert oder entfernt wird f Rom ein Diagramm, werden wir alle Indikatoren Griffe, die während der Initialisierung Prozess erstellt wurden, freigegeben Wir haben zwei Griffe, eine für ADX-Indikator und eine andere Handle für die Moving Average Indikator. Wir verwenden die IndicatorRelease-Funktion, um dies zu erreichen Es dauert nur eine Argument der Indikator handle. bool IndicatorRelease int Indikatorhandle-Indikatorhandle Die Funktion entfernt einen Indikatorgriff und löscht den Rechenblock des Indikators, wenn er nicht benutzt wurde.2 5 DER EA ONTICK SECTION. Das erste, was wir hier machen müssen, ist Um zu überprüfen, ob wir genügend Stäbe auf dem aktuellen Diagramm haben Wir können die Gesamtstäbe in der Geschichte eines Diagramms mit der Stabfunktion erhalten Es nimmt zwei Parameter, das Symbol kann mit Symbol oder Symbol erhalten werden Diese zwei geben das aktuelle Symbol für das aktuelle Diagramm zurück An dem unsere EA angehängt ist und die Periode oder der Zeitrahmen des vorliegenden Diagramms unter Verwendung von Periode oder Periode erhalten werden kann Diese zwei werden den Zeitrahmen des aktuellen Diagramms zurückgeben, auf dem t Er EA ist angeschlossen. Wenn die insgesamt verfügbaren Stäbe weniger als 60 sind, wollen wir unsere EA zu entspannen, bis wir genügend Stäbe auf dem Diagramm haben Die Alert-Funktion zeigt eine Meldung auf einem separaten Fenster an. Es werden alle Werte durch Kommas als Parameter-Argumente getrennt In diesem Fall haben wir nur einen String-Wert. Die Rückkehr verlässt die Initialisierung unserer EA. Der Expert Advisor führt den Handelsbetrieb zu Beginn einer neuen Bar durch, so dass es notwendig ist, das Problem mit der neuen Balkenidentifikation zu lösen , Wir wollen sicher sein, dass unsere EA nicht auf Long Short Setups auf jedem Tick zu überprüfen, wir wollen nur unsere EA auf Long Short Positionen zu überprüfen, wenn es eine neue bar. We beginnen mit der Erklärung einer statischen datetime Variable OldTime, die speichern wird Die Bar-Zeit Wir erklärten es als statisch, weil wir wollen, dass der Wert im Speicher bis zum nächsten Aufruf der OnTick-Funktion beibehalten wird. Dann können wir seinen Wert mit der NewTime-Variablen auch des Datetime-Datentyps vergleichen, der ein Array ist F ein Element, um die neue aktuelle Bar Zeit zu halten Wir haben auch eine bool Datentyp Variable IsNewBar deklariert und setzt seinen Wert auf false Dies ist, weil wir wollen, dass sein Wert nur dann TRUE ist, wenn wir einen neuen Balken haben. Wir verwenden die CopyTime-Funktion zu bekommen Die Zeit der aktuellen Bar Es kopiert die Bar Zeit auf das Array NewTime mit einem Element, wenn es erfolgreich ist, vergleichen wir die Zeit einer neuen Bar mit der vorherigen Bar Zeit Wenn die Zeiten aren t gleich ist, bedeutet dies, dass wir eine neue haben Bar, und wir setzen die Variable IsNewBar auf TRUE und speichern den Wert der aktuellen Bar Zeit auf die Variable OldTime. Die IsNewBar Variable zeigt an, dass wir eine neue Bar haben Wenn es s FALSE ist, beenden wir die Ausführung der OnTick-Funktion An der code. it prüft auf die Debug-Modus-Ausführung, es wird die Nachricht über die Bar mal drucken, wenn Debug-Modus, werden wir es weiter zu prüfen. Das nächste, was wir hier tun wollen, ist zu überprüfen, ob wir genug Bars haben, um mit zu arbeiten Warum wiederholen Sie es Wir wollen nur sicher sein, dass unsere EA richtig funktioniert Dass die OnInit-Funktion nur einmal aufgerufen wird, wenn die EA an ein Diagramm angehängt ist, wird die OnTick-Funktion jedes Mal aufgerufen, wenn es ein neues Tick-Preis-Zitat gibt. Sie beobachten, dass wir es wieder anders gemacht haben. Wir beschließen, das zu speichern Totale Balken in der Geschichte, die wir aus dem Ausdruck erhalten haben. in einer neuen Variablen, Mybars deklariert innerhalb der OnTick-Funktion Diese Art von Variable ist eine lokale Variable, im Gegensatz zu der Variablen, die wir am INPUT PARAMETERS Abschnitt unseres Codes deklariert haben Während die Variablen, deklariert an Der Input Parameters Abschnitt unseres Codes, stehen für alle Funktionen zur Verfügung, innerhalb unseres Codes, die sie benötigen können, Variablen, die innerhalb einer einzigen Funktion deklariert sind, ist begrenzt und für diese Funktion allein verfügbar. Es kann nicht außerhalb dieser Funktion verwendet werden. Next haben wir deklariert Ein paar Variablen von MQL5-Strukturtypen, die in diesem Abschnitt unserer EA MQL5 verwendet werden, hat eine ganze Reihe von Bauwerken, die die Dinge für EA-Entwickler einfach machen lassen. Setzen wir die Strukturen nach hinten Er die andere. This ist eine Struktur für die Speicherung der neuesten Preise von symbols. struct MqlTick datetime Zeit Zeit der letzten Preise Update doppelte Gebot Aktuelle Bid Preis doppelte Frage Aktuelle Frage Preis doppelte letzte Preis der letzten Deal Letztes ulong Volumen Volumen für die Aktueller letzter Preis. Eine Variable, die vom MqlTick-Typ deklariert wurde, kann leicht verwendet werden, um die aktuellen Werte von Ask, Bid, Last und Volume zu erhalten, sobald Sie die SymbolInfoTick-Funktion aufgerufen haben. So erklärten wir den aktuellen Preis als MqlTick-Typ, so dass wir verwenden konnten Um die Ask - und Bid-Preise zu erhalten. Diese Struktur wird verwendet, um alle Handelsanforderungen für einen Handelsbetrieb durchzuführen. Sie enthält in ihrer Struktur alle Felder, die für die Durchführung eines Handelshandels erforderlich sind. MqlTradeRequest ENUMTRADEREQUESTACTIONS Aktion Handelsbetrieb Typ ulong magic Expert Advisor ID Magic Number ulong bestellen Bestellen Ticket String Symbol Handel Symbol Doppelvolumen Angefordertes Volumen für einen Deal in Los doppelten Preis Preis Double Stoplimit StopLimit Ebene der Bestellen double sl Stop Loss Level der Bestellung double tp Take Profit Level der Bestellung ulong Abweichung Maximal mögliche Abweichung vom angeforderten Preis ENUMORDERTYPE Typ Auftragsart ENUMORDERTYPEFILLING typefilling Auftragsausführung Typ ENUMORDERTYPETIME typetime Auftragsausführungszeit datetime expiration Auftragslaufzeit für die Bestellungen von ORDERTIMESPECIFIED Typ String Kommentar Order comment. Any Variable, die vom MqlTradeRequest-Typ deklariert wurde, können verwendet werden, um Aufträge für unsere Handelsoperationen zu senden. Hier haben wir als MqlTradeRequest-Typ mrequest erklärt. Das Ergebnis eines Handelsvorgangs wird als spezielle vordefinierte Struktur des MqlTradeResult-Typs zurückgegeben Jede Variable, die als MqlTradeResult-Typ deklariert ist, kann auf die Trade-Request-Ergebnisse zugreifen. struct MqlTradeResult uint retcode Operation return code ulong deal Deal-Ticket, wenn es durchgeführt wird ulong bestellen Bestellen Ticket, wenn es platziert doppelte Volumen Deal Volumen, bestätigt durch Broker doppelter Preis Deal Preis, bestätigt b Y Broker Doppel-Gebot Aktuelle Bid Preis Doppel-Ask Aktuelle Ask Preis Zeichenerklärung Broker Kommentar zu Betrieb standardmäßig ist es durch die Operation Beschreibung gefüllt. Der Preis Open, Close, High, Low, die Zeit, die Volumes jeder Bar und die Ausbreitung für In dieser Struktur wird ein Symbol gespeichert. Jedes Array, das für den Mql-Ports-Typ erklärt wurde, kann verwendet werden, um den Preis, die Volumina und die Spread-Historie für ein Symbol zu speichern. Mql Plätze datetime Zeit Zeitraum Startzeit doppelt offen Offener Preis doppelt hoch Der höchste Preis der Periode doppelt so niedrig Der niedrigste Preis der Periode doppelt schließen Schließen Preis langes Tickvolume Tick Volumen int verbreiten Spread lang realvolume Handelsvolumen. Hier haben wir ein Array matt erklärt, die verwendet werden, um diese Informationen zu speichern. Next wir beschließen, alle Arrays zu setzen wir Wird verwendet, um Bars Details als Serie zu speichern Dies ist sicherzustellen, dass die Werte, die in die Arrays kopiert werden, wie die Zeitzeichen, dh 0, 1, 2, 3, entsprechend den Balken ind Ex So verwenden wir die ArraySetAsSeries function. bool ArraySetAsSeries void Array Array durch Referenzbool Set true bedeutet umgekehrte Reihenfolge der Indexierung. Es sollte darauf hingewiesen werden, dass dies auch einmal im Initialisierungsbereich unseres Codes getan werden kann. Allerdings habe ich beschlossen, es zu zeigen An dieser Stelle für unsere Erklärung. Wir verwenden nun die SymbolInfoTick-Funktion, um das neueste Preisangebot zu erhalten Diese Funktion nimmt zwei Argumente Diagramm-Symbol und die MqlTick-Struktur Variable Aktuelle Preis Wieder, wenn es Fehler gibt, haben wir es gemeldet. Next wir kopiert die Informationen über die letzten drei Balken in unser Mqlrates-Array mit der Funktion "CopyRates" Die Funktion "CopyRates" wird verwendet, um die Verlaufsdaten der Mql - Preise-Struktur eines bestimmten Symbol-Zeitraums in der angegebenen Menge in einen Mql-Pfad-Typ zu erhalten. Array. int Kopieren Sie die Kurve Symbolname Symbolname ENUMTIMEFRAMES Zeitrahmen Periode int Startpos Start Position int Zählung Daten zählen zu kopieren Mql Pakete Ratearray Ziel Array zu kopieren. Der Symbolname wird von usi erhalten Ng Symbol der aktuelle Periodenzeitraum wird durch die Verwendung der Periode erhalten Für die Startposition beginnen wir von der aktuellen Bar, Bar 0 und wir zählen nur drei Bars, Bars 0, 1 und 2 Das Ergebnis wird in unserem Array gespeichert werden, Mrate. The mrate array enthält nun den ganzen preis, zeit, volumen und verbreitung von informationen für bars 0 1 und 2 Deshalb, um die Details einer Bar zu erhalten, werden wir folgendes verwenden. Zum Beispiel können wir die folgenden Informationen über jede Bar haben . Bar 1 Startzeit Bar 1 Offener Preis Bar 0 aktueller Bar hoher Preis, etc. Next wir, kopiert alle Indikatorwerte in die dynamischen Arrays, die wir mit der CopyBuffer-Funktion deklariert haben. int CopyBuffer int indicatorhandle, Indikatorhandle int buffernum, Indikatorpufferzahl Int startpos, Startposition int count, Betrag zum Kopieren von Doppelpuffer-Ziel-Array zum Kopieren. Der Indikator-Handle ist der Handle, den wir im OnInit-Bereich erstellt haben. In Bezug auf Pufferzahlen hat der ADX-Indikator drei 3 Puffer. Der Moving Average-Indikator hat nur einen 1 Puffer. Wir kopieren von der aktuellen Leiste 0 auf die letzten zwei Takte So Anzahl der zu kopierenden Datensätze ist 3 Takte 0, 1 und 2 Der Puffer ist die Ziel-Dynamik-Arrays, die wir früher als adxVal, plsDI, minDI und maVal deklariert haben Sehen Sie hier noch einmal, wir versuchen, irgendwelche Fehler zu erfassen, die im Kopiervorgang auftreten können Wenn es einen Fehler gibt, muss man nicht weiter gehen. Es ist wichtig zu beachten, dass die CopyBuffer - und die Copy-Pop-Funktion die Gesamtzahl der auf su kopierten Datensätze zurückgibt Ccess, während es zurückgibt -1 incase eines Fehlers Das ist der Grund, warum wir in der Fehlerprüfung Funktionen auf einen Wert kleiner als 0 null prüfen. An dieser Stelle wollen wir überprüfen, ob wir bereits eine Kauf - oder Verkaufsposition geöffnet haben Worte, wir wollen sicherstellen, dass wir nur einen Kauf oder Kaufhandel eröffnet haben. Wir wollen nicht einen neuen Kauf eröffnen, wenn wir bereits einen haben, und wir wollen keinen neuen Verkauf eröffnen, wenn wir schon einen geöffnet haben. To achieve we will first of all declare two bool data type variables Buyopened and Sellopened which will hold a TRUE value if we already have a position opened for either Buy or Sell. We use the trade function PositionSelect to know if we have an open position This function returns TRUE if we have a position opened already and FALSE if we have none. It takes, as the major argument parameter, the symbol currency pair we want to check Here, we use symbol because we are checking the current symbol currency-pair. If this expression returns TRUE, then we want to check if the position opened is a Buy or a Sell We use the PositionGetInteger function for this it gives us the type of position opened when we use it with the POSITIONTYPE modifier It returns the Position type identifier which can either be POSITIONTYPEBUY or POSITIONTYPESELL. In our case, we used it to determine which of the position we already have opened If it is a Sell, we store a TRUE value in Sellopened and if it is a Buy, we store a TRUE value in Buyopened We will be able to use these two variables later when we are checking for Sell or Buy conditions later in our code. It is now time to store the close price for the bar we will be using for our Buy Sell setup Remember we declared a variable for that earlier. Having done this, we will now proceed to the next step. It is now time to start checking for a Buy opportunity. Let us analyze the expression above as it represents the strategy we designed earlier We are declaring a bool type variable for each of our conditions that must be met bef ore an order can be placed A bool type variable can only contain TRUE or FALSE So, our Buy strategy has been broken down into four conditions If any of the conditions is met or satisfied, then a value of TRUE is stored in our bool type variable, otherwise, a value of FALSE will be stored Let us look at them one by one. Here we are looking at the MA-8 values on Bars 0, 1 and 2 If value of MA-8 on the current bar is greater than its value on the previous Bar 1 and also the MA-8 value on Bar 1 is greater than its value on Bar 2 it means that MA-8 is increasing upwards This satisfies one of our conditions for a Buy setup. This expression is checking to see if Bar 1 Close price is higher than the value of MA-8 at the same period Bar 1 period If the price is higher, then our second condition has also been satisfied, then we can check for other conditions However, if the two conditions we have just considered were not met, then there will be no need to check other conditions That is why we deci de to include the next expressions within these two initial conditions expressions. Now we want to check if the current value of ADX ADX value on Bar 0 is greater than the Minimum ADX value declared in the input parameters If this expression is true, that is, the current value of ADX is greater than the Minimum required value we also want to be sure that the plusDI value is greater than the minusDI value This is what we achieved in the next expression. If all these conditions are met, that is, if they return true, then we want to be sure that we do not open a new Buy position if we already have one It is now time to check the value of the Buyopened variable we declared earlier in our code. If Buyopened is true, we do not want to open another Buy position, so, we display an alert to inform us and then return so that our EA will now wait for the next Tick However, if Buyopened is FALSE, then we prepare our records using the MqlTradeRequest type variable mrequest which we declared earlier to send our order. The action here, which is the trade operation type, is TRADEACTIONDEAL because we are placing a trade order for an immediate execution If we are modifying an order, then we will use TRADEACTIONMODIFY To delete an order we will use TRADEACTIONREMOVE We used our MqlTick type latestprice to get the latest Ask price The order Stop loss price is obtained by subtracting our StopLoss in points from the Ask price while the order take profit price is obtained by adding our TakeProfit in points to the Ask price You will also observe that we used the NormalizeDouble function for the Ask price, the StopLoss and TakeProfit values, it is good practice to always normalize these prices to the number of digits of currency pair before sending it to the trade server. The symbol is the current symbol Symbol or Symbol The order type is the type of order we are placing, here we are placing a buy order ORDERTYPEBUY For a Sell order, it will be ORDERTYPESELL. The order typefilling is the order e xecution type ORDERFILLINGFOK means that the deal can be executed exclusively with a specified volume at the equal or better price than the order specified price If there is no sufficient volume of offers on the order symbol, the order will not be executed. The OrderSend function takes two arguments, the MqlTradeRequest type variable and the MqlTradeResult type variable. As you can see, we used our MqlTradeRequest type variable and the MqlTradeResult type variable in placing our order using OrderSend. Having sent our order, we will now use the MqlTradeResult type variable to check the result of our order If our order is executed successfully, we want to be informed, and if not, we want to know too With the MqlTradeResult type variable mresult we can access the Operation return code and also the order ticket number if the order is placed. The return code 10009 shows that the OrderSend request was completed successfully, while 10008 shows that our order has been placed That is why we have ch ecked for any of these two return codes If we have any of them, we are sure that our order has been completed or it has been placed. To check for a Sell Opportunity, we check for the opposite of what we did for Buy Opportunity except for our ADX that must be greater than the Minimum value specified. Just as we did in the buy section, we are declaring a bool type variable for each of our conditions that must be met before an order can be placed A bool type variable can only contain TRUE or FALSE So, our Sell strategy has been broken down into four conditions If any of the conditions is met or satisfied, then a value of TRUE is stored in our bool type variable, otherwise, a value of FALSE will be stored Let us look at them one by one as we did for the Buy section. Here we are looking at the MA-8 values on Bars 0, 1 and 2 If value of MA-8 on the current bar is less than its value on the previous Bar 1 and also the MA-8 value on Bar 1 is less than its value on Bar 2 it means that MA-8 is decr easing downwards This satisfies one of our conditions for a Sell setup. This expression is checking to see if Bar 1 Close price is lower than the value of MA-8 at the same period Bar 1 period If the price is lower, then our second condition has also been satisfied, then we can check for other conditions However, if the two conditions we have just considered were not met, then there will be no need to check other conditions That is why we decide to include the next expressions within these two initial conditions expressions. Now we want to check if the current value of ADX ADX value on Bar 0 is greater than the Minimum ADX value declared in the input parameters If this expression is true, that is, the current value of ADX is greater than the Minimum required value we also want to be sure that the MinusDI value is greater than the plusDI value This is what we achieved in the next expression. If these conditions are met, that is, if they return true, then we want to be sure that we do not op en a new Buy position if we already have one It is now time to check the value of the Buyopened variable we declared earlier in our code. If Sellopened is true, we do not want to open another Sell position, so, we display an alert to inform us and then return so that our EA will now wait for the next Tick However, if Sellopened is FALSE, then we setup our Sell trade request as we did for Buying order. The major difference here is the way we calculated our stop loss price and take profit price Also since we are selling, we sell at the Bid price that is why we used our MqlTick type variable latestprice to get the latest bid price The other type here, as explained earlier, is ORDERTYPESELL. Also here, we used the NormalizeDouble function for the Bid price, the StopLoss and TakeProfit values, it is good practice to always normalize these prices to the number of digits of currency pair before sending it to the trade server. Just as we did for our Buy order, we must also check if our Sell order is successful or not So we used the same expression as in our Buy order.3 Debugging and Testing our Expert Advisor. At this point, we need to test our EA to know it our strategy works or not Also, it is possible that there are one or two errors in our EA code This will be discovered in the next step. Debugging our code helps us to see how our code performs line by line if we set breakpoints and there and then we can notice any error or bug in our code and quickly make the necessary corrections before using our code in real trade. Here, we are going to go through the step by step process of debugging our Expert Advisor, first of all, by setting breakpoints and secondly, without breakpoints To do this, Make sure you have not closed the Editor First of all, let us select the chart we want to use to test our EA On the Editor Menu bar, click on Tools and click on Options as shown below. Figure 8 Setting Debugging options. Once the Options window appears, select the currency pair, and the period timeframe to use and click the OK button. Before we start the debugger, let us set breakpoints Breakpoints allow us to monitor the behavior performance of our code at certain selected locations or lines Rather than running through all the code at once, the debugger will stop whenever it see a breakpoint, waiting for your net action By this we will be able to analyze our code and monitor its behavior as it reaches every set break-points We will also be able to evaluate the values of some of our variables to see if things are actually the way we envisaged. To insert a breakpoint, go to the line in your code where you want to set the breakpoint By the left hand side, on the gray field near the border of the code line, double-click and you will see a small round blue button with a white square inside it Or on the alternative, place the cursor of your mouse anywhere on the code line where you want the breakpoint to appear and press F9 To remove the breakpoint, press F9 again or double-click o n it. Figure 10 Setting a breakpoint. For our code, we are going to set breakpoint on five different lines. I will also label them form 1 to 5 for the sake of explanation. To continue, set breakpoint at the seven code lines as shown in the figure below Breakpoint 1 is the one we have created above. Figure 11 Setting additional breakpoints. Once we have finished setting our breakpoints, we are now set to start debugging our code. To start the debugger, press F5 or click the green button on the Toolbar of the MetaEditor. Figure 12 Starting the Debugger. The first thing the editor does is to compile the code, if there is any error at the point, it will display it and if no error, it will let you know that the code compiled successfully. Figure 13 Compilation Report. Please note that the fact that the code compiled successfully does not mean there may not be errors in your code Depending on how your code is written, there may be runtime errors For example, if any of our expressions does not evaluate correctly due to any little oversight, the code will compile correctly but may not run correctly Too much of the talk, let s see it in action. Once the debugger has finished compiling the code, it takes you to the trading terminal, and attach the EA to the chart you have specified on the MetaEditor Options settings At the same time, it shows you the Input parameters section of the EA Since we are not adjusting anything yet, just click the OK button. Figure 14 Expert Advisor Input Parameters for Debugging. You will now see the EA clearly on the top-right hand corner of the chart. Once it starts the OnTick it will stop as soon as it gets to our breakpoint 1.Figure 15 Debugger stops at the first breakpoint. You will notice a green arrow at that code line That tells you that previous code line had been executed we are now ready to execute the present line. Let me make some explanations before we proceed If you look at the Editor s Tool Bar, you will observe that the three buttons with curved arr ows which were earlier grayed out are now activated This is because we are now running the debugger These buttons commands are used to step through our code Step into, Step over or Step out. Figure 16 Step into command. The Step Into is used to go from one step of the program execution into the next step, entering into any called functions within that code line Click on the button or press F11 to invoke the command We will use this command in our Step-by-Step debugging of our code. Figure 17 Step over command. The Step over on the other hand does not enter into any called function within that code line Click on the button or press F10 to invoke the command. Figure 18 Step out command. To execute a program step that is one level higher, you click this button or press Shift F11.Also, at the lower part of the Editor, you will see the Toolbox window The Debug tab in this window has the following headings. File This displays the name of the file been called. Function This displays the present funct ion from the file been called. Line This displays the number of the code line in the file from which the function is called. Expression This is where you can type the name of any expression variable you are interested in monitoring from our code. Value This will display the value of the expression variable we typed at the Expression area. Type This will display the data type of the expression variable been monitored. Back to our debugging process. The next thing we want to do is now to type in the variables expressions from our code that we are interested in monitoring Make sure you only monitor the variables expressions that really matters in your code For our example, we will monitor the following. OldTime old bar time. NewTime 0 current bar time. IsNewBar flag that indicates the new bar. Mybars Total bars in History Our EA depends on it. You can add other ones like the ADX values, the MA-8 values, etc. To add the expression variable, double-click under the Expressions area or right-click under the Expressions area and select Add as shown in the figure above. Type the expression variable to monitor or watch. Figure 19 The expressions watching window. Type all the necessary variables expressions. Figure 20 Adding expressions or variables to watch. If the variable hasn t been declared yet, its type is Unknown identifier except the static variables. Now, lets move on. Figure 21 Step into command in action. Click the Step into button or press F11 and observe what happens Keep on pressing this button or F11 until you get to breakpoint no 2 continue until you get to breakpoint no 4 as shown below and observe the expressions watching window. Figure 22 Watching the expressions or variables. Figure 23 Watching the expressions or variables. Figure 24 Watching the expressions or variables. Once there is a new tick, it will return to the fist code line of the OnTick function And all the values of our variables expression will now be reset because this is a new tick except if any of them is declared as a static variable In our case we have one static variable OldTime. Figure 25 Values of variables on NewTick event. To go over the process again, continue pressing the F11 key and keep monitoring the variables at the expressions watching window You can stop the debugger and then remove all the breakpoints. As we see, in Debug mode it prints the message We have new bar here. Figure 26 Expert Advisor prints the message in Debug mode. Start the debugging process again but this time without breakpoints Keep watching at every tick and if any of our Buy Sell condition is met, it will place a trade and since we have written our code to tell us if an order is placed successful or otherwise, we will see an alert. Figure 27 Expert Advisor places trade during debugging. I think you can leave the EA to work for a few more minutes while you take a coffee Once you are back and you have made some money just kidding , then click the STOP Red button on the MetaEditor to stop debugging. Figure 28 Stopping the debugger. What we have actually done here is to see that our EA only checks for a trade at the opening of a new Bar and that our EA actually works There is still a lot of room for adjustments to our EA code. Let me make it clear, at this point that, the Trading terminal must be connected to the internet, otherwise, debugging will not work because the terminal will not be able to trade.3 2 TESTING OUR EA STRATEGY. At this point we now want to test our EA using the Strategy Tester built into the Trading Terminal To start the Strategy Tester, press CONTROL R or click the View menu on the Terminal Menu Bar and click on Strategy Tester as shown below. Figure 26 Starting the Strategy Testing. The Tester Strategy Tester is shown at the lower part of the terminal For you to see all the Tester s settings, you need to expand resize it To do this, move your mouse pointer to the point shown by the red arrow as shown below. Figure 27 The Strategy Tester window. The mouse pointer changes to a double-end a rrow, hold down the mouse and drag the line upwards Stop when you discover that you can see everything on the settings tab. Figure 28 The Strategy Tester Settings Tab. Select the EA you want to test. Select the Currency pair to use for the test. Select the Period Timeframe to use for the test. Select Custom Period and set the dates in 5.Set the dates for the custom period to be used for the test. Execution is Normal. Select the deposit amount in USD to be used for the test. Set Optimization to Disable We are not optimizing now, we just want to test. Click this button when you are ready to start test. Before we click the Start button, lets look at the other tabs on the Tester. The processor used by the Tester for the Test Depending on your Computer s processor type Mine is only one 1 core processor. Figure 29 The Strategy Tester Agents tab. Once the agent, you will see something similar to the figure below. Figure 30 The Strategy Tester Agents tab during a test. This is where all the events going on d uring the test period is displayed. Figure 31 The Strategy Tester Journal tab showing trade activities. This is where you can specify the input parameters for the EA. Figure 32 The Strategy Tester Inputs tab. If we are optimizing our EA, then we will need to set the values in the circled area. The Start is the values you want the Tester to begin with. The Step is the increment rate for the value you selected, and. The Stop is the value at which the Tester will stop incrementing the value for that parameter. However, in our case we are not optimizing our EA, so we will not need to touch that for now. Once everything is set, we now go back to the Settings tab and click the Start button Then the tester begins its work All you need to do now is to go and take another cup of coffee if you like, or, if you are like me, you may want to monitor every event, then turn to the Journal tab. Once you begin to see messages about orders been sent on the Journal Tab, you may then wish to turn to a NEW tab named Graph which has just been created Once you switch to the Graph tab, you will see the graph keep on increasing or decreasing as the case may be depending on the outcome of your trades. Figure 33 The graph result for the Expert Advisor Test. Once the test is completed, you will see another tab called Results Switch to the Results tab and you will see the summary of the test we have just carried out. Figure 34 The Strategy Tester Results tab showing test results summary. You can see the total Gross Profit, Net Profit, total trades total loss trades and many more Its really interesting to see that we have about USD 1,450 0 within the period we selected for our test At least we have some profit. Let me make something very clear to you here You will discover that the settings for the EA parameters that you see in the Strategy tester is different from the initial settings in the Input parameters of the EA I have just demonstrated to you that you can change any of those input parameters to get the best out of your EA Instead of using a period of 8 each for the Moving Average and ADX, I changed it to 10 for Moving Average and 14 for ADX I also change the Stop Loss from 30 to 35 Last but not the least, I decided to use 2 Hour timeframe Remember, this is the Strategy Tester. If you want to view a complete report of the test, then right-click on anywhere in the Results tab, you will see a menu From this menu, Select Save as Report. Figure 35 Saving the result of the test. The save dialog window will appear, type a name for your report if you want, otherwise leave the default name and click the save button The whole report will be saved in HTML format for you. To view the chart for the test that was carried out, click Open Chart and you will see the chart displayed. Figure 36 The chart showing the test. That s it, we have successfully written and tested our EA and we now have a result to work with You can now go back to the strategy tester Settings tab and make the test for other Timefram es Period. I want you to carry out the test using different currency pairs, different timeframes, different Stop Loss, different Take profit and see how the EA performs You can even try new Moving Average and ADX values As I said earlier, that is the essence of the Strategy tester I will also like you to share your results with me. In this step by step guide, we have been able to look at the basic steps required in writing a simple Expert Advisor based on a developed trading strategy We have also looked at how we check our EA for errors using the debugger We also discussed how to test the performance of our EA using the Strategy Tester With this, we have been able to see the power and robustness of the new MQL5 language Our EA is not yet perfect or complete as many more adjustments must still be made in order to used it for real trading. There is still more to learn and I want you to read the article over again together with the MQL5 manual, and try everything you have learn in this artic le, I can assure you that you will be a great EA developer in no distant future. Hello Mr Olowoyo Thanks you very much for your extremelly interesting article about the way to build and EA It is simples for beginners and really helpful I am really new in the coding of EA but I realize it is extremelly necessary to test different strategies I have downloaded you EA and try to compile it but I get immediately 50 errors In the previous comments I did not see such problems reported by the users Please find enclosed a extract of the error table I will appreciate very to receive some help Jean Philippe. Hi Samuel your guide was awesome and really cleared the air but I have some problems in calling other indicators in my EA can you tell me how add MACD and VIDyA signals in my EA I need to calculate the Signal and Main amount of MACD for example but don t know how to call them in my EA That would be a great help if you tell me how to do that you are awesome. I am trying to compile the code provid ed in this tutorial but getting the error iADX wrong parameter count at the following line adxHandle iADX NULL,0,ADXPeriod The code seems fine to me How do I fix the error Could anyone help. Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising If you continue browsing the site, you agree to the use of cookies on this website See our User Agreement and Privacy Policy. Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising If you continue browsing the site, you agree to the use of cookies on this website See our Privacy Policy and User Agreement for details. Explore all your favorite topics in the SlideShare app Get the SlideShare app to Save for Later even offline. Continue to the mobile site. Double tap to zoom out. Forex trading for dummies 2016 updated. Share this SlideShare. LinkedIn Corporation 2017.Forex Day Trading - Why Us. Learn to trade Forex like a pro with our free train ing program You will learn how to trade with our powerful, proprietary trading systems and benefit from our unique mental training MP3 s. You ll also have the opportunity to trade for our retail and institutional clients as a money manager, prop trader, or hedge fund manager. It s the accelerated approach to a successful trading career. Forex Day Trading offers some unique services to our Investors and traders Here are some. Accelerated Trading Career Opportunity with FastTrack Enjoy professional trading tools and training via our FastTrack FX Pro Trader program For both beginner and advanced traders who want to trade for a living or more effectively. Attractive IB Program An introducing broker makes money by offering forex services to potential traders Qualified individuals and institutions welcomed. Maximum Safety of Funds via Trust For the first time ever, ANY size client can open a trust account This provides the ultimate environment for safety of funds, something that almost no brokerag e firm offers. Professionally Managed Accounts Created for investors who don t have time to trade their own account or want to add diversification to their investment portfolios. Free MP3 to Tune Your Mind for Trading Success Request a Free Demo from our main menu and download our proprietary Forex Mental Tuner MP3 which conditions your mind for trading success while you sleep. Advantages of Trading Forex. Trading the foreign exchange Forex or FX market has a number of advantages over stock and futures trading. Trading 24 Hours a Day From Sunday afternoon to Friday afternoon US time. Low Minimum Investment Trading currencies requires a lot less starting capital than trading stocks You can start with just 100 USD. Attractive IB Opportunities Offer forex services to traders and get compensated We offer one of the most beneficial IB programs in our Industry.1000 1 Leverage FX trading offers greater buying power than day trading stocks, which offers 4 1 maximum leverage. Tight Trading Spreads Frac tion of 1 pip Sub 1-pip spreads on some of the major currency pairs the majors. Simpler to Trade than Stocks There are only a few major currencies in forex, whereas in the equities market there are tens of thousands of possible stocks to trade. Free Trading Platform with Real-time Charts and News Free trading platform based on MetaTrader technology with streaming, real-time charts, news and commentary relevant to the currency market. No Re-Quotes on MT4 Platform During normal market volatility in the foreign exchange market. No Trading Restrictions in Falling Markets There are no restrictions to sell currencies short, unlike stocks, which have artificial restrictions in place when sold short or when the market drops by a given amount. Forex Market Latest News. The Euro was unable to sustain a recovery attempt on Tuesday and came under fresh selling pressure as the dollar gained renewed support after stronger than expected data The Australian Reserve Bank interest rate decision was one of the least Continue reading. Monday s trading maintained the familiar pattern seen after a Friday payroll release with generally lacklustre conditions and narrow ranges, amplified by the normal dip in trading volumes during August The dollar overall was still hampered by profit taking and corrective Continue reading. Friday s economic data was not strong enough to trigger further dollar buying with the currency subjected to profit taking after a strong week Equity markets generally remained on the defensive following sharp Wall Street losses overnight and risk conditions overall Continue reading. Start Your FX Business.


No comments:

Post a Comment