Systemhandel

Raymond Cloudy Day EA – Der innovative MetaTrader 5 Indikator für Trader
MetaTrader5
Raymond Cloudy Day EA – Der innovative MetaTrader 5 Indikator für Trader

Hauptmerkmale: Innovative Berechnungsmethode: Der Raymond Cloudy Day Indikator basiert auf einer einzigartigen Berechnungsmethode, die hochpräzise und zuverlässige Punkte liefert, um dir als Trader zu helfen, informierte Entscheidungen zu treffen. Erweiterte Kauf-/Verkaufssignale: Der Indikator bestätigt mögliche Trendverlängerungen für Kauf oder Verkauf oder eine Rückkehr zum Hauptberechnungspunkt und bietet dir strategische Einblicke. Take Profit (TP) Punkte: TP-Punkte können genutzt werden, um Gewinne zu sichern oder als reguläre Punkte zu fungieren, was dir Flexibilität in deiner Handelsstrategie gibt. Unterstützungs-/Widerstandslinien: Alle berechneten Punkte dienen als Unterstützungs- oder Widerstandslinien und bieten tiefere Einblicke in mögliche Preisbewegungen und das Marktverhalten. Vorteile: Verbesserte Genauigkeit: Die innovative Kombination aus der neuen Berechnungsmethode und fortschrittlichen Algorithmen führt zu einer genaueren Trendidentifikation und verbessert somit deinen Entscheidungsprozess. Vielseitige Funktionalität: Der Raymond Cloudy Day Indikator ist sowohl für Anfänger als auch für erfahrene Trader geeignet und passt sich deinen Bedürfnissen an, indem er sowohl Einfachheit als auch fortgeschrittene Funktionen bietet. Individuelle Handelsstrategien: Bitte beachte, dass die derzeit im EA enthaltene Strategie nur eine Demoversion ist und nicht gründlich getestet wurde. Wir ermutigen dich, deine eigenen Handelsstrategien zu integrieren, um das volle Potenzial des Raymond Cloudy Day Indikators auszuschöpfen. Experimentiere mit verschiedenen Ansätzen und passe den Indikator an deinen Handelsstil an, um optimale Ergebnisse zu erzielen. Erlebe die Kraft von Raymonds Vision und unserer Programmierkompetenz mit dem Raymond Cloudy Day Indikator. Optimiere deine Handelsstrategie und maximiere deinen Markterfolg mit diesem hochmodernen Tool.

2024.07.14
Einsteigerprogrammierung: Moving Average Crossover mit und ohne Martingale für MetaTrader 5
MetaTrader5
Einsteigerprogrammierung: Moving Average Crossover mit und ohne Martingale für MetaTrader 5

Alle Funktionen, die im Expert Advisor verwendet werden, befinden sich in der Datei ImportantFunctions.mqh. Es gibt zwei Expert Advisors, die beide das Preiskreuz über den gleitenden Durchschnitt als Einstiegssignal nutzen. Der einzige Unterschied: einer verwendet Martingale, wenn Verluste auftreten, der andere nicht. Ich empfehle nicht, einen der EAs auf einem Live-Konto zu verwenden; sie sind nur zu Demonstrationszwecken gedacht. Eingaben für den einfachen Moving Average EA: MAPeriod: Der Zeitraum des Gleitenden Durchschnitts. LotSize: Die Lotgröße, die für den Einstieg in Trades verwendet wird. TPPoints: Take Profit-Punkte. SLPoints: Stop Loss-Punkte. Eingaben für den Moving Average EA mit Martingale: MAPeriod: Der Zeitraum des Gleitenden Durchschnitts. StartingLot: Die Lotgröße für den ersten Trade; dieser Wert wird nach einem Verlust erhöht. MaxLot: Die maximale Lotgröße. Die StartingLot kann bis zu diesem Wert erhöht werden. TPPoints: Take Profit-Punkte. Diese werden nach einem Verlust erhöht. SLPoints: Stop Loss-Punkte. Diese werden nach einem Verlust erhöht. LotMultiplier: Die Lotgröße wird nach einem Verlust mit diesem Wert multipliziert, solange der MaxLot-Wert noch nicht erreicht ist. TPMultiplier: Der Take Profit und Stop Loss werden nach einem Verlust um diesen Betrag erhöht, was nicht nur durch die Positionsgröße einen Wiederherstellungsansatz bietet, sondern auch aufgrund des größeren TP. Der Code enthält Kommentare, und ich habe ein YouTube-Video erstellt, das alles erklärt, was du wissen musst. Danke fürs Lesen!

