Diskussion zum Artikel "Implementierung einer Handelsstrategie der Bollinger Bänder mit MQL5: Ein schrittweiser Leitfaden"
Der EA weist zahlreiche Kompilierungsfehler auf.
Dieser Code hat zu viele Fehler. Ich habe die Fehler behoben und poste den aktualisierten Code hier. Sie sind herzlich willkommen!
//+------------------------------------------------------------------+ //|BollingerBands.mq5 | //|Urheberrecht 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Trade\Trade.mqh> // Einbinden der Handelsbibliothek CTrade trade; // Erstellen einer Instanz der Klasse CTrade // Eingabeparameter für die Bollinger-Band-Strategie input int BandPeriod = 30; input double BandDeviation = 2.0; input double LotSize = 0.2; input int Slippage = 3; input double StopLoss = 70; input double TakeProfit = 140; int Bb_Handle; // Handle für den Bollinger Bands Indikator //+------------------------------------------------------------------+ //| Experten-Initialisierungsfunktion| //+------------------------------------------------------------------+ int OnInit() { // Erstellen Sie den Indikatorgriff Bollinger Bands Bb_Handle = iBands(_Symbol, PERIOD_CURRENT, BandPeriod, 0, BandDeviation, PRICE_CLOSE); if(Bb_Handle == INVALID_HANDLE) { Print("Error creating Bollinger Bands indicator"); return(INIT_FAILED); } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Experten-Deinitialisierungsfunktion| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { // Lösen Sie den Griff des Bollinger Bands Indikators IndicatorRelease(Bb_Handle); } //+------------------------------------------------------------------+ //| Experten-Tick-Funktion| //+------------------------------------------------------------------+ void OnTick() { double upperBand[], lowerBand[], middleBand[]; // Kopieren Sie die Werte der Bollinger-Bänder in Arrays if(CopyBuffer(Bb_Handle, 0, 0, 1, upperBand) <= 0 || CopyBuffer(Bb_Handle, 1, 0, 1, middleBand) <= 0 || CopyBuffer(Bb_Handle, 2, 0, 1, lowerBand) <= 0) { Print("Error copying band values"); return; } double upper = upperBand[0]; double lower = lowerBand[0]; double middle = middleBand[0]; double price = SymbolInfoDouble(_Symbol, SYMBOL_LAST); double Ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); // Kaufsignal: Kurs liegt unter dem unteren Band und keine offenen Positionen if(price < lower && !IsPositionOpen(_Symbol)) { double sl, tp; CalculateSLTP(sl, tp, Ask, true); if(trade.Buy(LotSize, _Symbol, Ask, sl, tp, "Buy Order")) Print("Buy order opened at price: ", Ask); else Print("Error opening BUY order:", trade.ResultRetcode()); } // Verkaufssignal: Preis liegt über dem oberen Band und keine offenen Positionen else if(price > upper && !IsPositionOpen(_Symbol)) { double sl, tp; CalculateSLTP(sl, tp, Bid, false); if(trade.Sell(LotSize, _Symbol, Bid, sl, tp, "Sell Order")) Print("Sell order opened at price:", Bid); else Print("Error opening SELL order:", trade.ResultRetcode()); } } //+------------------------------------------------------------------+ //| Prüfen Sie, ob es eine offene Position für ein Symbol gibt. //+------------------------------------------------------------------+ bool IsPositionOpen(string symbol) { for(int i = 0; i < PositionsTotal(); i++) { if(PositionGetSymbol(i) == symbol) return true; } return false; } //+------------------------------------------------------------------+ //| Alle Positionen für ein Symbol schließen| //+------------------------------------------------------------------+ void CloseAllPositions(string symbol) { for(int i = PositionsTotal() - 1; i >= 0; i--) { if(PositionGetSymbol(i) == symbol) { ulong ticket = PositionGetTicket(i); if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) trade.PositionClose(ticket, Slippage); else if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) trade.PositionClose(ticket, Slippage); // Warten Sie auf die Bearbeitung der Bestellung, bevor Sie fortfahren Sleep(1000); } } } //+------------------------------------------------------------------+ //| Stop-Loss- und Take-Profit-Levels berechnen | //+------------------------------------------------------------------+ void CalculateSLTP(double &sl, double &tp, double price, bool isBuy) { if(isBuy) { sl = price - StopLoss * _Point; tp = price + TakeProfit * _Point; } else { sl = price + StopLoss * _Point; tp = price - TakeProfit * _Point; } }

Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Neuer Artikel Implementierung einer Handelsstrategie der Bollinger Bänder mit MQL5: Ein schrittweiser Leitfaden :
Eine Schritt-für-Schritt-Anleitung zur Implementierung eines automatisierten Handelsalgorithmus in MQL5, der auf der Bollinger-Band-Handelsstrategie basiert. Ein detailliertes Tutorial zur Erstellung eines Expert Advisors, der für Händler nützlich sein kann.
Händler können einen Expert Advisor (EA) erstellen, der Bollinger Bänder verwendet, um Kauf- und Verkaufsaufträge basierend auf bestimmten Marktbedingungen auszuführen, indem sie dieser Schritt-für-Schritt-Anleitung folgen. Wichtige Themen wie die Konfiguration des Bollinger-Band-Indikators, die Kontrolle von Handelspositionen, die Auftragsausführung und das Fehlermanagement werden behandelt. Unabhängig von Ihrer Erfahrung mit der Entwicklung oder Ihrer Vertrautheit mit dem algorithmischen Handel bietet dieses Tutorial Händlern eine solide Grundlage, auf der sie ihre Handelsmethoden entwickeln und verbessern können.
Diese Reise wird die folgenden Themen behandeln:
Ergebnisse:
Von 2016 bis 2019 führte die Strategie 1425 Handelsgeschäfte aus, 857 wurden mit Gewinn geschlossen, was 20,28% mehr ist als die Verlustpositionen.
Autor: Kikkih25