MetaTrader 5 - Beispiele. Creating ein Multi-Währung Multi-System Expert Advisor. Ich glaube, es gibt ziemlich viele Händler, die mehr als ein Trading-Symbol handeln und verwenden mehrere Strategien Dieser Ansatz ermöglicht es Ihnen nicht nur potenziell erhöhen Sie Ihren Gewinn, sondern auch Minimieren das Risiko eines erheblichen Nachlasses bei effizienter Geldverwaltung Bei der Erstellung eines Expert Advisors ist der erste natürliche Schritt bei der Überprüfung der Effizienz der Programmstrategie eine Optimierung, um die besten Eingabeparameter zu ermitteln. Mit den identifizierten Parameterwerten würden Expertenberater technisch fertig sein Für den Handel Doch das würde eine wichtige Frage unbeantwortet lassen Was wäre Testergebnisse wie wenn ein Trader alle seine Strategien zusammen in einem einzigen Experten-Berater setzen könnte Die Erkenntnis, dass Drawdown auf mehrere Symbole oder Strategien irgendwann überlappen und zu einer grässlichen Summe führen könnte Drawdown oder sogar ein Margin Call kann manchmal als eine böse Überraschung kommen. Dieser Artikel stellt ein Konzept der Schaffung eines Multi-Währungs-Multi-System Expert Advisor, die uns erlauben, eine Antwort auf diese wichtige Frage zu finden.1 Struktur des Expert Advisor. Im Allgemeinen ist die Struktur des Expert Advisor wie folgt. Fig 1 Struktur der Multi-Währungs-Multi-System Expert Advisor. Als Sie sehen können, ist das Programm auf einer for-Schleife basiert Jede Strategie ist in einer Schleife angeordnet, wo jeder Iteration ist verantwortlich für den Handel jedes Symbol separat Hier können Sie arrangieren in Loops unbegrenzte Anzahl von Strategien Wichtig ist für Ihren Computer über ausreichende Ressourcen, um ein solches Programm zu verarbeiten. Sie sollten im Hinterkopf behalten, dass es nur eine Position für jedes gehandelte Symbol geben kann In MetaTrader 5 Diese Position repräsentiert die Summe der bisher ausgeführten Buys und Sells. Das Ergebnis der Multi-Strategie-Tests für ein Symbol ist nicht identisch mit der Summe der separaten Testergebnisse der gleichen Strategien für das gleiche Symbol Nähere Betrachtung der Struktur des Expert Advisor werden wir 2 Strategien nehmen, von denen jeder zwei Symbole abwickelt. Buy Ask Preis erreicht das untere Band des Bollinger Bands Indikators, der auf der Grundlage des niedrigen Preises berechnet wird. Der Schlusspreis der Bollinger Bands erreicht das untere Band des Bollinger Bands Berechnet auf der Grundlage des hohen Preises. Sell Bid Preis erreicht die obere Band der Bollinger Bands Indikator berechnet auf der Grundlage von High Price Closing Ask Preis erreicht die obere Band der Bollinger Bands Indikator berechnet auf niedriger Preis. Restriction nur ein Deal kann auf jedem durchgeführt werden Gegeben bar. Buy die vorherige Bar ist bärisch nah offen und fragen Preis erreicht die vorherige Bar s hoch Closing von Stop Loss oder nehmen Profit. Sell die vorherige Bar ist bullish nah offen und Bid Preis erreicht die vorherige Bar s low Closing von Stop Loss oder Nehmen Sie Profit. Restriction nur ein Deal kann auf jedem gegebenen bar ausgeführt werden. Um unabhängig von den neuen Ticks für ein Symbol zu sein, auf dem der Expert Advisor getestet wird oder welches es handeln wird, ist es ratsam, die OnTimer-Funktion zum Handel zu verwenden Multi-Währungs-Modus. Zu diesem Zweck legen wir bei der Initialisierung des Expert Advisers die Häufigkeit des Erzeugens eines Ereignisses für den Programmberechnungsaufruf mit der EventSetTimer-Funktion fest und bei der Deinstallation verwenden wir die EventKillTimer-Funktion, um dem Terminal zu signalisieren, die Erzeugung von Ereignissen zu stoppen Von EventSetTimer können Sie auch EventSetMillisecondTimer verwenden, bei dem die Frequenz genau auf Millisekunden eingestellt ist, aber Sie sollten sie nicht durch zu häufige Programmberechnungsaufrufe missbrauchen. Für den Zugriff auf Konto-, Positions - und Symboleinstellungen sowie Handelsfunktionen verwenden wir CAccountInfo CPositionInfo CSymbolInfo und CTrade Klassen, jeweils Lassen Sie sie in den Expert Advisor. Since der Expert Advisor basiert auf für Schleifen basiert, müssen wir Arrays für seine externen Parameter erstellen Lassen Sie s zuerst erstellen Konstanten gleich der Anzahl der Symbole für jede Strategie. Wir dann Erstellen von externen Parametern Unter Verwendung von Konstanten bestimmen wir Größen von Arrays, auf die sie kopiert werden. Außerdem erstellen wir Indikatorhandles und andere globale Variablen. Ein Beispiel für ein Symbol der Strategie ist unten vorgesehen. Um die Möglichkeit zu haben, den Handel für ein bestimmtes Symbol zu deaktivieren Haben wir eine boolesche Variable IsTradeA0 angelegt, die am Anfang von Loops platziert wird.2 Initialisierung des Expert Advisor. First, lassen Sie uns die für alle Strategien benötigten Werte erhalten, zB Leverage Da Hebelwirkung auf das Handelskonto angewendet wird und Hat nichts mit einer Strategie oder einem Symbol zu tun, es gibt keine Notwendigkeit, seinen Wert in die Arrays zu kopieren. Wir kopieren dann externe Variablen in Arrays. Wenn jeder externe Parameter durch den Typ definiert wird, der eine Umwandlung in eine andere erfordert, kann dies sein In einem bequemeren Weg beim Kopieren in Arrays getan werden. In diesem Fall können wir sehen, dass BBPeriodA0 als uint erstellt wurde, um zu verhindern, dass der Benutzer einen negativen Wert festlegt. Hier konvertieren wir ihn in int und kopieren ihn in das Array, das auch war Erstellt als int Andernfalls gibt der Compiler eine Warnung, wenn Sie versuchen, den Typ des Typs in den Indikator-Handle einzufügen. Lesen Sie weiter, ob das gehandelte Symbol in der Market Watch verfügbar ist und ob es mehr als einmal innerhalb einer Strategie verwendet wurde. Wenn die Symbole korrekt ausgewählt wurden, überprüfen Sie auf Fehler in den Eingabeparametern für jeden von ihnen, erstellen Sie Indikatorhandles, holen Sie die Daten, die für die Losberechnung benötigt werden, und, falls erforderlich, andere Dinge, wie durch die gegebene Strategie definiert. Wir werden die implementieren Oben erwähnten Aktionen innerhalb einer for-Schleife. Dann setzen wir die Parameter für den Handel von Strategien A mit dem TradeA-Objekt der CTrade-Klasse. Die gleiche Prozedur wird für jede Strategie wiederholt, i e. Copy externe Variablen zu Arrays. Check, ob Symbole Sind korrekt ausgewählt. Überprüfen Sie die Fehler, stellen Sie die Indikatorgriffe ein, berechnen Sie die Daten für das Los und für alles, was für eine bestimmte Strategie erforderlich ist. Stellen Sie die Parameter für den Handel ein. Schließlich wäre es gut, zu überprüfen, ob ein und dasselbe Symbol verwendet wird Mehrere Strategien ein Beispiel für zwei Strategien ist unten gegeben.3 Trading For Loops. The Framework für Loops innerhalb der OnTimer-Funktion ist wie folgt. Wenn ein Single-Symbol Expert Advisor auf einer einzigen Strategie basiert hat eine Bedingung, wobei alle nachfolgenden Berechnungen müssen Aufgehoben werden, verwenden wir den Rücksender Betreiber In unserem Fall müssen wir nur die aktuelle Iteration beenden und zur nächsten Symbol-Iteration gehen. Zu diesem Zweck ist es am besten, den Operator fortzufahren. Wenn Sie Ihren Multi-Strategie-Experten verbessern möchten Advisor durch Hinzufügen einer Strategie mit einer for-Schleife, die eine Bedingung für die Beendigung aller nachfolgenden Berechnungen enthält, können Sie das folgende Muster verwenden. Nachdem Sie das Framework der for-Loops erstellt haben, fügen wir einfach Codes von anderen EAs ein und ersetzen dann einige Variablen Mit Array-Elementen. Zum Beispiel ändern wir die vordefinierte Variable Symbol zu SymbolA i oder Punkt zu PointA i Werte dieser Variablen sind typisch für das gegebene Symbol und wurden daher bei der Initialisierung in Arrays kopiert. Zum Beispiel finden wir den Indikatorwert. Um den Abschluss einer Kaufposition zu implementieren, schreiben wir den folgenden Code. Öffnen einer Kaufposition. Erinnere dich, die Timer-Ereignisgenerierung zu beenden und die Indikatorhandles bei der Deinitialisierung zu löschen.4 Testergebnisse. Wenn der Expert Advisor bereit ist, testen wir jede Strategie und Jedes Symbol separat und vergleichen Sie die Testergebnisse mit denen, die im Testmodus erhalten werden, wenn alle Strategien und Symbole gleichzeitig gehandelt werden. Es wird davon ausgegangen, dass der Benutzer bereits die optimalen Werte der Eingabeparameter identifiziert hat. Below sind die Einstellungen des Strategy Tester. Fig 2 Strategy Tester settings. Results für Strategie A, EURUSD. Fig 3 Testergebnisse für Strategie A, EURUSD. Ergebnisse für Strategie A, GBPUSD. Fig 4 Testergebnisse für Strategie A, GBPUSD. Ergebnisse für Strategie B, AUDUSD. Fig 5 Testergebnisse Für Strategie, AUDUSD. Results für Strategie B, EURJPY. Fig 6 Testergebnisse für Strategie, EURJPY. Test Ergebnisse für alle Strategien und Symbole. Zur 7 Testergebnisse für alle Strategien und Symbole. Als Ergebnis haben wir eine bequeme und einfache Struktur Der Multi-Währungs-Multi-System Expert Advisor, in dem Sie praktisch jede Ihrer Strategien platzieren können. So ein Expert Advisor ermöglicht es Ihnen, die Effizienz des Handels mit all Ihren Strategien besser beurteilen Es kann sich auch als nützlich erweisen, wenn nur ein Expert Advisor ist Erlaubt, auf einem gegebenen Konto zu arbeiten Der Quellcode des Expert Advisor ist an den Artikel beigefügt, um das Studium der oben genannten Informationen zu erleichtern. Oktober 14, 2011.Added 29. Februar 2012, zusätzliche Punkte zu berücksichtigen.1 Dieses System hängt davon ab, genaue fills Am offenen Preis Um solche Fills zu erhalten, verlangt ein qualitativ hochwertiger Mindesteinfall-Daten-Feed und erweiterte Programmierkenntnisse, um die Handelsautomatisierung umzusetzen.2 Wenn Sie den Einstiegspreis etwas unter dem offenen Preis einstellen, der versucht, die Leistung zu verbessern, scheitert das System miserabel Nur ein Cent tötet das System Dies deutet darauf hin, dass der Großteil des Gewinns aus Tagen kommt, an denen der Open-Preis gleich der Tagesniedrig war, dh der Preis wurde von der Open verschoben und nie unterschritten. Dies ist natürlich offensichtlich zu bestätigen Dies habe ich diese Testbedingung hinzugefügt, die es voraussieht, um Tage auszuschließen, an denen Open Low. Buy Buy und NICHT O L. This tötet das System und beweist, dass der Großteil des Gewinns von Tagen kommt, wo OL Um dies weiter zu bestätigen, habe ich die entgegengesetzte Bedingung hinzugefügt. Kaufen Kaufen O O L. This gibt fast unendliche Gewinne und beweist, dass die meisten Gewinne kommen von Tagen, auf denen der Preis bewegt sich sofort aus dem Open und nie wieder unter es versucht, den Eintrittspreis zu verbessern ist ein Fehler, den man auf einem Stop-Set eingeben sollte 1-2 ct über dem Open-Preis, wird dies die Tage beseitigen, wenn der Preis sinkt und niemals zurückkehrt. Dies verbessert die Leistung signifikant.3 Dieses System handelt von Knie-Jerk-Trader-Reaktionen Muster Diese Muster werden in der Regel durch großen Volumenhandel ertrunken, so dass dieses System funktioniert Viel besser, wenn man Tickers mit Volumina zwischen 500.000 und 5.000.000 Aktien Tag wählt Dies verbessert auch die Leistung signifikant. Haben die oben genannten zwei Features führt zu einer Eigenkapitalkurve viel besser als die unten gezeigten Entschuldigung, ich habe keine Zeit, um die oben ausführlicher zu dokumentieren Gut Luck. This Post umreißt eine sehr einfache Long-only-Trading-Idee, die kauft bei einem bestimmten Prozentsatz unterhalb von gestern s Low, und beendet am nächsten Tag s Open Während manchmal kann es schwierig sein, die genaue Open-Preis, die hohe Rentabilität dieser zu bekommen System macht es zu einem guten Kandidaten für weitere Experimente Das System funktioniert gut mit Watchlists wie die N100, SP500, SP1500, Russel 1000, etc. Leistung auf der Russel 1000, mit max offenen Positionen auf 1 gesetzt, für den Zeitraum 12 10 2003 bis 12 10 2011, sieht aus wie diese. Einige der anderen Watchlists geben weniger Exposure-Gewinne, aber dies kommt mit niedrigeren DDs Provisionen wurden auf 0 005 pro Aktie eingestellt Keine Margin used. No explizite Ranking verwendet wird Tickers werden gehandelt basierend auf ihrer alphabetischen Sortierung in der Watchlist This Kann scheinen seltsam, aber ist signifikante Umkehrung dieser Art das System fehlschlägt Dies könnte bedeuten, dass aufgrund von Echtzeit-Scan-Probleme, Symbole auf der Oberseite dieser Art aufgeführt werden kann anders gehandelt werden, als die unten aufgeführt. Pay Aufmerksamkeit auf Liquidität Sie vielleicht Wollen mehr als eine Position handeln und Schlupf Einstieg ist eher risikofrei, aber Ausgänge können problematisch sein DDs sind signifikant, können aber mit verbesserten Echtzeit-gehandelten Einträgen und Ausgängen ausgeglichen werden. Beim Handel automatisch kann es möglich sein, OCA DAY-LMT zu platzieren Eintragung Aufträge für alle Signale und nur warten und sehen, was füllt Seit Ausgänge sind schwieriger als Einträge, die Sie vielleicht möchten, um andere Ausstiegsstrategien zu erkunden. Parameter Standardwerte sind nur aus einem Hut ausgesucht Fast sicherlich können Sie sie optimieren oder sie dynamisch für individuelle anpassen Tickers Ich habe dieses System im Walk-Forward-Modus kurz getestet und die Ergebnisse waren für alle getesteten Jahre rentabel. Abgesehen von der Anzahl der Aktien gehandelten Parameter erscheinen nicht sehr kritisch Über-Optimierung doesn t scheinen ein Problem in diesem Fall. Der Code unten ist sehr einfach Und erfordert nur wenige Erklärungen Allerdings ist es wichtig zu verstehen, dass dieses System eine kleine Kante durch den Handel am Open genießt und durch die Berechnung der TrendMA mit dem gleichen Open-Preis Einige könnte dies als zukünftiges Leck interpretieren, aber wenn Sie dieses System in Echtzeit - Zeit, ist es nicht Viele Leute wissen nicht, dass, wenn Sie am Open handeln, können Sie diesen Preis auch in Ihren Berechnungen verwenden, solange Sie sie in Echtzeit ausführen, hier ist AmiBroker und Technik können Sie einen Vorteil geben Wenn Sie Ref Zurück die TrendMA um eine Bar das System ist immer noch sehr profitabel aber DDs erhöhen für einige Watchlists Wenn Sie feste Investitionen verwenden, ist der Unterschied vernachlässigbar. Der Trading-Prozess wäre zu starten Scannen vor dem Markt öffnet und entfernen Ticker, die so weit weg sind, dass sie Sind unwahrscheinlich, dass die OpenThresh So können Sie beginnen zu scannen 1000 Symbole aber sehr schnell die Nummer gescannt wird auf nur ein Dutzend oder so tickers schwinden Wenn Sie nähern 9 30 Uhr Ihre Echtzeit-Scan wird sehr schnell und Sie werden in der Lage, Ihre Platz LMT Ordnung sehr nah an der Open können Sie sogar in der Lage sein, auf den Open-Preis zu verbessern. Even obwohl ein paar Leute sahen den Code unten und fand nichts falsch, die Gewinne scheinen ziemlich hoch für solch ein einfaches System Bitte melden Sie Fehler, die Sie sehen können. Filed von Herman um 7.00 Uhr unter Ideen Experimentelle Kommentare aus auf EOD Gap-Trading Portfolio System. September 1, 2011.Diese Idee wurde 161332 auf der Haupt-AmiBroker-Liste am 3. Juli 2011 Es gab zahlreiche hervorragende Kommentare auf der Liste und Wenn Sie daran interessiert sind, an diesem System zu arbeiten, tut es Ihnen gut, sie alle zu lesen, bevor Sie beginnen Nach dem Schreiben Ich fand eine Reihe von Beiträgen auf dem Web diskutieren diese Handelsidee, einige behaupteten, ein ähnliches System mit gutem Erfolg zu handeln. Ich habe darauf hingewiesen System ein Gap Trading-System, aber das kann ein bisschen falsch sein, Mittlere Reversion könnte eine bessere Klassifizierung sein Googeln für es wird Ihnen viele weitere Treffer zu ähnlichen Systemen Hier sind ein paar Links. Es scheint eine ziemlich weit diskutierte Handelsidee zu sein Und ich schlage vor, dass Sie irgendwelche Googeln auf eigene Faust machen, um die neuesten zu lernen. Als Amibroker-Benutzer haben Sie bessere Werkzeuge als die meisten Händler und Sie haben eine bessere Chance als die meisten zu kommen mit einer Variation, die funktioniert vielleicht mit ein wenig weniger Gewinne, und Mit einer beträchtlichen Menge an zusätzlichen Code es gewann t ein schnelles Projekt. Einige Leute kommentiert, dass dieses System wird nicht in echten Handel arbeiten, während sie richtig sein können andere sagen, Schemata wie diese Arbeit Ich didn t beenden das System und kann t behaupten Wissen, ob es handelbar ist oder nicht. Das System kauft bei einem bestimmten Prozentsatz unterhalb von gestern s Niedrig, auf einer LMT Ordnung und Ausgänge am selben Tag am Schließen. Filed von Herman um 6 53 Uhr unter Ideen Experimentelle Kommentare Off auf A Long - only EOD Gap Handel idea. I verwenden Sie ein kleines Setup-Kriterien, um für meine stocks. MACD-Standard zu scannen. Ich suche Histogramm 4 unten Bars und 1 up bar für Kaufsignal Ich habe das Histogramm auf rot für unten und blau für so Ich kann deutlich sehen MACD über Zero Line RSI Über 30 Dieses System basiert auf Trendhandel Kauf auf Pullback, wenn der Markt seinen Trend fortsetzt. Um nach MACD Trend Setups zu scannen.1 Legen Sie die folgende Formel in ein Diagramm.2 Führen Sie einen Scan in AA mit SMACDTrend mit allen Symbolen n letzten Tage n 1 und Sync-Diagramm bei Auswahl als Einstellungen. Stöcke, die die Kriterien erfüllen, werden in der Ergebnisliste gemeldet. Hinweis Einige Variationen der Setup-Regeln können Signale definieren, die sehr selten und klein sind Datenbanken ist es möglich, dass es keine Setups an einem bestimmten Tag gibt, daher wird kein Bestand vom Scan gemeldet.3 Klicken Sie auf ein beliebiges Symbol im Ergebnisbereich, um das Diagramm anzuzeigen, für dieses Symbol im Hintergrund. Hinweis In diesem Beispiel Eine Trainingsdatenbank, die nur Daten bis zu 5 11 2007 enthält, wurde verwendet. Die Idee von Protraderincants und Formel von Bill WaveMechanic. Filed von brianz um 11 Uhr 18 Uhr unter Ideen Experimentelle Kommentare aus auf MACD Trend System. Oktober 14, 2007.Filed Von brianz um 10 43 Uhr unter Ideen Experimentelle Kommentare Off auf 15 Tage Darsteller Trading System. August 19, 2007. Dies ist die erste in einer Serie aus KISS halten es einfach, dumme Trading Ideen für Sie zu spielen mit Alle Systemideen hier präsentiert werden Unbewiesen, unvollendet und kann Fehler enthalten Sie sollen mögliche Muster für die weitere Erforschung zeigen Wie immer sind Sie eingeladen, Kommentare zu machen und Ihre eigenen Ideen zu dieser Serie hinzuzufügen. Ich bevorzuge Echtzeit-Systeme, die schnell handeln, automatisiert werden, Und sind ohne traditionelle Indikatoren Vorzugsweise sollten sie keine optimierbaren Parameter haben, aber ich kann nicht immer in der Lage sein, dieses Ziel zu erreichen. Nicht alle Systeme werden so einfach sein, dass es einige gibt, die einfache Mittelwerte oder HHV LLV-Typ-Funktionen verwenden. Das erste System wurde angezeigt Unten ist eine Kopie des Demo-Systems, das ich verwende, um Trade-Automation-Routinen anderswo auf dieser Website zu entwickeln. Real-Time Gap-Trading Um zu sehen, wie das funktioniert, sollten Sie Backtest es auf 1-Minuten-Daten mit einer Periodizität im Bereich von 5 -60 Minuten Ihr erster Eindruck kann sein, dass diese Gewinne einfach auf einen Aufwärtsmarkt zurückzuführen sind, aber die Tatsache, dass lange und kurze Gewinne ungefähr gleich sind, schlägt vor, es gibt mehr zu ihr Weil 98 von allen Trades zwischen 9 30 AM und 10 30 fallen AM, diese Art von System ist schön, wenn Sie nur wollen, um eine kurze Zeit jeden Tag zu handeln Dies reduziert das Risiko in Bezug auf die Markt-Exposition und gibt Ihnen mehr Zeit, um andere Aktivitäten zu genießen. Backtesting auf der NASDAQ-100 watchlist individuelle Backtests, 15 min Periodizität gibt die Gewinne, die unten für den Zeitraum von 1 MAR 2007 bis 17 AUG 2007 gezeigt werden. Ticker Namen werden weggelassen, um das Diagramm zu behalten, das Diagramm zeigt einfach eine Nettogewinnstange für jeden geprüften Ticker Durchschnittliche Exposition für dieses System ist ungefähr 15 folglich können Sie In der Lage sein, Portfolios zu handeln, um die Gewinne zu steigern und die Eigenkapitalkurven zu glätten. Seien Sie gewarnt, dass in ihrer Rohform die Drawdowns inakzeptabel sind und dass es für viele Tickers Mengenrabatte geben kann. Da dieses System eine geringe Exposition hat, kann es ein Kandidat für das Scannen im Markt sein Und rangiert Portfolio-Handel RARs wäre ein Hinweis auf die absoluten maximalen Gewinne, die erhalten werden könnte, wenn man es geschafft, die Exposition gegenüber nahezu 100 zu erhöhen. Allerdings kann die Preisbewegung von verschiedenen Tickern korreliert werden, und Trades von verschiedenen Tickern können sich überschneiden Wenn viele Tickers handeln Die gleiche Zeit, wäre es schwierig, System Exposition zu erhöhen. Edited von Al Venosa. Filed von Herman um 1 49 Uhr unter Ideen Experimentelle Kommentare aus auf KISS-001 Intraday Gap Trading. August 17, 2007.Sie sind eingeladen, Links zu senden System Ideen in Kommentare zu diesem Post. Gap Trading-Strategien Stockcharts Intraday Moving Durchschnittliche Crossover mit Position Sizing NeoTicker Volatility-Breakout-Systeme Trader Log Zehn Tage Hoch Niedriges System StockWeblog Reversion Systems SucheAlpha Systems Trader Club Trader Club Bulletins. Juli 16, 2007.Diese Kategorie Ist für echte Arbeit Handelssysteme reserviert, dh, dass Sie zu irgendeinem Zeitpunkt gehandelt haben oder den Handel betrachten Da die Kriterien für die Handelbarkeit von Person zu Person variieren und da Systeme funktionieren oder nicht, je nachdem, wie sie gehandelt werden, wird es sein Schwierig, hier Beiträge zu betrachten In Bezug auf das, was hier gepostet wird, halten Sie einen offenen Geist und bedenkt, dass das Plakat das System tradable betrachtet. Sie können durch die Veröffentlichung als Autor eine Registrierung oder einen Kommentar zu diesem Beitrag beitragen. Filed von Herman bei 11 14 Uhr unter praktisch profitabel Comments Off auf Einführung in Trading Systems Practical. This können Sie Handelssysteme, die marginal profitabel sind, dh diejenigen, die nicht gehandelt werden sollten, wie sie sind, aber das zeigen potenziell in der Regel wäre dies ein grundlegendes System, das ist Profitabel, aber erfahrungen von 50 Solche Systeme können oft durch Hinzufügen von Stopps, Targets, Money Management, Portfolio-Techniken, etc. verbessert werden. Die Realität ist, dass, während Sie möglicherweise nicht die Sachkenntnis haben, um es zu arbeiten jemand anderes may. Almost alle von uns finden Trading-System Ideen in Büchern und Zeitschriften, die wir dann in AFL für die Bewertung Code Einige dieser Systeme können schon seit vielen Jahren, während andere sind neue Ideen Nach der Codierung, fast immer, wir sind enttäuscht und Chuck aus der Systemarbeit Statt zu werfen Ihre Arbeit, die Sie eingeladen sind, das System hier zu veröffentlichen, um einem anderen Entwickler eine Chance zu geben, es zu beheben. Sie sind eingeladen, als Autor zu schreiben, muss eine Registrierung oder einen Kommentar zu diesem Post. Filed von Herman um 11 04 Uhr unter Ideen Experimentelle Kommentare Off auf Einführung in Trading Systems Ideas. MetaTrader 5 - Beispiele. Graphische Schnittstellen IV der Multi-Window-Modus und System der Prioritäten Kapitel 2.Der erste Artikel Graphische Schnittstellen I Vorbereitung der Bibliotheksstruktur Kapitel 1 erklärt im Detail, was diese Bibliothek für Sie ist Findet eine Liste von Artikeln mit Links am Ende eines jeden Kapitels Dort können Sie auch eine komplette Version der Bibliothek im aktuellen Entwicklungsstadium herunterladen. Die Dateien müssen in den gleichen Verzeichnissen platziert werden, wie sie sich im Archiv befinden Im vorigen Kapitel haben wir die Statusleiste und die Tooltip-Informationselemente der grafischen Oberfläche besprochen. In diesem Kapitel werden wir die Bibliotheksimplementierung auf die Möglichkeit der Erstellung von Multifenster-Schnittstellen für die MMS-Anwendungen erweitern. Darüber hinaus entwickeln wir ein System Der Prioritäten für die linke Maustaste klicken Sie auf grafische Objekte als ohne dass es auftreten kann, dass Steuerelemente nicht auf die Benutzer-Aktionen reagieren. Die Multi-Fenster-Modus. Lassen Sie uns die Multi-Fenster-Modus der grafischen Oberfläche der Bibliothek unter Entwicklung Bisher lieferte die ENUMWINDOWTYPE-Enumeration zwei Bezeichner für die wichtigsten WMAIN - und Dialog-WDIALOG-Fenster. Der Single-Fenster-Modus war der einzige Modus, der verwendet wird. Nachdem wir einige Ergänzungen eingeführt haben, ermöglicht der Multifenster-Modus einfach die Erstellung und Hinzufügung von Die erforderliche Anzahl von Kontrollformularen an die Basis. In der Hauptklasse für die Ereignisbehandlung CWndEvents erstellen Sie ein Feld für die Speicherung des Index des aktuell aktiven Fensters. Lassen Sie uns sehen, wie der Index des aktiven Fensters identifiziert werden soll Benutzer ordnet das Öffnen eines Dialogfensters WDIALOG zu einer Schaltfläche an Wenn die Schaltfläche gedrückt wird, wird das benutzerdefinierte Ereignis ONCLICKBUTTON generiert Dieses Ereignis kann im CProgram OnEvent Event Handler der benutzerdefinierten Klasse verfolgt werden Wir verwenden auch die CWindow Show Methode des Formulars Die in der aktuellen Implementierung der Bibliothek nicht ausreicht, und wir werden die notwendigen Ergänzungen einführen. Ein spezielles Event muss aus der CWindow Show-Methode gesendet werden, die angibt, dass ein Fenster geöffnet wurde, so dass Parameterwerte der Grafisches Schnittstellensystem muss aktualisiert werden Solch ein Ereignis erfordert eine separate Kennung Wir nennen es ONOPENDIALOGBOX und legen es an die Datei, wo sich andere Bibliothekskennungen befinden. Add eine Zeile am Ende der CWindow Show-Methode, wie im folgenden Code gezeigt Ist eine verkürzte Version der Methode Für die eindeutige Identifizierung des Ereignisinitiators müssen neben der Event-ID auch die Elementkennung und der Programmname gesendet werden. Dieses Ereignis wird in der CWndEvents-Klasse behandelt Vor der Implementierung der Methode zur Handhabung, Wir müssen drei weitere Methoden in der CWindow-Klasse erstellen. Dies sind zwei Methoden zum Speichern und Abrufen des Index des Formulars, aus dem ein Dialogfenster geöffnet wird, sowie eine Methode zur Verwaltung des Zustandes des Formulars. Der Index der vorherigen Aktives Fenster muss gespeichert werden, da mehrere Fenster gleichzeitig geöffnet werden können. Deshalb ist es beim Schließen eines Dialogfensters wichtig zu wissen, welche von ihnen in den aktiven Zustand zurückgegeben werden müssen. Für die Verwaltung des Formulars des Formulars sind deaktivierte Formulare Wird eine andere Header-Farbe haben, die durch den Benutzer geändert werden kann. Die Farbe der Elemente ändert sich nicht, wenn der Mauszeiger über sie schwebt, wenn das Formular blockiert wird. Hinzufügen, dass im Moment der Deaktivierung des Formulars eine benutzerdefinierte Event wird generiert Dies wird kommunizieren, dass das Formular gesperrt ist und die Fokus und Farben seiner Elemente auf Null gesetzt werden müssen Wenn das Formular gesperrt ist, wird der Fokus auf die Elemente nicht verfolgt. Im Moment des Öffnens eines Dialogfensters wird die Farbe der Element, das das Fenster aufgerichtet hat, wird sein, als ob der Mauszeiger immer noch darüber schwebt. Der ONRESETWINDOWCOLORS-Bezeichner wird in der Datei für ein solches Ereignis erstellt. Für die Verwaltung des Formulars des Formulars wird in dem Code unten dargestellt. Lass uns Rückkehr zur Behandlung des ONOPENDIALOGBOX-Ereignisses In der Hauptklasse für die Bearbeitung der Ereignisse der grafischen Oberfläche CWndEvents erstellen Sie die CWndEvents OnOpenDialogBox-Methode, die in der CWndEvents ChartEventCustom gängigen Methode für die Bearbeitung aller benutzerdefinierten Ereignisse aufgerufen wird. Die CWndEvents OnOpenDialogBox-Methode beginnt mit zwei Prüft eine für die Ereigniskennung und eine für den Programmnamen Wenn sie übergeben wurden, dann über alle Fenster iterieren, um herauszufinden, welches Fenster das Ereignis erzeugt hat. Die Elementkennung, die in dieser Nachricht enthalten ist, lparam wird dies erleichtern. Die Formulare, die nicht haben Matching-Identifikatoren werden zusammen mit allen Elementen blockiert, die mit ihnen verbunden sind. Prioritäten aller Objekte werden mit Hilfe der ResetZorders-Methode auf Null gesetzt und reagieren nicht auf den linken Mausklick Nachdem sie das Formular mit passenden Bezeichnern erstellt haben, speichern Sie den Index Des aktuell aktiven Fensters als Index des vorher aktiven Fensters Aktivieren Sie dieses Formular und stellen Sie die Priorität des linken Mausklicks auf alle seine Objekte wieder her. Speichern Sie den Index dieses Fensters als aktuell aktiv Dann lassen Sie alle Elemente dieses Formulars sichtbar und wiederherstellen Prioritäten des linken Mausklicks, Auslassen des Formularelements, da es bereits sichtbare und Dropdown-Elemente ist. Wenn ein Dialogfenster geöffnet ist, wenn ein Tooltip sichtbar ist, dann muss die Tooltip ausgeblendet werden. Es wird nicht von selbst als das Formular verschwinden Die es angehängt ist bereits blockiert Das private Array für Tooltips wurde früher erstellt, um für solche Fälle gerecht zu werden Der Zugriff auf Methoden aller Elemente in einer Basis kann in der CWndEvents-Hauptklasse für Event-Handling empfangen werden. Jetzt werden wir die ONRESETWINDOWCOLORS adressieren Bezeichner, der zuvor in diesem Artikel erstellt wurde. Vor dem Schreiben einer Methode zur Handhabung dieses Ereignisses muss eine weitere virtuelle Standardmethode der CElement-Basisklasse aller Elemente hinzugefügt werden, die für die Nullstellung der Farbe bestimmt werden. Wir nennen es CElement ResetColors. The ResetColors Methoden mit Merkmalen, die für jedes Element spezifisch sind, müssen in allen abgeleiteten Klassen erstellt werden. Der untenstehende Code zeigt ein Beispiel für das Symbol Schaltflächenelement CIconButton Die ResetColors-Methode für alle anderen Elemente finden Sie in den Dateien, die diesem Artikel beigefügt sind. Daher ist eine virtuelle Methode in Die Basisklasse von Elementen und ihre eigenen Versionen in abgeleiteten Klassen bieten die Möglichkeit, die Farben aller Elemente in einer Schleife aus dem Event-Handler der Hauptklasse der Bibliothek CWndEvents. Zeschreiben Sie die CWndEvents OnResetWindowColors-Methode für die Bearbeitung des ONRESETWINDOWCOLORS-Ereignisses Es ist Ziemlich einfach Schauen Sie nach dem Formular, das gerade von der Elementkennung deaktiviert wurde, die gerade in einer Meldung empfangen wurde. Wenn es einen gibt, speichern Sie den Index Wenn der Index gespeichert wurde, null Farben aller Elemente in dieser Form Details dieser Methode können Finden Sie im Code unten. Wir haben das Öffnen von Fenstern geklärt Nun müssen wir die Methoden zum Schließen und Wiederherstellen des vorher aktiven Fensters implementieren Um dieses Ereignis zu behandeln, müssen wir die ONCLOSEDIALOGBOX-Bezeichner in der Datei erstellen. In der CWindow-Klasse Wir verwenden die CWindow CloseWindow-Methode, um das Formular und das Programm zusammen mit diesem zu schließen. In dieser Methode wird der Abschnitt, der die Dialogfenster WDIALOG schließt, noch nicht implementiert. Wir schreiben eine zusätzliche Methode, die ein Ereignis zum Schließen von Dialogfenstern erzeugt 1 die Ereigniskennung, die Nachricht enthält auch 2 die Elementkennung, 3 den Index des vorher aktiven Fensters und 4 den Text des Headers Lassen Sie uns diese Methode nennen CWindow CloseDialogBox Später werden wir auch in komplexen Kontrollen verwenden, wo das Schließen Eines Fensters wird von anderen Elementen als dem Schließen-Button ausgeführt. In der CWindow-Klasse wird die CWindow CloseDialogBox-Methode in der CWindow CloseWindow-Methode aufgerufen, wie in der gekürzten Version des Codes unten gezeigt. Eine vollständige Version finden Sie unter Die Dateien, die an diesen Artikel angehängt werden. Nachdem die Nachricht mit dem ONCLOSEDIALOGBOX-Bezeichner gesendet wurde, muss er im Handler der CWndEvents-Klasse verfolgt und behandelt werden. Dazu schreiben wir die CWndEvents OnCloseDialogBox-Methode über alle Fenster in der Basis und Suche die mit der Kennung, die mit der Kennung übereinstimmt, in der Meldung Wenn ein solches Fenster gefunden wird, ist es zu deaktivieren. Dann versteck es zusammen mit allen daran angehängten Elementen und aktivieren das Formular durch den in der Nachricht übergebenen Index , Speichern Sie den Index des aktuell aktiven Fensters und stellen Sie die Prioritäten des linken Mausklicks für die Elemente wieder her. Jetzt ist alles für das Testen des Multi-Fenster-Modus bereit. Tipp des Multi-Window-Modus. Erstellen Sie zwei Instanzen des CWindow Klasse in der EA, die wir für die Prüfung der informationellen Schnittstellenelemente verwendet haben Das Ergebnis wird drei Formen in der grafischen Oberfläche des EA sein Das erste Formular ist das wichtigste WMAIN und zwei andere haben eine Rolle der Dialogfenster WDIALOG Anhängen Sie die erste Dialogfenster zu einer der Schaltflächen auf dem Hauptformular Erstellen Sie drei Schaltflächen im ersten Dialogfenster und fügen Sie das zweite Dialogfenster zu einer der neu erstellten Schaltflächen hinzu. So werden wir drei Formulare gleichzeitig geöffnet und nur einer von ihnen ist aktiv verfügbar. Der Code unten zeigt, was muss hinzugefügt werden, um die CProgram benutzerdefinierte Klasse der Anwendung in der aktuellen Phase der Entwicklung. Locate Aufruf dieser Methoden in der Hauptmethode der Erstellung der grafischen Oberfläche der Anwendung in der Entwicklung Im Folgenden ist eine verkürzte Version von Diese Methode. Wir betrachten die Methode nur für das erste Dialogfenster zweiten Formular Wie Sie sich erinnern, müssen Sie die CWndContainer AddWindow-Methode für das Hinzufügen eines Formulars zur Basis verwenden Bitte beachten Sie, wie Formularkoordinaten im folgenden Code definiert sind Als Standard-Koordinaten Sind null, wenn das Programm auf das Diagramm geladen wird, werden die Koordinaten, die Sie für angebracht halten, gesetzt. In diesem Beispiel sind die Werte x 1, y 20 Danach kann das Formular verschoben werden und dann kann der Zeitrahmen oder das Symbol des Diagramms Geschaltet werden Der untenstehende Code zeigt, dass das Formular bleibt, wo es das letzte Mal war Wenn Sie möchten, dass das Formular sich dort befindet, wo es beim ersten Laden des Programms zum Diagramm war, dann entfernen Sie diese Bedingungen In diesem Beispiel sind alle drei Formulare of the graphical interface of the program will have the same conditions. Let us arrange that the dialog forms can be moved over the chart The window type should be set as dialog WDIALOG , otherwise you will encounter incorrect work of the graphical interface The window icon can be redefined using the CWindow IconFile method In case of dialog windows, same icon can be used as the one of the element that brings up this window. Let me remind you about some details of how to attach controls to a certain dialog window As an example , let us consider one of the button methods designated for this form I would like to highlight only two things. You need to remember that. The element must be passed the pointer to the form to which it is to be attached. When the element pointer is saved in the base, specify the index of the form to which the element is to be attached In this case it is index 1.It is up to the developer of the application to manage the display of windows Track the pressing on any control in the event handler of the CProgram custom class and show the relevant window Assign the call of the first dialog window to the button on the main window of the EA second form , and the call of the second dialog window to the button on the first dialog window third form. Desired result is shown in the screenshot below Please note the ellipsis in the button names Icon Button 1 and Icon Button 6 This is a usual way of letting the user know that pressing of this element will open a dialog window. Fig 1 Testing of the multi-window mode. If you switch the symbol or the timeframe of the chart when several forms are open, you will encounter a problem Dialog windows will disappear as they are supposed to but the management will not be passed over to the main window The form will not respond to the user s actions The solution to this is simple As you remember, the CWndEvents Destroy method is called in the CProgram OnDeinitEvent method for uninitialization of the custom class The graphical interface of the application is deleted in this method The management has to be given to the main window at the moment of deleting the graphical interface Therefore, some additions must be introduced to the CWndEvents Destroy method. Set the index of the main window as active. Activate the main window and deactivate the rest. Below is the code of the current version of the CWndEvents Destroy method. The first version of the multi-window mode is implemented Everything turned out to be less complicated than it could have seemed initially. Enhancement of the System of Priorities of the Left Mouse Button. Up until now, the management of priorities of the left mouse click on the interface elements has been carried out by the events with the ONOPENDIALOGBOX and ONCLOSEDIALOGBOX identifiers The reason for that was that when the next drop-down element was developed, it was up to the user to assign the priority value for each object of this element Priorities of other elements that could happen to be beneath it were taken into account However, when it came to creating complex compound controls, this system was awkward and easy to confuse To make things easier , let us create two more identifiers for such events. ONZEROPRIORITIES zeroing priorities. ONSETPRIORITIES restoring priorities. Add them to the file. Generation of events with these identifiers must be located in the classes of the elements that are or can be drop-down ones At the current stage of development, in the present interface set, context menu is such an element Therefore, add the code to the Show and Hide methods of the CContextMenu class as shown below in the shortened versions of the code. We will receive these messages in the main class for handling all messages CWndEvents For that, we will write a separate handling method for each identifier These methods will be called in the main method for handling custom events CWndEvents ChartEventCustom. In the CWndEvents OnZeroPriorities method, iterate over all elements of the active window and zero priorities of all of them except the one with the element identifier contained in the message lparam - parameter as well as except menu items and context menus The reason why we exclude menu items and context menus is that several context menus can be opened at the same time one from another. If the received message contains the ONSETPRIORITIES event identifier, then restore priorities of the left mouse button click for all the elements of the active window. The library for creating graphical interfaces at the current stage of development looks like in the schematic below. Fig 2 Library structure at the current stage of development. This is the final article of the fourth part of the series about graphical interfaces In the first chapter of this part, the status bar and tooltip informational interface elements were realized In the second chapter, the multi-window mode and a priority system of the left mouse click were discussed. You can find and download all the material of the first part or the series in the attached files so you can test how it works If you have questions on using the material presented in those files, you can refer to the detailed description of the library development in one of the articles from the list below or ask your question in the comments of this article. List of the articles chapters of the fourth part.
Haftungsausschluss und Gefahrwarnung. Bitte lesen Sie. Gefahr Warnung. Der Handel mit Devisen am Marge trägt ein hohes Risiko und ist möglicherweise nicht für alle Anleger geeignet. Der hohe Grad der Hebelwirkung kann sowohl gegen Sie als auch für Sie arbeiten. Vor der Entscheidung, in Devisen zu investieren, sollten Sie sorgfältig überlegen, Ihre Investition Ziele, Erfahrungsstand und Risiko Appetit. Die Möglichkeit besteht, dass Sie einen Verlust von einigen oder allen Ihrer ursprünglichen Investition aufrechterhalten könnten und deshalb sollten Sie nicht Geld investieren, das Sie sich nicht leisten können, zu verlieren. Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel, und suchen Sie Rat von einem unabhängigen Finanzberater, wenn Sie Zweifel haben. Haftungsausschluss Alle Informationen auf dieser Website sind unserer Meinung nach der Meinung unserer Besucher und können nicht die Wahrheit widerspiegeln. Bitte benutze dein eigenes gutes Urteil und suche Ra...
Comments
Post a Comment