2024.06.10
Letzte Geschlossene Trades Überprüfen: Profit, Typ und Symbol im MetaTrader 5
MetaTrader5
Letzte Geschlossene Trades Überprüfen: Profit, Typ und Symbol im MetaTrader 5

Mit diesem Code-Schnipsel kannst du die Daten des letzten geschlossenen Trades abrufen, ohne dabei Schleifen verwenden zu müssen.Erstelle eine Variable, um die Startzeit des aktuellen Tages festzulegen. (Das ist nicht unbedingt notwendig.)Erstelle weitere Variablen, um Ausgaben für das Chart zu drucken und auch in anderen Code-Blöcken zu verwenden. (Das ist ebenfalls nicht unbedingt notwendig.)Wenn du diesen Code innerhalb der OnTick(); Funktion verwendest, werden die Ergebnisse für jeden Tick angezeigt. Du kannst es auch für einmal pro Kerze einstellen.// Variablen string DayStart = "00:00"; // Startzeit des Tages double LastClosed_Profit; // Gewinn des letzten geschlossenen Trades string TradeSymbol, TradeType; // Initialisierung des EAs -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Deinitialisierung des EAs ------------------- void OnDeinit(const int reason)   {   } // OnTick-Funktion -------------------------- void OnTick()   { // Überprüfung des letzten geschlossenen Trades.    CheckLastClosed();   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CheckLastClosed()   {    datetime HistoryTime = StringToTime(DayStart); // Historie vom Tagesbeginn bis zur aktuellen Zeit    if(HistorySelect(HistoryTime,TimeCurrent()))      {       int Total = HistoryDealsTotal();       // Hole die Ticketnummer des letzten Deals und wähle sie für weitere Arbeiten aus.       ulong Ticket = HistoryDealGetTicket(Total -1);       // Hol dir, was du brauchst.       LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);       TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);       // Identifiziere einen Verkaufs-Trade.       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)         {          TradeType = "Verkauf Trade";         }       // Identifiziere einen Kauf-Trade       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)         {          TradeType = "Kauf Trade";         }       // Chart-Ausgabe.       Comment("\n","Anzahl der Deals - :  ", Total,               "\n","Letztes Deal Ticket - :  ", Ticket,               "\n", "Letzter Geschlossener Gewinn -:  ", LastClosed_Profit,               "\n", "Letzter Trade war -:  ", TradeType);      }   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+Du kannst die gesamte Handelsgeschichte (von Beginn des Kontos) mit der HistorySelect(); Funktion auf folgende Weise abrufen:// Gesamte Historie abrufen HistorySelect(0,TimeCurrent());

2024.04.22
QuickTradeKeys123 - Der effiziente Expert Advisor für MetaTrader 5
MetaTrader5
QuickTradeKeys123 - Der effiziente Expert Advisor für MetaTrader 5

Willkommen zu meinem neuesten Beitrag über den QuickTradeKeys 123 EA. Dieser Expert Advisor wurde entwickelt, um schnelle und effiziente Marktreaktionen zu ermöglichen. Mit nur einem Tastendruck kannst du direkt aus der Chartansicht handeln. Hier ist eine kurze Übersicht über seine Funktionen: Funktionen im Detail Taste '1': Öffnet eine Kaufposition mit einer vordefinierten Lotgröße. Taste '2': Öffnet eine Verkaufsposition mit einer vordefinierten Lotgröße. Taste '3': Schließt alle offenen Positionen, die der EA basierend auf der festgelegten Magic Number eröffnet hat. Der EA ist einfach zu bedienen und eignet sich sowohl für Anfänger als auch für erfahrene Trader, die eine effektive und sofortige Handelskontrolle über die Tastatur suchen. Anwendungsbereich Der EA ist für alle Währungspaare und Zeitrahmen geeignet. Für optimale Leistung und schnelle Ausführung solltest du einen niedrigen Spread und einen reibungslosen Marktzugang sicherstellen. Installation Die Installation ist denkbar einfach: Ziehe den EA einfach auf das gewünschte Chart, stelle sicher, dass der automatisierte Handel in MetaTrader aktiviert ist, und erlaube dem EA, Trades auszuführen. Konfiguriere die Magic Number nach Bedarf in den Eingabeeinstellungen. Wichtiger Hinweis Dieser EA ist nicht für den Einsatz auf einem Live-Handelskonto gedacht, es sei denn, der Nutzer versteht das zugrunde liegende Konzept und die damit verbundenen Risiken vollständig. Es wird empfohlen, den EA zunächst auf einem Demokonto zu testen, um seine Funktionsweise kennenzulernen.

