Verständnis Code

 

Hallo,

ich habe einen Code im Forum gefunden und würde den gerne verstehen, allerding ist dieser in einer weise geschrieben die ich nicht zuordnen kann.

Kann mir den jemand erklären?

https://www.mql5.com/de/code/39068


//--- importing required dll files
#define MT_WMCMD_EXPERTS   32851 // ist das eine andere Form der Magicnummer angabe?
#define WM_COMMAND 0x0111 // Gibt es eine Liste von Commands damit ich weis was 0x0111 bedeutet?
#define GA_ROOT    2 // wofür steht GA_ROOT 2?
#include <WinAPI\winapi.mqh>

//+------------------------------------------------------------------+
//| Toggle auto-trading button                                       |
//+------------------------------------------------------------------+
void AlgoTradingStatus(bool newStatus_True_Or_False) {
    //--- getting the current status
    bool currentStatus = (bool) TerminalInfoInteger(TERMINAL_TRADE_ALLOWED);
    //--- if the current status is equal to input trueFalse then, no need to toggle auto-trading
    if(trueFalse != newStatus_True_Or_False) {
        //--- Toggle Auto-Trading
        HANDLE hChart = (HANDLE) ChartGetInteger(ChartID(), CHART_WINDOW_HANDLE);
        PostMessageW(GetAncestor(hChart, GA_ROOT), WM_COMMAND, MT_WMCMD_EXPERTS, 0);
    }
}
//+------------------------------------------------------------------+

Bitte die Kommentare beachten.

How to Disable/Enable Auto/Algo-Trading in both MT5 and MT4.
  • www.mql5.com
Just simple codes to Disable/Enable Auto/Algo-Trading in both MT5 and MT4. Of course, DLLs must be allowed, This cannot be done without DLLs
 
Aleksi-Trader:

Hallo,

ich habe einen Code im Forum gefunden und würde den gerne verstehen, allerding ist dieser in einer weise geschrieben die ich nicht zuordnen kann.

Kann mir den jemand erklären?

https://www.mql5.com/de/code/39068


Bitte die Kommentare beachten.

Das an- und abschalten des Algotradings funktioniert nur im Terminal mit Mausklick, es gibt dazu keine Funktion, allerdings kann man das über Win-Apis doch aus einem Programm heraus erreichen

 
Carl Schreiber #:

Das an- und abschalten des Algotradings funktioniert nur im Terminal mit Mausklick, es gibt dazu keine Funktion, allerdings kann man das über Win-Apis doch aus einem Programm heraus erreichen

Das wr mir bewusst, ich habe es auch schon getestet und es funktioniert / das Algotrading wird deaktiviert.

Mir geht es darum den Code zu verstehen. Siehe Kommentare im Code als Fragen gestellt.

Generell suche ich Lektüre zu API im MT wo ich kaum was vernünftiges finde.
 
Aleksi-Trader #:

Das wr mir bewusst, ich habe es auch schon getestet und es funktioniert / das Algotrading wird deaktiviert.

Mir geht es darum den Code zu verstehen. Siehe Kommentare im Code als Fragen gestellt.

Ich sehe keine Frage, wiederhole sie doch hier.
 
Carl Schreiber #:
Ich sehe keine Frage, wiederhole sie doch hier.

Okay, dann muss ich es halt zerpfücken und umständlich machen...


#define MT_WMCMD_EXPERTS   32851 // ist das eine andere Form der Magicnummer angabe? 

was wird bei den oben stehenden Code genau gemacht? 

wird bei den oben stehenden Code eine andere Form der Magicnummer angabe verwendet oder hat dies eine andere bedeutung/ funktion?


#define WM_COMMAND 0x0111 // Gibt es eine Liste von Commands damit ich weis was 0x0111 bedeutet?

was wird bei den oben stehenden Code genau gemacht,wofür steht"0x0111" gibt es eine Liste von" Commands" damit ich weis was  "0x0111" bedeutet? 


#define GA_ROOT    2 // wofür steht GA_ROOT 2?

wofür steht GA_ROOT 2?

 

Weißt Du, was #define bedeutet?

Der Compiler setzt an die Stelle zB. von GA_ROOT das, was danach kommt, insofern sind #define Mittel den Code lesbarer zu machen: https://www.mql5.com/en/docs/basis/preprosessor/constant

Die Bedeutung der Zahlen ergeben sich aus dem Win-Api Programm: https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list

Documentation on MQL5: Language Basics / Preprocessor / Macro substitution (#define)
Documentation on MQL5: Language Basics / Preprocessor / Macro substitution (#define)
  • www.mql5.com
Macro substitution (#define) - Preprocessor - Language Basics - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Carl Schreiber #:

Weißt Du, was #define bedeutet?

Der Compiler setzt an die Stelle zB. von GA_ROOT das, was danach kommt, insofern sind #define Mittel den Code lesbarer zu machen: https://www.mql5.com/en/docs/basis/preprosessor/constant

Die Bedeutung der Zahlen ergeben sich aus dem Win-Api Programm: https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list

#defines nutze ich schon ne kleine Weile, ich verstehe es so wie eine Art "Variable oder Enum" die einen Wert der dahinter angegeben wird enthält.

"Die Bedeutung der Zahlen ergeben sich aus dem Win-Api Programm: https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list"

Perfekt, danke dir

Windows API index - Win32 apps
Windows API index - Win32 apps
  • 2022.05.13
  • GrantMeStrength
  • docs.microsoft.com
A list of the reference content for the Windows API.
Grund der Beschwerde: