![Dokumentation zu MQL5: Grundlagen der Sprache / Variablen / Sichtbereich und Lebensdauer der Variablen Dokumentation zu MQL5: Grundlagen der Sprache / Variablen / Sichtbereich und Lebensdauer der Variablen](https://c.mql5.com/36/34/dokumentation-zu-mql5-grundlagen.png)
- www.mql5.com
Also brauch ich nicht "extendet" verwenden?
Muss ich die Variablen dann in jeder Klasse neu definieren?
Etwa so?:
class WriteParameters{ private: double MA_Weight[5][2]; double RSI_Weight[5][2]; double CCI_Weight[5][2]; double ADX_Weight[5][2]; int IndicatorCombinerArray_MA[9999][4]; int IndicatorCombinerArray_RSI[9999][4]; int IndicatorCombinerArray_CCI[9999][4]; int IndicatorCombinerArray_ADX[9999][3]; int IndicatorCombinerCounter[4]; string PROG_NAME; string PROG_VERSION; enum IndicatorName{ E_MA=0, E_RSI=1, E_CCI=2, E_ADX=3, }; public: bool WriteParameterCombination(IndicatorName name,int MagicNumber); };
Guten Tag,
Ich baue mein Projekt derzeit um, da es zu groß für eine Datei geworden ist. Das klappt auch so weit gut. Ich bekomme es bloß nicht hin Variablen Klassen übergreifend ab zu fragen. Z.b. möchte ich in einer Nebenklasse Variablen aus meiner Hauptklasse abfragen. Habe aber keine Ahnung wie.
-Danke im Vorraus.
Ich hab das folgendermaßen gemacht:
1. Eine CTradeExt klasse erstellt die von CTrade abgeleitet ist. CTradeExt bedeutet bei mir eine erweiterte CTrade klasse.
2. Jeder Modul verwendet diese CTradeExt.mqh (#include)
3. Methoden aller Klassen dürfen auch Funktionsnamen wie OnInit, OnTick, etc besitzen
4. Alle Definitionen die du benötigst kommen in diese CTradeExt.mqh
5. Schreib alles modular, dadurch kannst du die einzelnen Module leicht austauschen. Wie TP, SL, Trailing, usw.
Das wichtigste hätte ich fast vergessen: Deklariere die Instanz IN dieser mqh, dadurch können alle Module auf diese Instanz zugreifen.
Bedenke daß der Constructor nur EINMAL ausgeführt wird und bau OnInit() Funktionen ein! Das wär ein Thema für sich. MQL hat schon auch seine Eigenheiten!
Weitere Fragen beantworte ich gerne, Ein Beispiel der TradeExt.mqh häng ich hier dran.
Ich sollt ein Buch schreiben oder eine YT Kanal betreiben, leider fehlt mir die Zeit.
Also brauch ich nicht "extendet" verwenden?
Muss ich die Variablen dann in jeder Klasse neu definieren?
Du brauchst das nur einmal definieren. Wofür soll "extended" stehen? Hab ich noch nie gebraucht.
Du brauchst das nur einmal definieren. Wofür soll "extended" stehen? Hab ich noch nie gebraucht.
sry, nicht "extendet", sonder "extern"
https://www.mql5.com/de/docs/basis/variables/externvariables
![Dokumentation zu MQL5: Grundlagen der Sprache / Variablen / Extern Variablen Dokumentation zu MQL5: Grundlagen der Sprache / Variablen / Extern Variablen](https://c.mql5.com/36/34/dokumentation-zu-mql5-grundlagen__1.png)
- www.mql5.com
Ich hab das folgendermaßen gemacht:
1. Eine CTradeExt klasse erstellt die von CTrade abgeleitet ist. CTradeExt bedeutet bei mir eine erweiterte CTrade klasse.
2. Jeder Modul verwendet diese CTradeExt.mqh (#include)
3. Methoden aller Klassen dürfen auch Funktionsnamen wie OnInit, OnTick, etc besitzen
4. Alle Definitionen die du benötigst kommen in diese CTradeExt.mqh
5. Schreib alles modular, dadurch kannst du die einzelnen Module leicht austauschen. Wie TP, SL, Trailing, usw.
Das wichtigste hätte ich fast vergessen: Deklariere die Instanz IN dieser mqh, dadurch können alle Module auf diese Instanz zugreifen.
Bedenke daß der Constructor nur EINMAL ausgeführt wird und bau OnInit() Funktionen ein! Das wär ein Thema für sich. MQL hat schon auch seine Eigenheiten!
Weitere Fragen beantworte ich gerne, Ein Beispiel der TradeExt.mqh häng ich hier dran.
Ich sollt ein Buch schreiben oder eine YT Kanal betreiben, leider fehlt mir die Zeit.
Phuu, das sieht nicht schlecht aus, aber mein Programm ist sehr Komplex. Ich brauche in manchen Methoden über 100 Variablen und Arrays und die meisten Dateien haben schon über 1000 Zeilen. Ich glaube ich sehe dann nicht mehr durch. :/
Also brauch ich nicht "extendet" verwenden?
Muss ich die Variablen dann in jeder Klasse neu definieren?
Etwa so?:
Mann!
Hinter meinem Link steht links Globale Variablen und dort gibt es ein Beispiel wo und wie sie definiert werden.
Dort gibt es auch noch mehr zu lesen..
Mann!
Hinter meinem Link steht links Globale Variablen und dort gibt es ein Beispiel wo und wie sie definiert werden.
Dort gibt es auch noch mehr zu lesen..
Du brauchst das nur einmal definieren. Wofür soll "extended" stehen? Hab ich noch nie gebraucht.
Otto, könnte er nicht ein wenig mogeln?
Beim Erstellen der Nebenklasse den Pointer der Hauptklasse mitgeben und speichern.
Oder geht das bei MQL5 nicht?
Ich weiß, das wirft das OOP - Konzept über den Haufen. Ich mach das öfters mal in MATLAB.
Gerade, wenn man mal das Design der Klassen nicht ganz sauber getrennt hat.Ich glaub er meint was anderes. Ich denke er will auf gemeisame Klassen zugreifen. Da nützen ihm die Globals nix.
Jup, dass ist das Problem(Ich lese es mir aber trotzdem nochmal durch). Jetzt ist mir auch noch aufgefallen das ich die input-variablen nicht in den anderen Klassen verwenden kann. Mir fällt auch echt kein Ansatz ein.
Mann das nervt richtig. In MQL ist das echt schlecht gelöst. Das geht in anderen Sprachen besser!
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Guten Tag,
Ich baue mein Projekt derzeit um, da es zu groß für eine Datei geworden ist. Das klappt auch so weit gut. Ich bekomme es bloß nicht hin Variablen Klassen übergreifend ab zu fragen. Z.b. möchte ich in einer Nebenklasse Variablen aus meiner Hauptklasse abfragen. Habe aber keine Ahnung wie.
-Danke im Vorraus.