2024.04.20
Zähle X Mal und übergebe dann – Expert Advisor für MetaTrader 5
MetaTrader5
Zähle X Mal und übergebe dann – Expert Advisor für MetaTrader 5

01. Zähle "X" Mal und übergebe dann. Schritt 01 - Erstelle eine Variable, um das Zähl-Limit festzulegen. Diese kannst du auch als Input-Parameter in deinem Code verwenden und optimieren. Schritt 02 - Erstelle eine weitere Variable, um das Zähl-Ergebnis zu speichern (wie oft gezählt wurde). Schritt 03 - Sobald der Counter und dein Zähl-Limit gleich sind, ist es Zeit, den von dir festgelegten Codeblock zu übergeben. Schritt 04 - Achte darauf, den Counter zurückzusetzen, nachdem der Codeblock übergeben wurde. Ansonsten zählt er unendlich (in diesem Fall). Du kannst auch Filterbedingungen für den Counter-Block festlegen, wie z.B. >> "Wenn dies wahr ist, dann zähle einmal." input int count = 50; // Setze das Zähl-Limit als Input int Counter; // Zählervariable // Expert Initialisierung -------------------- int OnInit() { return(INIT_SUCCEEDED); } // Expert Deinitialisierung ------------------- void OnDeinit(const int reason) { } // Expert OnTick -------------------------- void OnTick() { Counter ++; // Erhöhe den Zähler bei jedem Tick.   Comment("Aktuelle Anzahl -:", Counter); if(Counter == count)  // Zähle "X" Mal und übergebe   | Dieser Block wird nur einmal pro Zählung ausgeführt. {      // Dein Code kommt hier rein...... Alert(count," Mal gezählt"); Counter = 0; // Setze den Zähler am Ende deines Codeblocks zurück. Das ist wichtig. } } // OnTick Ende  <<---------------------- 02. Übergebe "X" Mal und warte dann "X" Mal. Diese Methode kann verwendet werden, um zwischen warten und übergeben, oder übergeben und warten zu wechseln. Schritt 01 - Erstelle eine Variable für das Zähl-Limit und Warte-Limit. Du kannst sie auch als Input-Parameter in deinem Code verwenden und optimieren. Schritt 02 - Erstelle eine weitere Variable, um die gezählten und wartenden Limits zu speichern (wie oft gezählt und gewartet wurde). Schritt 03 - Sobald der Counter und dein Zähl-Limit gleich sind, ist es Zeit, den von dir festgelegten Codeblock zu übergeben. Schritt 04 - Wenn das Warte-Limit erreicht ist, ist es Zeit, kurz zu warten. Schritt 05 - Stelle sicher, dass du sowohl den Zähler als auch den Wartenden zurücksetzt, wenn das Warte-Limit erreicht ist. Andernfalls wird es aufhören zu funktionieren (in diesem Fall). Du kannst auch Filterbedingungen für den Counter-Block und den Warte-Block festlegen, wie z.B. >> "Wenn dies wahr ist, warte ein wenig." input int count = 50; // Setze das Zähl-Limit als Input input int wait = 50; // Setze das Warte-Limit als Input int Counter; // Zählervariable, Standardwert ist "0" int Waiter; // Wartevariable, Standardwert ist "0" // Expert Initialisierung -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Expert Deinitialisierung ------------------- void OnDeinit(const int reason)   {   } // Expert OnTick -------------------------- void OnTick()   {    Comment("Gezählte Ticks -: ", Counter, "\n", "Gewartete Ticks -: ", Waiter);    if(Counter < count) // Übergebe "X" Mal      {       Counter++; // Aktualisiere den Zähler       // Dein Code kommt hier rein.      }    else       if(Waiter < wait) // Warte für "X" Mal         {          Waiter++; // Aktualisiere den Warte-Zähler          // Dein Code kommt hier rein.         }    if(Waiter == wait) // Warte-Limit erreicht      {       Counter = 0; // Zähler zurücksetzen       Waiter = 0; // Warte-Zähler zurücksetzen      }   } // OnTick Ende  <<---------------------- //+------------------------------------------------------------------+ Besonderheit -: Du kannst "X Mal übergeben und stoppen" programmieren, indem du den oben genannten Code anpasst und den Warte-Codeblock entfernst. Dann zählt es eine bestimmte Anzahl und stoppt, bis der Zähler zurückgesetzt wird. Du kannst ihn überall in deinem Code zurücksetzen, wenn du diese Variablen global definierst.

