Funktion startet nicht

 

Hi zusammen,

ich stecke etwas fest. Ich versuche mir einen "Scanner" zu bauen, der bei den Initialisierung des EA's losläuft und mir bestimmte Werte druckt. Allerdings kriege ich die entsprechende Funktion nicht gestartet. 
Ich bin jetzt kein Programmierer und fange quasi mehr oder weniger an. Hier ist mein Code. Was mache ich falsch?

//+------------------------------------------------------------------+

//|                                             SymbolScanner.mq5|

//|                        Copyright 2023, MetaQuotes Software Corp. |

//|                                             http://www.mql5.com |

//+------------------------------------------------------------------+

#property strict

#include <Controls\Panel.mqh>


//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnInit()

{

Print("ZZZZZZZZZZZZZZZ");

    // Andere Initialisierungen

    double sma20 = iMA(_Symbol, _Period, 20, 0, MODE_SMA, PRICE_CLOSE);

    Print("XXXXXXXXXXXXXXXXXXXXXX");


    // Start Scanner einmalig beim Laden des Indikators

    StartScanner();


    //return(INIT_SUCCEEDED);

}


//+------------------------------------------------------------------+

//| Funktion, um den Scanner zu starten                              |

//+------------------------------------------------------------------+

void StartScanner()

{

Print("WWWWWWWWWWWWWWWWWWWWWWW");

   string symbolName;

   int totalSymbols = SymbolsTotal(false);


   for(int i = 0; i < totalSymbols; i++)

   {

      symbolName = SymbolName(i, false);


      // Prüfe für jeden Timeframe

      CheckSymbolOnTimeframe(symbolName, PERIOD_H1);

      CheckSymbolOnTimeframe(symbolName, PERIOD_H4);

      CheckSymbolOnTimeframe(symbolName, PERIOD_D1);

      Print("YYYYYYYYYYYYYYYYYYYY");

   }

}


//+------------------------------------------------------------------+

//| Funktion zum Überprüfen eines Symbols in einem bestimmten Timeframe |

//+------------------------------------------------------------------+

void CheckSymbolOnTimeframe(string symbol, ENUM_TIMEFRAMES timeframe)

{

   if(IsHeikenAshiNoWick(symbol, timeframe))

   {

      string timeframeStr = TimeframeToString(timeframe);

      Print("Signal gefunden für ", symbol, " im Timeframe ", timeframeStr);

   }

}


bool IsHeikenAshiNoWick(string symbol, ENUM_TIMEFRAMES timeframe)

{

    MqlRates rates[2]; // Array für zwei Bars

    // Versuche, die letzten zwei Bars zu kopieren

    if(CopyRates(symbol, timeframe, 0, 2, rates) >= 2)

    {

        double haClose = (rates[1].open + rates[1].high + rates[1].low + rates[1].close) / 4;

        double previousHAOpen = (rates[1].open + rates[1].close) / 2; // Vorherige Kerze

        double haOpen = (previousHAOpen + rates[1].close) / 2; // Aktuelle Kerze

        double haHigh = MathMax(rates[1].high, MathMax(haOpen, haClose));

        double haLow = MathMin(rates[1].low, MathMin(haOpen, haClose));


        // Überprüfe, ob die letzte Heiken-Ashi-Kerze keinen Wick hat

        if(haHigh == haLow)

            return true;

    }

    return false;

}


//+------------------------------------------------------------------+

//| Hilfsfunktion zur Umwandlung von Timeframe-Enumerationen in Strings |

//+------------------------------------------------------------------+

string TimeframeToString(int timeframe)

{

   switch(timeframe)

   {

      case PERIOD_M1: return "1 Minute";

      case PERIOD_M5: return "5 Minuten";

      case PERIOD_M15: return "15 Minuten";

      case PERIOD_M30: return "30 Minuten";

      case PERIOD_H1: return "1 Stunde";

      case PERIOD_H4: return "4 Stunden";

      case PERIOD_D1: return "Täglich";

      case PERIOD_W1: return "Wöchentlich";

      case PERIOD_MN1: return "Monatlich";

      default: return "Unbekannter Timeframe";

   }

}

//+------------------------------------------------------------------+


Entdecken Sie neue Möglichkeiten des MetaTrader 5 mit MQL5 Gemeinschaft und Services
Entdecken Sie neue Möglichkeiten des MetaTrader 5 mit MQL5 Gemeinschaft und Services
  • 2023.12.11
  • www.mql5.com
MQL5: eine Sprache von Handelsstrategien, eingebaut in die Handelsplattform MetaTrader 5, mit der man eigene Handelsroboter, technische Indikatoren, Skripte und Funktionsbibliotheken
 
  1. Bitte Code als Code posten: Alt+S oder 
  2. Wenn das Program nicht tut, was es soll ist der Debugger das Mittel der Wahl: https://www.metatrader5.com/de/metaeditor/help/development/debug.
  3. Übrigens: Es gibt fast nichts, das nicht schon für MT4/5 programmiert wurde!
        => Suchen in den Artikeln: https://www.mql5.com/de/articles
        => Suchen in der Codebase: https://www.mql5.com/de/code
        => Suchen allgemein: https://www.mql5.com/de/search oder über Google mit: "site:mql5.com .." (verzeiht Schreibfehler)
  4. Als Anfänger würde ich Dir empfehlen, such etwas, das Deiner Idee nahe kommt. Dann beginnst Du mit etwas, was funktioniert, und ändere es langsam ab.
  5. Hier noch konzentriert eine Übersicht für Neulinge: https://www.mql5.com/de/forum/455957#comment_50048608
Code-Debugging - Programme entwickeln - MetaEditor Hilfe
  • www.metatrader5.com
MetaEditor hat einen eingebauten Debugger, mit dem Sie die Programmausführung Schritt für Schritt (durch einzelne Funktionen) ü...