Skip to main content

Einfach Bewegter Durchschnitt Experte Berater Mt4


Der Moving Average Cross Expert Advisor Das gleitende durchschnittliche Cross ist eine der beliebtesten Trading-Strategien. Es verwendet zwei oder mehr gleitende Durchschnitte von verschiedenen Perioden, um die Richtung des Trends zu bestimmen. Wenn der schnellere gleitende Durchschnitt (s) über dem langsameren gleitenden Durchschnitt liegt, wird eine lange Position geöffnet und umgekehrt für eine kurze Position. Das gleitende Durchschnittskreuz zeichnet sich bei langen, anhaltenden Trends als mittelfristige Handelsstrategie aus. Strategien, die auf dem gleitenden durchschnittlichen Kreuz basieren, wurden immer häufig von unseren Kunden angefordert, und deshalb bieten wir Ihnen den gleitenden durchschnittlichen Cross-Experten-Berater an. Sie können jetzt diesen beliebten Fachberater für über 50 off kaufen. Früher 45 ist der deluxe Moving Average Cross Expertenberater jetzt nur 19.95 bis zu 3 Moving Average Lines. Verwenden Sie zwei gleitende Durchschnitte, oder fügen Sie ein Drittel hinzu, um Langzeittrends herauszufiltern. Verschieben von durchschnittlichen Typen. Einfach. Exponentiell Geglättet oder linear gewichtet. Preisdaten. Wählen Sie aus Schließen, Öffnen, Hoch, Niedrig, Median, Typisch oder Gewichtet Schließen. Verschiebung . Verschieben Sie die gleitenden durchschnittlichen Linien vorwärts oder rückwärts. Mehrere Zeitrahmen. Jeder gleitende Durchschnitt kann auf jeden Zeitplan festgelegt werden. Money Management - Die Losgröße wird automatisch so berechnet, dass das maximale Risiko pro Trade auf einen Prozentsatz Ihres Eigenkapitals beschränkt ist. Trailing Stop Break Even Stop - Automatische Anpassung der Stop-Loss als der Handel bewegt sich in Profit. Setzen Sie minimale Gewinnniveaus, Schritt nachlaufende Stopp in Schritten und mehr Daily Trade Timer - Begrenzen Sie Ihren Intraday-Handel auf die Stunden, dass der Markt am aktivsten ist. Sie können optional alle offenen Aufträge am Ende des Tages schließen. Manuelle Auftragssteuerung - Platzieren Sie manuelle Bestellungen auf Ihrem Diagramm mit einem bestimmten Handelskommentar, und das MA Cross EA wird den Stopverlust verfolgen und den Auftrag automatisch auf einem entgegengesetzten Kreuz schließen. Führen Sie einmal pro Bar oder jedes Tick aus. Wählen Sie aus, wie oft die Reihenfolge der Öffnungs - und Schließbedingungen überprüft werden soll. Sie können auf jedem Tick handeln, oder nur am Ende jeder Bar. Close On Cross - Schließen Sie die aktuell geöffnete Position auf einem gleitenden Durchschnitt in die entgegengesetzte Richtung. Wenn deaktiviert, werden die Aufträge nur bei einem Stop-Loss oder manuell beendet. Robust . Vollständige Fehlerbehandlung und Benachrichtigung, Wiederholen auf Anfragen und vieles mehr. Kompatibel mit ECN und 5-stelligen Brokern. Alerts - Wählen Sie zwischen Audio-Alarme, dem integrierten Alert-Dialog, E-Mail-Benachrichtigungen oder Benachrichtigungen, die an Ihr Smartphone gesendet werden. Sie können die Moving Average Cross EA sofort für nur 19.95Typisch kaufen, können zwei gleitende Durchschnitte verwendet werden, um eine Forex-Strategie (EA für MT4) mit diesen Regeln zu erstellen: Kaufen, wenn die kurze Periode gleitenden Durchschnitt über dem langen Zeitraum gleitenden Durchschnitt Sell wann Der langzeitige gleitende Durchschnitt liegt über dem gleitenden Durchschnitt der kurzen Periode. Auf dem folgenden Graphen vom MetaTrader-Terminal ist die gelbe Linie die kurze Periode gleitender Durchschnitt (Periode9) und die rote Linie ist die lange Periode gleitenden Durchschnitt (Periode 18). Analysieren Sie den Graphen, können wir die Handelsregeln oder Forex-Signale umschreiben als: Kaufen, wenn die gelbe Linie über der roten Linie ist Verkaufen Sie, wenn die gelbe Linie unter der roten Linie ist Statt einer langjährigen Kodierung dieser Forex-Strategie mit Molanis Strategy Builder Sie können ein Handelsdiagramm erstellen, das die gleitende durchschnittliche Strategie in Minuten darstellt. Einfach per Drag & Drop zwei Technical Analysis-Blöcke, ein Buy-Block und ein Sell-Block. Verbinden Sie sie und setzen Sie die Blockparameter, um ein Diagramm wie das folgende zu erhalten: Dieses Handelsdiagramm hat zwei Handelspfade. Die linke ist hervorgehoben. Es geht vom START-Block zum END-Block. Man könnte es als lesen: Kaufen Sie 1 Los EURCAD (mit einem 100 Pip Take Profit und 50 Pip Stop Loss), wenn die kurze Periode gleitenden Durchschnitt (9) über dem langen Zeitraum gleitenden Durchschnitt (18) ist. Denken Sie daran, das Handelsdiagramm in entgegengesetzter Richtung zum Handelsfluss zu lesen. Der richtige Handelspfad könnte als gelesen werden: Verkaufen Sie 1 Los EURCAD (mit einem 100 Pip Take Profit und 50 Pip Stop Loss), wenn die lange Periode gleitenden Durchschnitt (18) über dem kurzen Zeitraum gleitenden Durchschnitt (9) liegt. Erzeugen des MQL-Codes für MetaTrader mit nur einem Klick Im Trading-Diagramm-Menü klicken Sie auf MMS4-Code generieren, um das MQL4-Code-Fenster zu erhalten. Mit Molanis Strategy Builder können Sie Ihren Fachberater direkt mit MetaTrader öffnen oder als MQ4-Datei speichern. Verpassen Sie nicht unsere Video-Tutorial onSimple Expert Advisor Problem 29. Erstellen Sie einen Trading Expert Advisor. Vorläufige Argumente Vor Beginn der Programmierung eines Trading Expert Advisor ist es notwendig, allgemeine Grundsätze eines zukünftigen Programms zu definieren. Es gibt kein strenges Programm, das Regeln erstellt. Allerdings, sobald ein Programm erstellt, ein Programmierer in der Regel weiter zu verbessern. Um das Programm in Zukunft problemlos verstehen zu können, muss es in Übereinstimmung mit einem gut durchdachten und leicht verständlichen Schema erstellt werden (es ist besonders wichtig, wenn ein Programm von einem anderen Programmierer weiter verbessert wird). Das bequemste Programm ist das, das aus Funktionsblöcken besteht, von denen jeder für seinen Teil der Berechnungen verantwortlich ist. Um einen Algorithmus eines Handels-Experten-Beraters zu erstellen, können wir analysieren, was ein Betriebsprogramm tun soll. Eine der wichtigsten Daten bei der Bildung von Handelsaufträgen ist die Information über Aufträge, die bereits in einem Client-Terminal vorhanden sind. Einige der Handelsstrategien erlauben nur eine unidirektionale Ordnung. Im Allgemeinen, wenn eine Handelsstrategie erlaubt, können mehrere Aufträge gleichzeitig in einem Terminal geöffnet sein, obwohl ihre Zahl vernünftigerweise begrenzt sein sollte. Bei der Verwendung einer Strategie sollten Handelsentscheidungen unter Berücksichtigung der aktuellen Situation getroffen werden. Bevor eine Handelsentscheidung in einem Programm getroffen wird, ist es notwendig zu wissen, welche Handelsaufträge bereits eröffnet oder platziert wurden. Zuerst muss ein Programm einen Block von Auftragsabrechnungen enthalten, der zu den ersten führt, die ausgeführt werden sollen. Während einer EA-Ausführung sollten Handelsentscheidungen getroffen werden, deren Umsetzung zur Durchführung von Handelsoperationen führt. Code-Teil verantwortlich für Handelsaufträge Bildung ist besser in einem separaten Block geschrieben. Ein Expert Advisor kann eine Handelsanforderung bilden, um eine neue anhängige oder Marktordnung zu öffnen, irgendwelche vorhandenen Aufträge zu schließen oder zu modifizieren oder überhaupt keine Aktionen durchzuführen. Ein EA muss auch die Auftragspreise je nach Wunsch des Anwenders berechnen. Handelsentscheidungen sollten in einem Programm auf der Grundlage von Handelskriterien getroffen werden. Der Erfolg des gesamten Programms hängt von der Korrektheit der Erkennung von Handelskriterien im Programm ab. Bei der Berechnung von Handelskriterien kann ein Programm alle Informationen berücksichtigen, die nützlich sein können. Beispielsweise kann ein Expert Advisor die Kombination von technischen Indikatorwerten, Zeit der wichtigen Pressemitteilungen, der aktuellen Zeit, der Werte einiger Preisniveaus usw. analysieren. Für die Bequemlichkeit sollte der für die Berechnung der Handelskriterien zuständige Programmteil separat geschrieben werden Block. Ein Trading Expert Advisor muss unbedingt Fehlerbearbeitungsblock enthalten. Die Analyse von Fehlern, die bei der Ausführung des Handelsbetriebes auftreten können, ermöglicht es einerseits, eine Handelsanforderung zu wiederholen und andererseits einen Benutzer über eine mögliche Konfliktsituation zu informieren. Aufbau eines einfachen Expertenberaters Im Folgenden ist ein strukturelles Schema eines einfachen Expertenberaters, der auf der Basis mehrerer Funktionsblöcke aufgebaut ist, in jedem Block einen gewissen freistehenden Teil der Berechnungen. Auf der folgenden EA-Entwicklungsstufe gibt es noch keinen Programmcode. Gleichzeitig wird der Algorithmus eines Programms weitgehend gebildet. Wie die EA auf den Grundlagen des angebotenen Schemas aufgebaut wird, kann leicht verstanden werden, einfach auf das Schema zu schauen und auf Blocknamen und Relationen Arrays (Kontrolle übergeben) zwischen ihnen zu orientieren. Nach dem Programmstart wird die Steuerung an den Block der Vorverarbeitung übergeben. In diesem Block können einige allgemeine Parameter analysiert werden. Zum Beispiel, wenn es nicht genügend Stäbe in einem Fenster gibt (Stäbe, die für die Berechnung von Parametern von technischen Indikatoren erforderlich sind), kann ein EA nicht in der Lage sein, angemessen zu funktionieren. In einem solchen Fall muss eine EA die Operation beenden, die vorläufig einen Benutzer darüber informiert und über den Grund der Kündigung berichtet. Wenn es keine Kontraindikaten eines allgemeinen Charakters gibt, wird die Kontrolle an den Auftragsbuchungsblock übergeben. Im Block der Buchhaltungsaufträge wird die Anzahl und Qualität der Aufträge, die in einem Client-Terminal für eine Sicherheit (an das Fenster, an dem die EA angeschlossen ist) vorhanden sind, erkannt. In diesem Block müssen Aufträge anderer Wertpapiere beseitigt werden. Wenn eine programmierte Handelsstrategie nur Marktaufträge erfordert (und keine ausstehenden Aufträge verwendet), muss die Tatsache der Anwesenheit ausstehender Aufträge festgestellt werden. Wenn eine Strategie nur eine Marktordnung zulässt und es tatsächlich mehrere Aufträge gibt, sollte diese Tatsache auch bekannt sein. Die Aufgabe des Auftragsabrechnungsblocks (in diesem Schema) besteht darin, festzustellen, ob die aktuelle Handelssituation mit einer erwarteten, dh derjenigen, in der die EA adäquat arbeiten kann, entspricht. Wenn die Situation zustimmt, muss die Steuerung an den nächsten Block übergeben werden, um den EAs-Vorgang fortzusetzen, wenn nicht, muss der EAs-Vorgang beendet werden und diese Tatsache muss einem Benutzer gemeldet werden. Wenn es keine Aufträge im Terminal gibt oder die Anzahl und Qualität der bestehenden Aufträge dem, was erwartet wurde, entspricht, wird die Kontrolle an den Block der Definition von Handelskriterien übergeben. In diesem Block werden alle für die Entscheidungsfindung notwendigen Kriterien berechnet, nämlich Kriterien für die Eröffnung, Schließung und Änderung von Aufträgen. Eine weitere Kontrolle wird an den Block der Abschlussaufträge übergeben. Es ist leicht zu verstehen, warum in dem angebotenen Schema der Block der Schlussaufträge früher als der Block der Eröffnungsaufträge ausgeführt wird. Es ist immer vernünftiger, erste bestehende Aufträge zu bearbeiten (zu schließen oder zu modifizieren) und erst danach neue Aufträge zu eröffnen. Im Allgemeinen ist es richtig, von dem Wunsch geleitet zu werden, so wenig Aufträge wie möglich zu haben. Bei der Ausführung dieses Bausteins müssen alle Aufträge, für die das Schlusskriterium aktiviert wurde, geschlossen werden. Nachdem alle notwendigen Aufträge geschlossen wurden, wird die Kontrolle an einen Block der neuen Auftragsgrößenberechnung übergeben. Es gibt viele Algorithmen zur Berechnung eines Auftragsvolumens. Die einfachste von ihnen ist mit einer konstanten, festen Losgröße. Es ist praktisch, diesen Algorithmus in einem Programm zum Testen von Strategien zu verwenden. Eine populärere Methode, eine Auftragsgröße zu definieren, setzt die Anzahl der Lose in Abhängigkeit von der Menge der freien Marge, zum Beispiel 30-40 davon. Wenn die freie Marge nicht ausreicht, beendet das Programm seinen Betrieb, indem er einen Benutzer über den Grund informiert hat. Nachdem die Anzahl der Lose zum Öffnen neuer Aufträge definiert ist, wird die Steuerung an den Auftragsöffnungsblock übergeben. Wenn irgendwelche Kriterien, die früher berechnet wurden, auf die Notwendigkeit der Eröffnung einer Bestellung eines bestimmten Typs hinweisen, wird in diesem Block eine Handelsanforderung zum Öffnen einer Bestellung gebildet. Es gibt auch Fehleranalyse Block in einem Expert Advisor. Wenn ein Handelsvorgang fehlgeschlagen ist, wird die Kontrolle (nur in diesem Fall) an den Fehlerverarbeitungsblock übergeben. Wenn ein von einem Server oder Client-Terminal zurückgegebener Fehler nicht entscheidend ist, wird ein weiterer Versuch unternommen, einen Handelsvorgang durchzuführen. Wenn ein entscheidender Fehler zurückgegeben wird (z. B. ist ein Konto gesperrt), muss ein EA seinen Betrieb beenden. Denken Sie daran, in MQL4 gibt es keine Möglichkeit des Programms, einen EAs-Vorgang in einem Sicherheitsfenster zu beenden (im Unterschied zu Skripten, siehe Sonderfunktionen). Was kann man in einer Programmweise machen, ist die Beendigung von start (). Bei einem Neustart der Funktion start () bei einem neuen Tick kann der Wert eines bestimmten Variablenflags, der den Handel verboten (in diesem Fall durch einen kritischen Fehler freigegeben) analysiert und kontrolliert werden kann, für die Beendigung des Sonderfunktion Betrieb, so Bildung von neuen Handel Anfrage ist nicht erlaubt. In dem angebotenen Schema wird der Flagwert im Block der Vorverarbeitung analysiert. Handelsstrategie Die Marktpreise bewegen sich ständig. Der Marktstaat kann zu jedem Zeitpunkt bedingt entweder als Trend - starke unidirektionale Preisänderung (Aufstieg oder Fall) oder als flach - laterale Preisbewegung mit schwachen Abweichungen von einem bestimmten Durchschnitt charakterisiert werden. Diese Marktmerkmale sind bedingt, da es keine klaren Kriterien gibt, nach denen Trend oder Flat identifiziert werden kann. Zum Beispiel lange seitliche Bewegungen mit starken Abweichungen, die weder auf eine Ebene noch auf einen Trend zurückverfolgt werden können. Generell wird davon ausgegangen, dass der Markt vor allem im Zustand der seitlichen Bewegung und Trends in der Regel stattfinden 15-20 der Zeit. Alle Handelsstrategien können auch konventionell in zwei Hauptgruppen unterteilt werden. Die erste Gruppe enthält flach orientierte Strategien. Der Grundgedanke solcher Strategien ist, dass nach einer offensichtlichen Abweichung der Preis auf die vorherige Position zurückkehren muss, deshalb werden die Aufträge in der Richtung entgegen der letzten Preisbewegung eröffnet. Die zweiten Gruppenstrategien sind Trendstrategien, wenn Aufträge in die gleiche Richtung wie die Salzpreisbewegung geöffnet werden. Es gibt kompliziertere (kombinierte) Strategien. Solche Strategien berücksichtigen viele verschiedene Faktoren, die den Markt charakterisieren, so dass der Handel sowohl auf flach als auch auf Trend durchgeführt werden kann. Es ist nicht schwer, den Handel nach dieser oder jener Strategie technisch umzusetzen - MQL4 enthält alle notwendigen Mittel dafür. Die Hauptarbeit bei der Schaffung einer einmaligen Strategie besteht in der Suche nach Handelskriterien. Trading Criteria In diesem Beispiel werden wir versuchen, einen Trend Expert Advisor zu konstruieren, d. h. derjenige, der Aufträge in der Preisbewegungsrichtung öffnen wird. Also, wir müssen unter verschiedenen technischen Indikatoren diejenigen, die einen Trend beginnen zu finden. Eine der einfachsten Methoden der Suche nach Handelskriterien basiert auf der Analyse der Kombination von MAs mit unterschiedlichen Mittelungsperioden. Feige. 111 und Fig. 112 zeigen die Position von zwei verschiedenen MA (mit Perioden der Mittelung 11 und 31) auf verschiedenen Marktteilen. Durchschnitte mit kleiner Mittelungsperiode (rote Linien) sind näher an einer Preisliste, Twisty und beweglich. Bewegungsdurchschnitte mit größerer Periodendauer (blaue Linie) sind inert, haben eine größere Verzögerung und liegen weiter von den Marktpreisen. Lets achten auf Orte, an denen MAs mit verschiedenen Mittelungsperioden kreuzen und versuchen zu entscheiden, ob die Tatsache der MA-Kreuzung als Lesekriterium verwendet werden kann. Feige. 111. Überquerung von MA (11) und MA (31), wenn sich die Preisbewegungsrichtung ändert. In Fig. 111 sehen wir einen Marktteil, wo Eröffnungsaufträge in Richtung Preisbewegung bei MA-Kreuzung gerechtfertigt sind. In Punkt A kreuzt die rote Linie die blaue von unten nach oben, danach wächst der Marktpreis für einige Zeit weiter. Eine weitere umgekehrte MA-Kreuzung zeigt die Preisbewegungsrichtungsänderung an. Wenn wir einen Kaufauftrag an Punkt A öffnen und ihn bei B schließen, erhalten wir Gewinn proportional zum Unterschied von A - und B-Preisen. Feige. 112. Überquerung von MA (11) und MA (31), wenn sich die Preisbewegungsrichtung ändert. Gleichzeitig gibt es andere Momente auf dem Markt, wenn das MA-Kreuz, aber dies führt nicht zu einem weiteren Preisanstieg oder - abfall (Abb. 112). Aufträge, die bei MA-Kreuzungen in solchen Momenten eröffnet werden, führen zu Verlusten. Wenn der Verkauf bei A eröffnet und bei B geschlossen wird, wird ein solcher Handel Verluste bringen. Dasselbe gilt für einen bei B eröffneten Kaufauftrag, der bei C geschlossen ist. Der Erfolg der gesamten Strategie, die auf der Basis der MA-Kreuzung durchgeführt wird, hängt von der Anzahl der Teile ab, die als Trend und flach charakterisiert werden können. In flach oft MA Kreuzung ist ein regelmäßiges Ereignis, das jede Trendstrategie beeinträchtigt. Zahlreiche falsche Signale führen in der Regel zu Verlusten. Aus diesem Grund kann diese Zeichenüberquerung von MAs mit unterschiedlicher Mittelungsperiode für den Aufbau von Handelsstrategien nur in Kombination mit anderen Zeichen, die einen Trend darstellen, genutzt werden. In diesem Beispiel (für den Aufbau eines einfachen Expertenberaters) müssen wir dieses Zeichen nicht verweigern. Wir werden ein anderes Zeichen benutzen. Analysieren visuell den Charakter der Preisveränderungen auf dem Markt, können wir sehen, dass eine lange Ein-Richtungs-Preisanstieg oder - abfall oft als Folge einer kurzen starken Bewegung auftritt. Mit anderen Worten, wenn innerhalb einer kurzen Zeit eine starke Bewegung geschehen ist, können wir erwarten, dass ihre Fortsetzung in einer mittelfristigen Periode. Feige. 113 zeigt die Marktperiode, in der eine starke Bewegung zur Fortsetzung der Preisänderung in die gleiche Richtung führte. Als Kontingent starke Bewegung können wir die Differenz der MAs mit unterschiedlichen Mittelungsperioden verwenden. Je stärker die Bewegung, desto größer ist die Verzögerung von MA mit größerer Mittelungsperiode von MA mit einer kleinen Periode der Mittelung. Darüber hinaus führen selbst starke diskontinuierliche Preisbewegungen mit weiterer Rückkehr nicht zu einem großen Unterschied zwischen den MAs, d. h. zahlreiche falsche Signale erscheinen nicht. Zum Beispiel führte der Preissprung um 50 Punkte mit weiterer Rückkehr (in der Mitte in Abb. 113) eine Zunahme der Differenz zwischen den MAs nur um 20 Punkte. Gleichzeitig hat eine wirklich starke Bewegung (die in der Regel nicht von einer beträchtlichen Korrektur begleitet wird) in Punkt A zu einer Differenzerhöhung von bis zu 25 - 30 Punkten geführt. Wenn der Kaufauftrag eröffnet wird, wenn ein bestimmter Unterschied zwischen den MAs erreicht wird, z. B. in A, ist die Bestellung wahrscheinlich rentabel, wenn ein Preis einen voreingestellten Stop-Bestellwert erreicht. Nutzen Sie diesen Wert als Trading-Kriterium in unserem Expert Advisor. Anzahl der Aufträge In diesem Beispiel analysieren wir einen Expert Advisor, der die Anwesenheit von nur einer Marktordnung zulässt, anstehende Aufträge werden nicht zur Verfügung gestellt. Ein solcher Ansatz ist nicht nur in diesem bestimmten Beispiel gerechtfertigt, sondern kann als Grundlage für jede Strategie verwendet werden. Ausstehende Aufträge werden in der Regel verwendet, wenn ein Entwickler ein recht zuverlässiges Kriterium für die Prognose der zukünftigen Preisänderung mit hoher Wahrscheinlichkeit hat. Wenn es kein solches Kriterium gibt, müssen keine ausstehenden Aufträge verwendet werden. Die Situation, wenn mehrere entgegengesetzte Aufträge für eine Sicherheit offen sind, kann auch nicht als vernünftig angesehen werden. Es wurde früher geschrieben, dass aus ökonomischer Sicht entgegengesetzte Aufträge als sinnlos betrachtet werden, vor allem, wenn die Auftragspreise gleich sind (siehe Schluss - und Löschvorgänge). In solch einem Fall sollten wir einen anderen von einem anderen schließen und auf ein Signal warten, um eine Marktordnung in einer bestimmten Richtung zu öffnen. Verknüpfung von Handelskriterien Aus dieser Position wird deutlich, welche Beziehungen zwischen den Handelskriterien möglich sind. Feige. 114 zeigt drei Varianten der Korrelation von Handelskriterien, wenn jedes Kriterium wichtig (gültig) ist. Aktionen (Eröffnung und Schließung von Marktaufträgen) finden im Uhrzeigersinn auf den folgenden Bildern statt. Feige. 114. Reihenfolge der Eröffnungs - und Schlusskriterien Korrelation (a und b - richtig, c - falsch). Die beliebteste Variante eines korrekt geformten Handelskriterien ist die Variante a. Nach der Eröffnung wird eine Marktordnung Buy bis zu dem Moment gehalten, in dem das Kriterium seine Schließungsauslöser erfordert. Danach tritt eine Pause auf, wenn keine Aufträge eröffnet werden. Weiterhin kann ein Marktauftrag verkauft werden. Die Bedingungen für die Schließung einer Verkaufsreihenfolge (nach korrekt geformten Kriterien) treten früher auf als die Bedingungen für die Eröffnung eines Kaufauftrags. Allerdings kann ein Kaufauftrag wieder geöffnet werden, wenn ein Handelskriterium dies erfordert. Aber nach dieser Variante kann eine Marktordnung nicht eröffnet werden, wenn es eine offene Marktordnung in entgegengesetzter Richtung gibt. Ähnliche Kriterien Korrelation ist in der Variante b. Der Unterschied besteht darin, dass ein Kriterium für die Eröffnung einer Marktordnung zugleich ein Kriterium für die Schließung der entgegengesetzten Reihenfolge ist. Diese Variante wie die Variante a erlaubt nicht, dass mehrere Aufträge gleichzeitig im Terminal auf einer Sicherheit geöffnet werden. Die Variante der Kriterienkorrelation ist falsch. Nach dieser Variante ist die Eröffnung einer Marktordnung erlaubt, wenn entgegenstehende Aufträge noch nicht geschlossen sind, was sinnlos ist. Es gibt seltene Fälle, wenn diese Variante teilweise gerechtfertigt ist. Die Eröffnung einer umgekehrten Reihenfolge ist manchmal für die Kompensation von Verlusten, die bei kleinen Korrekturen nach starken Kursbewegungen auftreten, akzeptabel. In solchen Fällen kann eine entgegengesetzte Reihenfolge von demselben oder kleineren Wert geöffnet werden, als der bereits vorhandene und dann geschlossen, wenn die Korrektur vorbei ist. Eine solche Taktik erlaubt es nicht, die in der Trendrichtung eröffnete Quote zu stören. Im allgemeinen sind auch mehrere Richtungsanordnungen möglich. Dies kann gerechtfertigt sein, wenn ein früher geöffneter Auftrag durch einen Stop-Auftrag geschützt ist und das Kriterium, das auf die Preisentwicklung in der gleichen Richtung hinweist, erneut ausgelöst wird. Bei der Schaffung einer solchen Strategie muss sich ein Entwickler jedoch bewusst sein, dass im Falle einer starken Preisbewegungsänderung die platzierten Stoppaufträge von einigen Brokern bei der ersten Preisuntersuchung nicht ausgeübt werden können. Und der Verlust wird proportional zum Gesamtwert der einseitigen Marktaufträge sein. In unserem Beispiel verwenden wir die Variante b der Trading-Kriterien-Korrelation. Alle eröffneten Marktaufträge werden entweder durch eine Stopp-Order oder nach einem Kriterium der Eröffnung einer Bestellung in entgegengesetzter Richtung ausgelöst (hier das Kriterium der Schließung Buy fällt mit dem der Öffnung Sell und umgekehrt). Größe der eröffneten Aufträge In jeder Handelsstrategie sollten die Bestellgrößen vernünftigerweise begrenzt werden. In einem einfachen Fall wird eine feste Auftragsgröße in einem Expert Advisor verwendet. Bevor der EA-Betrieb beginnt, kann ein Benutzer eine beliebige Größe von zukünftigen Aufträgen festlegen und ihn für einige Zeit unverändert lassen. Wenn sich die Balance ändert, kann ein Benutzer einen neuen Wert der Losnummern der geöffneten Aufträge einrichten. Eine zu geringe Auftragsgröße bietet mehr Vertrauen in den Betrieb bei der unvorhersehbaren Marktveränderung, aber der Gewinn im Erfolgsfall wird nicht so groß sein. Wenn die Auftragsgröße zu groß ist, kann ein großer Gewinn erworben werden, aber eine solche EA wird zu riskant sein. Normalerweise ist die Größe der geöffneten Aufträge so eingestellt, dass die Margin-Anforderungen nicht mehr als 2-35 Prozent des Saldos oder der freien Marge überschreiten (wenn eine Strategie nur eine geöffnete Order, Balance und freie Marge im Moment vor der Auftragsöffnung erlaubt gleich). In diesem Beispiel werden beide Varianten implementiert. Ein Benutzer kann entweder wählen, um direkt Werte von Aufträgen anzugeben oder den Wert in Prozent von der freien Marge festzulegen. Programmierdetails Ein einfacher Trend Expert Advisor tradingexpert. mq4, der auf der Basis früherer Argumente konstruiert wurde, kann so aussehen: Variablen beschreiben Ein weiteres Kriterium bei der Programmschätzung ist seine Lesbarkeit. Ein Programm gilt als richtig geschrieben, wenn es von anderen Programmierern leicht gelesen werden kann, deshalb müssen alle Hauptprogrammteile und Hauptmomente, die die Strategie charakterisieren, kommentiert werden. Aus diesem Grund empfiehlt es sich, alle Variablen zu Beginn des Programms zu deklarieren und zu kommentieren. Im Block 1-2 werden externe und globale Variablen beschrieben. Entsprechend den Regeln müssen externe und globale Variablen vor ihrem ersten Gebrauch geöffnet werden (siehe Variablentypen), deshalb werden sie im Programmkopfteil deklariert. Alle lokalen Variablen des Funktionsstarts () werden unmittelbar nach dem Funktionsheader im oberen Funktionsteil (Block 2-3) gesammelt und beschrieben. Regeln für die Erklärung der lokalen Variablen erfordern es nicht, aber auch nicht verbieten. Wenn ein Programmierer Schwierigkeiten beim Verständnis der Bedeutung einer Variablen beim Lesen des Programms hat, kann er sich auf den oberen Programmteil beziehen und die Bedeutung und den Typ einer beliebigen Variablen herausfinden. Es ist sehr praktisch in der Programmierpraxis. Block der Vorverarbeitung In diesem Beispiel besteht die Vorverarbeitung aus zwei Teilen (Block 3-4). Das Programm beendet den Betrieb, wenn nicht genügend Stäbe in einem Sicherheitsfenster vorhanden sind, in einem solchen Fall ist es unmöglich, die für die Berechnung der Kriterien notwendigen Werte für bewegte Mittelwerte korrekt zu erfassen (in Block 5-6). Außerdem wird hier der Wert der Variablen Work analysiert. Bei der normalen EA-Operation ist der Variablenwert immer wahr (er wird einmal während der Initialisierung gesetzt). Wenn im Programmbetrieb ein kritischer Fehler auftritt, wird dieser Variable false zugeordnet und start () beendet den Vorgang. Dieser Wert wird sich in Zukunft nicht ändern, deshalb wird der folgende Code nicht ausgeführt. In einem solchen Fall muss der Programmbetrieb gestoppt und der Grund für den kritischen Fehler erkannt werden (falls erforderlich, muss ein Handelszentrum kontaktiert werden). Nachdem die Situation gelöst ist, kann das Programm noch einmal gestartet werden, d. h. die EA kann an ein Sicherheitsfenster angeschlossen werden. Buchhaltungsaufträge Der beschriebene Expert Advisor ermöglicht die Arbeit nur mit einer Marktordnung. Die Aufgabe des Auftragsbuchhaltungsblocks (Block 4-5) besteht darin, Merkmale einer geöffneten Bestellung zu definieren, falls vorhanden. In der Schleife, die Aufträge für alle vorhandenen Märkte durchführt und ausstehende Aufträge überprüft werden, nämlich vom ersten (int i1) zum letzten (iampltOrdersTotal ()). In jeder Zyklus-Iteration wird die nächste Reihenfolge durch die Funktion OrderSelect () ausgewählt. Die Auswahl erfolgt aus einer Quelle geöffneter und ausstehender Aufträge (SELECTBYPOS). Wird die Auswahl erfolgreich durchgeführt (dh es gibt noch eine Bestellung im Terminal), so muss diese Reihenfolge und die Situation analysiert werden: ob die Bestellung für die Sicherheit eröffnet wird, an der die EA arbeitet, ob die Bestellung markt oder anhängig ist Es muss auch bei der Besetzung von Aufträgen berücksichtigt werden. In der Zeile: alle Aufträge für eine andere Sicherheit eröffnet werden eliminiert. Der Operator beendet die Iteration und die Merkmale eines solchen Auftrags werden nicht verarbeitet. Aber wenn der Auftrag für die Sicherheit geöffnet wird, an das Fenster, an dem die EA angeschlossen ist, wird es weiter analysiert. Wenn OrderType () den Wert mehr als 1 zurückgibt (siehe Typen von Trades), ist die ausgewählte Bestellung eine ausstehende. Aber in diesem Expert Advisor ist die Verwaltung von ausstehenden Aufträgen nicht vorgesehen. Es bedeutet, dass die Ausführung von start () beendet werden muss, da eine Konfliktsituation aufgetreten ist. In einem solchen Fall wird nach einer Meldung über die Operationsbeendigung start () die Ausführung durch den Operator zurückgesetzt. Wenn die letzte Überprüfung zeigte, dass die analysierte Bestellung eine Marktordnung ist, wird die Gesamtzahl der Aufträge für eine Sicherheit berechnet und analysiert. Für die ersten dieser Aufträge sind alle notwendigen Merkmale definiert. Wenn in der nächsten Iteration der Order Counter (Variable Total) die zweite Marktordnung findet, wird die Situation auch als Konflikt betrachtet, da die EA nicht mehr als eine Marktordnung verwalten kann. In einem solchen Fall wird die Start - () - Ausführung gestoppt, nachdem eine entsprechende Nachricht angezeigt wurde. Als Ergebnis der Auftragsabwicklung blockiert die Ausführung (wenn alle Schecks erfolgreich waren), behält die Variable Total ihren Nullwert bei, wenn es keine Marktaufträge gibt oder den Wert 1 erhält, wenn es eine Marktordnung für unsere Sicherheit gibt. Im letzteren Fall erhalten auch einige Variablen, die in Übereinstimmung mit den Auftragseigenschaften (Anzahl, Art, Eröffnungskurs, Stoppniveaus und Auftragswert) liegen, ihre Werte. Berechnen von Handelskriterien In der analysierten Beispieldefinition der Trading-Kriterien (Block 5-6) wird auf den Grundlagen der Differenz zwischen Moving Averages mit unterschiedlichen Perioden der Mittelung berechnet. Nach den akzeptierten Kriterien ist ein Diagramm bull-gerichtet, wenn der aktuelle Wert des MA mit kleinerer Periode größer ist als der Wert von MA mit größerer Periode, und die Differenz zwischen den Werten ist größer als ein bestimmter Wert. In einer Bärenbewegung ist MA mit kleinerer Periode niedriger als MA mit größerer Periode und die Differenz ist auch größer als ein bestimmter kritischer Wert. Bei den Blockanfangswerten von MAs mit Mittelungsperioden wird PeriodMA1 und PeriodMA2 berechnet. Die Bedeutung der Bedeutung eines Handelskriteriums wird über den Wert einer entsprechenden Variablen ausgedrückt. Variablen OpnB und Opns bezeichnen das Kriterium, das zum Öffnen von Kauf - und Verkaufsaufträgen, Variablen Cls und ClsS - zum Schließen auslöst. Wenn zum Beispiel ein Kriterium für das Öffnen von Buy nicht ausgelöst wurde, bleibt der Wert von OpnB falsch (bei der Variableninitialisierung gesetzt), wenn es ausgelöst hat, bekommt OpnB den Wert wahr. In diesem Fall stimmt das Kriterium für die Schließung des Verkaufs mit dem für die Eröffnung des Kaufs überein, das Kriterium für die Eröffnungsvereinbarung stimmt mit dem für das Schließen von Kauf überein. Die in diesem Beispiel akzeptierten Trading-Kriterien werden nur für Bildungszwecke verwendet und dürfen nicht als Leitfaden betrachtet werden, wenn sie auf einem realen Konto handeln. Schlussaufträge Es wurde früher geschrieben, dass dieser Sachverständige für den Betrieb nur mit einer Marktordnung für eine Sicherheit geöffnet ist, an welcher Fenster die EA angeschlossen ist. In dem Moment, in dem die Steuerung im Programm an den Auftragsschließungsblock übergeben wird, ist es sicher bekannt, dass es im laufenden Moment entweder keine Aufträge für die Sicherheit gibt oder es nur eine Marktordnung gibt. Thats, warum der Code in Aufträge Schließblock geschrieben wird, so dass nur eine Bestellung erfolgreich abgeschlossen werden kann. Dieser Block basiert auf der Endlosschleife, deren Körper aus zwei analogen Teilen besteht: eine zum Schließen eines Kaufauftrags, eine andere zum Schließen einer Verkaufsreihenfolge. Dabei wird hier zu dem Zweck verwendet, dass es im Falle eines Handelsbetriebsfehlers noch einmal wiederholt werden konnte. In der Kopfzeile des ersten Betreibers wird die Bedingung zum Schließen eines Buy-Order berechnet (Sell-Aufträge werden in analoger Weise geschlossen). Wenn die Art eines früheren geöffneten Auftrags dem Kauf entspricht (siehe Handelsarten) und das Zeichen für die Schließung von Kauf ist relevant, wird die Kontrolle an die Stelle des Betreibers übergeben, bei dem ein Antrag auf Schließung besteht. Als Auftragsabschlusspreis in der Funktion OrderClose () wird der Wert eines zweiseitigen Zitats, das der Auftragsart entspricht, angegeben (siehe Anforderung und Einschränkungen im Handel). Wenn ein Handelsvorgang erfolgreich ausgeführt wird, wird nach einer Meldung über den Auftragsabschluss der Strom angezeigt, während die Iteration gestoppt wird und die Ausführung des Auftragsschließungsblocks beendet ist. Wenn der Vorgang jedoch fehlschlägt, wird die benutzerdefinierte Funktion zur Bearbeitungsfehler FunError () aufgerufen (Block 10-11). Verarbeitungsfehler Als übergebener Parameter in FunError () wird der letzte von GetLastError () berechnete Fehlercode verwendet. Abhängig vom Fehlercode gibt FunError () 1 zurück, wenn der Fehler nicht kritisch ist und der Vorgang wiederholt werden kann und 0, wenn der Fehler kritisch ist. Kritische Fehler werden in zwei Typen unterteilt, die nach dem Ausführen einer Programmausführung fortgesetzt werden können (z. B. ein gemeinsamer Fehler) und diejenigen, nach denen die Ausführung von Handelsoperationen gestoppt werden muss (z. B. gesperrtes Konto). Wenn nach einer erfolglosen Handelsoperation die benutzerdefinierte Funktion 1 zurückgibt, wird der Strom bei Iteration beendet und bei der nächsten Iteration wird ein weiterer Versuch unternommen, den Vorgang auszuführen - um die Bestellung zu schließen. Wenn die Funktion 0 zurückgibt, wird die aktuelle start () - Ausführung gestoppt. Beim nächsten Tickstart () wird das Client-Terminal wieder gestartet und wenn die Bedingungen für den Auftragsabschluss beibehalten werden, wird ein weiterer Versuch, die Bestellung zu schließen, gemacht. Wenn bei der Fehlerbearbeitung festgestellt wird, dass eine weitere Programmausführung sinnlos ist (zB das Programm bei einer alten Clientterminalversion arbeitet), wird beim nächsten Start die Ausführung des Sonderfunktionsstarts () im Block der Vorverarbeitung beendet Analysieren den Wert der Variablen Arbeit. Berechnung der Anzahl der Lose für neue Aufträge Die Menge der Lose kann nach einer Benutzereinstellung nach einer der beiden Varianten berechnet werden. Die erste Variante ist ein bestimmter konstanter Wert, der von einem Benutzer eingerichtet wird. Nach der zweiten Variante wird die Menge der Lose auf der Grundlage einer Summe berechnet, die einem bestimmten Prozentsatz entspricht (der von einem Benutzer eingestellt ist) einer freien Marge. Am Anfang des Blocks der Festlegung der Menge der Lose für neue Aufträge (Block 7-8) werden notwendige Werte einiger Variablen berechnet - minimal zulässige Menge an Lose und Schritt der Losänderung, die von einem Makler, freie Marge und Preis von Eine Menge für die Sicherheit. In diesem Beispiel ist folgendes vorgesehen. Wenn ein Benutzer einen bestimmten Wert ungleich Null der externen Variablen Lts, z. B. 0,5, eingerichtet hat, wird er als die Menge an Lots Lts akzeptiert, wenn eine Handelsanforderung zum Öffnen einer Bestellung gebildet wird. Wenn 0 zu Lts zugeordnet ist, wird die Anzahl der Lose Lts auf der Basis der Variablen Prots (Prozentsatz), freie Marge und Bedingungen, die von einem Broker eingerichtet werden, definiert. Nachdem Lts berechnet ist, wird eine Prüfung durchgeführt. Wenn dieser Wert niedriger als der minimal zulässige Wert ist, wird der minimale zulässige Wert akzeptiert. Aber wenn der freie Rand nicht ausreicht, wird nach einer entsprechenden Meldung die start () execution beendet. Eröffnungsaufträge Der Block der Eröffnungsaufträge (Block 8-9) wie der Eröffnungsbefehl ist eine Endlosschleife. In der Kopfzeile des ersten Betreibers werden die Bedingungen für die Eröffnung eines Buy-Order berechnet: Wenn es keine Aufträge für die Sicherheit gibt (Variable Total ist gleich 0) und das Vorzeichen zum Öffnen eines Buy-Order ist relevant (OpnB ist wahr), Kontrolle Wird an den Bediener übergeben, um eine Bestellung zu eröffnen. In einem solchen Fall werden die Preise für die Stoppniveaus berechnet. Die Werte der Stopp-Stufen werden zunächst von einem Benutzer in den externen Variablen StopLoss und TakeProfit gesetzt. Im allgemeinen Fall kann ein Benutzer Werte für diese Parameter kleiner einstellen, die ein Broker erlaubt. Neben einem Makler kann die minimal erlaubte Distanz jederzeit ändern (es ist oft bei starken Marktbewegungen, zum Beispiel vor einer wichtigen Pressemitteilung). Das ist, warum vor jeder Auftragsöffnung Stopp-Levels unter Berücksichtigung von Werten, die auf einen Benutzer gesetzt sind, und dem minimal zulässigen Wert, der von einem Broker eingerichtet wurde, berechnet werden muss. Für die Berechnung der Stopp-Stufen wird die benutzerdefinierte Funktion NewStop () als übergebener Parameter verwendet. Der von einem Benutzer eingestellte Stopp-Level-Wert wird verwendet. In NewStop () wird zuerst die aktuelle minimal zulässige Distanz berechnet. Wenn der von einem Benutzer eingestellte Wert einem Broker entspricht, wird dieser Wert zurückgegeben. Wenn es kleiner als der zulässige Wert ist, wird der von einem Makler zulässige Wert verwendet. Die Preise der Stoppanforderungen werden aus dem entsprechenden zweiseitigen Zitat berechnet (siehe Anforderung und Einschränkungen bei der Herstellung von Trades). Mit der Funktion OrderSend () wird eine Handelsanfrage zur Eröffnung eines Auftrags gebildet. Für die Berechnung des Auftragsöffnungspreises und der Preise für Stoppanforderungen werden die der Auftragsart entsprechenden zweiseitigen Zitatwerte verwendet. Wenn ein Handelsvorgang erfolgreich war (d. h. ein Server hat die Nummer eines geöffneten Auftrags zurückgegeben), nachdem eine Nachricht über eine erfolgreiche Auftragsöffnung angezeigt wurde. Start () Ausführung ist beendet. Wenn eine Bestellung nicht geöffnet wurde und das Client-Terminal einen Fehler zurückgab, wird der Fehler nach dem zuvor beschriebenen Algorithmus verarbeitet. Einige Code-Besonderheiten Der analysierte Expert Advisor-Code orientiert sich an der Umsetzung einer bestimmten Strategie. Beachten Sie, einige Programmzeilen enthalten Variablen und Berechnungen, die geändert werden würden, wenn die Strategie geändert wurde. Zum Beispiel, nach der akzeptierten Strategie der Expert Advisor entwickelt, um nur mit einem Auftrag zu arbeiten. Dies erlaubte es, die Variable Ticket sowohl für die Identifizierung einer Schlussauftragsnummer (im Block des Verschlusses 6-7) als auch für die Identifizierung eines Erfolgs einer Handelsbetriebsausführung beim Öffnen einer Bestellung (im Block der Öffnung 8-9) zu verwenden ). In diesem Fall ist eine solche Lösung akzeptabel. Wenn wir jedoch den analysierten Code als Grundlage für die Implementierung einer anderen Strategie (z. B. entgegengesetzte Aufträge) verwenden, müssen wir eine oder mehrere Variablen einführen, um die Anzahl der geöffneten Aufträge erkennen und den Erfolg des Handelsgeschäftes identifizieren zu können. In weiteren Strategieänderungen müssen wir die Programmzeilen wechseln, die einen Teil der in der Quellstrategie enthaltenen Logik enthalten. Nämlich im Auftragsbuchungsblock müssen wir den Programmbetrieb nicht beenden, wenn es mehrere offene Aufträge für eine Sicherheit gibt. Außerdem werden sich auch die Bedingungen für das Öffnen und Schließen von Aufträgen ändern. Dies führt dazu, dass sich der Code in Blöcken von Öffnungs - und Schließaufträgen ändert. Auf der Grundlage dieser Analyse können wir leicht feststellen, dass der beschriebene einfache Expert Advisor nicht perfekt ist. In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy. The same can be said about the blocks of opening and closing orders. A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it. This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions. The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must quotthinkquot and manage all other functions, i. e. call them when needed.

Comments