2024.04.14
Wie man neue Kerzen im MetaTrader 5 effizient erkennt
MetaTrader5
Wie man neue Kerzen im MetaTrader 5 effizient erkennt

In meinem vorherigen Beitrag habe ich die Zeit verwendet, um eine neue Kerze zu erkennen. Diesmal schauen wir uns die Anzahl der Kerzen an, um eine neue Kerze zu identifizieren. Diese Methode ist deutlich leichter und schneller als die zeitbasierte Methode.Definiere die Variablen im Integer-Datentyp, um die Kerzenanzahl zu speichern.Weise bei der Initialisierung die Kerzenanzahl der BarsTotal_OnInt-Variable zu.Nutze die Funktion iBars();, um die Kerzenanzahl für die BarsTotal_OnTick-Variable im Live-Chart zuzuweisen. Diese Variable wird bei jedem Tick aktualisiert.Verwende Kommentare und Alerts, um die Genauigkeit des Codes zu überprüfen.int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Expert-Initialisierungsfunktion                                   | //+------------------------------------------------------------------+ int OnInit()   {      BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Gesamtanzahl der Kerzen bei der Initialisierung zuweisen    return(INIT_SUCCEEDED);   }    void OnTick() // OnTick-Funktion   {      BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Speichert die aktuelle Anzahl       if(BarsTotal_OnTick > BarsTotal_OnInt) // Neue Kerze ist angekommen    {     BarsTotal_OnInt = BarsTotal_OnTick; // Aktualisiert die Historie.     Alert("Neue Kerze ist angekommen");     Comment("Kerzenanzahl in der Historie -: ", BarsTotal_OnInt, "\n", "Kerzenanzahl im Live-Chart -: ", BarsTotal_OnTick); // Hier kommt dein Code. -------------------------- // Du kannst auch ein "Flag" / eine Variable setzen, die du später verwenden kannst.    }   }

2024.04.11
Trailing Stop für MetaTrader 5: So implementierst du es richtig
MetaTrader5
Trailing Stop für MetaTrader 5: So implementierst du es richtig

Dieser Codeblock funktioniert sowohl mit einem Stop Loss als auch ohne. Hier sind die Voraussetzungen, die du beachten solltest: Du musst "Trade.mqh" einfügen, um Zugang zur CTrade-Klasse zu erhalten, die es dir ermöglicht, mit Positionen und Aufträgen zu arbeiten. #include <Trade\Trade.mqh> // <<------------------------------------------ Füge "Trade.mqh" ein, um auf die CTrade-Klasse zuzugreifen Du solltest einen Eingabeparameter festlegen, um den Abstand für den Trailing Stop nach deinen Wünschen anzupassen. Dies ist nicht zwingend erforderlich, aber praktisch. input double Trailing_Step = 3.0; Du musst eine Instanz der CTrade-Klasse definieren. Der Name kann beliebig sein, aber es ist sinnvoll, ihn nach dem OnInit-Ereignishandler zu benennen. Dann musst du eine if-Anweisung erstellen, um zu überprüfen, ob momentan Positionen laufen. Diese Anweisung ruft die Check_TrailingStop();-Funktion für jeden Tick auf. Das ist wichtig, da der EA den Trailing Stop präzise und flüssig verfolgen sollte. Achte darauf, diese Anweisung an den obersten Punkt des OnTick-Ereignishandlers zu setzen, damit sie richtig funktioniert. //+------------------------------------------------------------------+ //| Expert-Initialisierungsfunktion | //+------------------------------------------------------------------+ int OnInit() { //--- Timer erstellen EventSetTimer(60); //--- return (INIT_SUCCEEDED); } CTrade trade; // <<------------------------------------------ Deklariere die "CTrade"-Klasse. Du kannst "trade" durch jeden gewünschten Namen ersetzen void OnTick() { if(PositionsTotal() > 0) { // ruft die Trailing-Stop-Funktion für jeden Tick auf, wenn Positionen aktiv sind. Check_TrailingStop(); } } Du musst eine benutzerdefinierte Funktion namens Check_TrailingStop(); (in diesem Fall) deklarieren, um den Rest zu erledigen. Du kannst jeden gewünschten Namen verwenden. Die benutzerdefinierte Funktion durchläuft alle offenen Positionen und verfolgt sie entsprechend dem gewünschten Abstand. void Check_TrailingStop() { int totalPositions = PositionsTotal(); for(int count = 0; count < totalPositions; count++) { ulong TicketNo = PositionGetTicket(count); // Holt die Ticketnummer der Position anhand des Index. if(PositionSelectByTicket(TicketNo)) { // Wählt eine Position mit der Ticketnummer aus (wir haben die Ticketnummer bereits gewählt) if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { // Überprüft den Positionstyp. double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); // <<------------------- Holt den aktuellen Stop Loss der Position double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(bidPrice - (Trailing_Step * Point), _Digits); if(stopLoss < openPrice) { // Kein Stop Loss ist aktiv. if(bidPrice > openPrice && trailingLevel > openPrice) { // Wird nur einmal pro Position ausgeführt. Setzt den ersten SL. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiziert den Trailing Stop mit "CTrade.trade" } } if(bidPrice > openPrice && trailingLevel > stopLoss) { // Überprüft, ob der Trailing-Level über dem vorherigen Level liegt. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiziert den Trailing Stop mit "CTrade.trade" } } if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(askPrice + (Trailing_Step * Point), _Digits); if(stopLoss < openPrice) { // Kein Stop Loss ist aktiv. if(askPrice < openPrice && trailingLevel < openPrice) { // Wird nur einmal pro Position ausgeführt. Setzt den ersten SL. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiziert den Trailing Stop mit "CTrade.trade" } } if(askPrice < openPrice && trailingLevel < stopLoss) { // Überprüft, ob der Trailing-Level über dem vorherigen Level liegt. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiziert den Trailing Stop mit "CTrade.trade" } } } } }

2024.04.05
Neuen Bar oder Kerze im MetaTrader 5 erkennen: Ein einfacher Code
MetaTrader5
Neuen Bar oder Kerze im MetaTrader 5 erkennen: Ein einfacher Code

In diesem Beitrag zeigen wir dir, wie du mit einem einfachen Code einen neuen Bar oder eine neue Kerze im MetaTrader 5 erkennen kannst. Das Grundprinzip des Codes ist denkbar einfach. Zuerst speichert der Code die Zeit des vorherigen Bars. Anschließend wird 60 Sekunden (entspricht 1 Minute) zur Zeit des vorherigen Bars addiert, um den Schlusszeitpunkt des aktuellen Bars zu berechnen. Wenn dann: Aktuelle Zeit = Schlusszeitpunkt des aktuellen Bars, bedeutet das, dass ein neuer Bar empfangen wurde und der aktuelle Bar geschlossen ist. In diesem Code verhindert das Flag (die boolesche Variable NewBarReceived), dass dieser Codeblock mehrfach aufgerufen wird. Das bedeutet, dass dieser Codeblock nur einmal pro Bar/Kerze ausgeführt wird. Die Comment(); und die PlaySound("ok.wav"); Funktionen werden verwendet, um die Genauigkeit des Codeblocks zu überprüfen. Du kannst sie entfernen, wenn du möchtest. Das Flag wird zurückgesetzt, sobald die aktuelle Zeit über dem Schlusszeitpunkt der aktuellen Kerze liegt, um die Ankunft des nächsten Bars zu überprüfen. (Siehe Kommentare dazu). //+------------------------------------------------------------------+ //|                                                  New Bar Detect.mq5 | //|                                                  by H A T Lakmal | //|                                                   https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Flag zur Kontrolle. //+------------------------------------------------------------------+ //| Experteninitialisierungsfunktion                                   | //+------------------------------------------------------------------+ int OnInit()   { //--- Timer erstellen    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ //| Experten-Deinitialisierungsfunktion                                 | //+------------------------------------------------------------------+ void OnDeinit(const int reason)   { //--- Timer zerstören    EventKillTimer();   } //+------------------------------------------------------------------+ //| Experten-Tickfunktion                                             | //+------------------------------------------------------------------+ void OnTick()   {    datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);    datetime TimeCurrentClose = TimePreviousBar + 60; // Schlusszeit des aktuellen Bars.    datetime Time_Current = TimeCurrent();    if(Time_Current == TimeCurrentClose && NewBarReceived == false)      {       PlaySound("ok.wav");   // Überprüfung der Funktionalität.       NewBarReceived = true; // Flag aktualisieren, um mehrfachen Aufruf zu vermeiden.       // Dein Code kommt hier hin ----- (Mach etwas)      }    else       if(Time_Current > TimeCurrentClose)         {          NewBarReceived = false; // Flag zurücksetzen für den nächsten Bar.          // Dein Code kommt hier hin ----- (Mach etwas)         }    Comment(" " +  " " +  "Aktueller Bar Zeit -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            " " + "Aktueller Schlusszeit -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            " " + "Aktuelle Zeit -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + " " +" " + "Neuer Bar empfangen -: " + NewBarReceived); // Zur Überprüfung der Berechnungen   } //+------------------------------------------------------------------+ //| Timerfunktion                                                   | //+------------------------------------------------------------------+ void OnTimer()   { //---   } //+------------------------------------------------------------------+ //| Handelsfunktion                                                   | //+------------------------------------------------------------------+ void OnTrade()   { //---   } //+------------------------------------------------------------------+ //| ChartEvent-Funktion                                              | //+------------------------------------------------------------------+ void OnChartEvent(const int id,                   const long &lparam,                   const double &dparam,                   const string &sparam)   { //---   } //+------------------------------------------------------------------+  

2024.04.05
Neuro-Netzwerke für algorithmisches Trading mit MQL5 – Dein Leitfaden für MetaTrader 5
MetaTrader5
Neuro-Netzwerke für algorithmisches Trading mit MQL5 – Dein Leitfaden für MetaTrader 5

Entdecke die Welt der Neuro-Netzwerke im Trading Das Buch "Neuro-Netzwerke für algorithmisches Trading mit MQL5" ist dein ultimativer Begleiter, um maschinelles Lernen und neuronale Netze im Trading zu nutzen. Es richtet sich an algorithmische Trader, die lernen möchten, wie sie Handelsstrategien mithilfe fortschrittlicher KI-Techniken entwickeln können. Inhalte des Buches Das Buch umfasst 7 Kapitel, die alles abdecken, was du wissen musst, um mit neuronalen Netzen zu starten und diese in deine Handelsroboter in MQL5 zu integrieren. Mit leicht verständlichen Erklärungen wirst du die Grundlagen des maschinellen Lernens kennenlernen und verschiedene Arten von neuronalen Netzen entdecken, darunter Faltungs- und rekurrente Modelle sowie komplexere architektonische Lösungen und Aufmerksamkeitsmechanismen. Praktische Beispiele und Integration Um dir bei der Integration dieser Lösungen in deine Handelsroboter im MQL5-Umfeld zu helfen, bietet das Buch eine Vielzahl praktischer Beispiele. Außerdem werden verschiedene Methoden zur Verbesserung der Modellkonvergenz behandelt, wie z.B. Batch-Normalisierung und Dropout. Neurale Netze in deinen Handelsstrategien Der Autor gibt zudem praktische Hinweise, wie du neuronale Netze trainierst und in deine Handelsstrategien einbindest. Du wirst lernen, wie du Trading Expert Advisors erstellst, um die Leistung der trainierten Modelle mit neuen Daten zu testen und ihr Potenzial in realen Finanzmärkten zu bewerten. Fazit "Neuro-Netzwerke für algorithmisches Trading mit MQL5" ist nicht nur ein Buch: Es ist ein praktischer Leitfaden, der dir helfen kann, fortgeschrittene Entscheidungsfindungstechniken in deine Handelsalgorithmen zu integrieren und potenziell deine finanziellen Ergebnisse zu verbessern. Starte noch heute, um die erweiterten Möglichkeiten des maschinellen Lernens zu entdecken und bringe dein Trading auf das nächste Level.

2024.02.29
Soundbenachrichtigung für Verbindungen im MetaTrader 5 – So funktioniert's!
MetaTrader5
Soundbenachrichtigung für Verbindungen im MetaTrader 5 – So funktioniert's!

In diesem Beitrag möchte ich euch eine einfache Möglichkeit vorstellen, wie ihr Soundbenachrichtigungen für Verbindungen und Trennungen im MetaTrader 5 einrichten könnt. Das kann besonders hilfreich sein, um sofort informiert zu werden, wenn eure Handelsplattform eine Verbindung herstellt oder trennt. Um die Soundbenachrichtigungen zu aktivieren, müsst ihr zunächst die entsprechenden WAV-Dateien in den MQL5\Files\Sounds-Ordner kopieren. Hier sind die Schritte, die ihr befolgen solltet: Fügt die benötigten WAV-Dateien in den genannten Ordner ein. Kopiert den nachfolgenden Code und kompiliert das EA-Utility. Beachtet, dass einige Codezeilen kommentiert sind, da die Verwendung von #resource das Hochladen erschwert. //+------------------------------------------------------------------+ //| Connect_Disconnect_Sound_Alert.mq5 | //| Copyright 2024, Rajesh Kumar Nait | //| https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Rajesh Kumar Nait" #property link    "https://www.mql5.com/en/users/rajeshnait/seller" #property version  "1.00" #include <Trade/TerminalInfo.mqh> bool     first             = true; bool     Now_IsConnected   = false; bool     Pre_IsConnected   = true; datetime Connect_Start = 0, Connect_Stop = 0; CTerminalInfo terminalInfo; //--- Sounddateien #resource "\Files\Sounds\CONNECTED.wav" #resource "\Files\Sounds\DISCONNECTED.wav" //+------------------------------------------------------------------+ //| Funktion zur Initialisierung des Experts | //+------------------------------------------------------------------+ int OnInit()   { //---       ResetLastError();       while ( !IsStopped() ) {          Pre_IsConnected = Now_IsConnected;          Now_IsConnected = terminalInfo.IsConnected();          if ( first ) {             Pre_IsConnected = !Now_IsConnected;          }          if ( Now_IsConnected != Pre_IsConnected ) {             if ( Now_IsConnected ) {                Connect_Start = TimeLocal();                if ( !first ) {                   if(!PlaySound("::Files\Sounds\DISCONNECTED.wav"))                      Print("Fehler: ",GetLastError());                }                if ( IsStopped() ) {                   break;                }                if(!PlaySound("::Files\Sounds\CONNECTED.wav"))                   Print("Fehler: ",GetLastError());           } else {                Connect_Stop = TimeLocal();                if ( !first ) {                   if(!PlaySound("::Files\Sounds\CONNECTED.wav"))                      Print("Fehler: ",GetLastError());                }                if ( IsStopped() ) {                   break;                }                if(!PlaySound("::Files\Sounds\DISCONNECTED.wav"))                   Print("Fehler: ",GetLastError());           }          }          first = false;          Sleep(1000);       } //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ Hier ist auch ein hilfreiches Video, das die Verwendung des Skripts erklärt:

2024.01.08
Fortgeschrittene MQL5 Werkzeuge für Trader – Teil 7
MetaTrader5
Fortgeschrittene MQL5 Werkzeuge für Trader – Teil 7

Teil 7: Fortgeschrittene MQL5 Werkzeuge "Teil 7: Fortgeschrittene MQL5 Werkzeuge" aus dem Buch "MQL5 Programmierung für Trader" behandelt die erweiterten Möglichkeiten der MQL5 API, die beim Entwickeln von Programmen für MetaTrader 5 nützlich sind. Dazu gehören maßgeschneiderte Finanzsymbole, integrierte Ereignisse aus dem Wirtschaftskalender sowie vielseitige Technologien wie Netzwerke, Datenbanken und Kryptografie. In diesem Teil werden Bibliotheken behandelt – eine spezielle Programmart, die fertige APIs zum Verbinden mit anderen MQL-Programmen bereitstellt. Außerdem wird die Möglichkeit erörtert, Softwarepakete zu entwickeln und logisch verbundene Programme in Projekte zu kombinieren. Abschließend werden Integrationen mit anderen Softwareumgebungen, einschließlich Python, vorgestellt. Wir beginnen mit der Untersuchung von Ressourcen, die Dateien beliebiger Art sind und in den Programmcode eingebettet werden können. Ressourcen können folgende Elemente enthalten: Multimedia-Inhalte "Feste" Einstellungen von externen Programmen Andere MQL5-Programme in kompilierter Form Die MQL5 Entwicklungsumgebung ermöglicht das Einfügen von Anwendungsdatenarrays, Bildern, Klängen und Schriftarten in die Quelldatei, wodurch das Programm zu einem autarken und benutzerfreundlichen Produkt für den Endnutzer wird. Besonderes Augenmerk wird auf grafische Ressourcen mit Rasterbildern im BMP-Format gelegt: Sie lernen, wie man sie dynamisch erstellt, bearbeitet und auf dem Chart anzeigt. Wir schließen den letzten Teil des Buches mit der Untersuchung der OpenCL-Integration in MQL5 ab. OpenCL ist ein offener Standard für paralleles Programmieren in Mehrprozessorsystemen, einschließlich Grafikkarten (GPUs) und zentralen Verarbeitungseinheiten (CPUs). Es ermöglicht die Beschleunigung rechenintensiver Aufgaben, sofern die Algorithmen parallelisiert werden können. Dazu gehören das Trainieren von neuronalen Netzwerken, die Fourier-Transformation und das Lösen von Gleichungssystemen. Die Nutzung von OpenCL in MQL-Programmen erfordert spezielle Treiber vom Hersteller und die Unterstützung von OpenCL-Version 1.1 und höher. Das Vorhandensein einer Grafikkarte ist nicht zwingend erforderlich, da auch der zentrale Prozessor für paralleles Rechnen verwendet werden kann.

2023.12.16
Automatisierter Handel mit MQL5: Teil 6 – Expert Advisors für MetaTrader 5
MetaTrader5
Automatisierter Handel mit MQL5: Teil 6 – Expert Advisors für MetaTrader 5

Teil 6: HandelsautomatisierungIn "Teil 6: Handelsautomatisierung" des Buches "MQL5 Programmierung für Trader" befassen wir uns mit einem zentralen Element der MQL5-Sprache. Wir starten mit einer Beschreibung der grundlegenden Entitäten, wie z.B. den Spezifikationen der Finanzinstrumente und den Einstellungen des Handelskontos. Diese sind Voraussetzung für die Erstellung von funktionierenden Expert Advisors.Danach gehen wir zu den integrierten Funktionen und Datenstrukturen über sowie zu roboterspezifischen Ereignissen und den wesentlichen Aspekten des Betriebs von Expert Advisors im Strategietester. Der Strategietester von MetaTrader 5 ist ein entscheidendes Werkzeug in der Entwicklung von Handelsrobotern, da er es ermöglicht, die finanzielle Performance zu bewerten und Handelsstrategien zu optimieren.Der Tester bietet unverzichtbare Werkzeuge zum Debuggen in verschiedenen Modi, inklusive visuellem Testen mit Balken oder Ticks, sowohl mit modellierten als auch mit realen Ticks. Darüber hinaus ermöglicht er die visuelle Nachbildung des Kursflusses und einfaches Testen ohne visuelles Fenster. Wir haben bereits gesehen, wie man Indikatoren im visuellen Modus testet. Allerdings sind für diese nur eine begrenzte Anzahl von Einstellungen zulässig. Bei der Entwicklung von Expert Advisors haben wir Zugriff auf die volle Bandbreite der Tester-Funktionalitäten.Zusätzlich werfen wir einen Blick auf eine andere Darstellung der Marktdaten: Die Markttiefe und ihre Software-Schnittstelle.MetaTrader 5 bietet die Möglichkeit, Finanzinstrumente (Symbole) zu analysieren und zu handeln, die die Grundlage aller Subsysteme des Terminals bilden. Nutzer können Symbole aus der Liste auswählen, die vom Broker bereitgestellt wird, und diese im Marktbeobachtungsfenster überwachen. Mit der MQL5 API können Sie die Eigenschaften aller Symbole einsehen und analysieren sowie sie zum Marktbeobachtungsfenster hinzufügen oder daraus entfernen.Neben den standardmäßigen Symbolen, die von Brokern bereitgestellt werden, unterstützt MetaTrader 5 die Erstellung benutzerdefinierter Symbole, indem deren Eigenschaften und Kursverläufe aus beliebigen Datenquellen geladen oder unter Verwendung von Formeln und MQL5-Programmen berechnet werden.

2023.12.16
Erste Vorherige 1 2 3 4 5 6 7 8 9 10 Nächste Letzte