Strategietester dreht durch - Seite 4

 
lindomatic:

Aber gänzlich verzweifeln tue ich auf der Suche nach den von Dir gelobten Classes CSymbol und CAccount, wo bitte sind die denn?! 

Wie Otto schon erklärte sind die nicht komplett drin aber das geübte Auge erkennt die Teile davon :-)


Mach doch einfach noch mal ein Tutorial durch.

https://www.google.com/search?client=firefox-b-d&q=c+tutorial

Glaub mir auch, auch wenn vieles bekannt ist man lernt immer noch aus solchen etwas.

Oder zieh Dir auf YouTube sowas rein, das kannst du dann auch groß ziehen. Meinetwegen an Nachbars Weiße Wand :-)

 
lindomatic:

Verrätst Du mir noch, wo Dein TradeHandling versteckt ist? Wo werden Stops gesetzt und nachgezogen?

Das hat er für DICH leer gelassen.

 
Christian:

Wie Otto schon erklärte sind die nicht komplett drin aber das geübte Auge erkennt die Teile davon :-)


Mach doch einfach noch mal ein Tutorial durch.

https://www.google.com/search?client=firefox-b-d&q=c+tutorial

Glaub mir auch, auch wenn vieles bekannt ist man lernt immer noch aus solchen etwas.

Oder zieh Dir auf YouTube sowas rein, das kannst du dann auch groß ziehen. Meinetwegen an Nachbars Weiße Wand :-)

ja, das ist wahr, selbst die Basics sind immer wieder neu..

 
Christian:

Das hat er für DICH leer gelassen.

ach so, Du meinst, das ist der Teil, den er von mir übernommen hat, ok =P

 
Otto Pauser:

Ich hab jetzt ein Grundgerüst für einen EA erstellt, so wie meine EAs funktionieren.

Alles modular und jeder Modul leicht austauschbar. Vor Allem ein Signalmodul!

Die Klassen CTradeExt und CSignal sollten auf alle Fälle ausgelagert werden.

Das Signal unbedingt als enum definieren. Stringfunktionen sind auch auf heutigen PC langsam, und switch kann man mit Strings auch nicht verwenden!

Da dreht der Tester nicht mehr durch;)

Ich häng da eine komplette TradeExt.mqh dran.

Hallo Otto, ich verstehe sehr vieles noch nicht, aber als nächstes will ich Deine Handhabe mit der enum SIGNAL verstehen:
Du deklarierst die enum SIGNAL mit den drei Werten/Konstanten SIG_NONE, SIG_BUY und SIG_SELL.
In Deiner Klassendeklaration von CSIGNAL kommt dann:

SIGNAL Signal(void)
     {
      if((PriceInfo[1].close < bufferSMA[1]) && (PriceInfo[0].close > bufferSMA[0]))
            return(SIG_BUY);

      if((PriceInfo[1].close > bufferSMA[1]) && (PriceInfo[0].close < bufferSMA[0]))
            return(SIG_SELL);

      return(SIG_NONE);
     }

Was ist das und wie funktioniert es? Ist SIGNAL die enum? Was ist Signal(void)? Wird hier eine Funktion erstellt, die eine der drei enum-Konstanten zurückgibt?
Wird vom Typ SIGNAL, der als enum definiert ist, ein Wert abhängig der Bedingungen in der Funktion Signal(void) zurückgegeben? Ist das so richtig verstanden und formuliert?
Wie kann ich den return-value im Strategietester abfragen/überprüfen? Ich bekomme bei allem, was mir einfällt, einen "Unknown identifier" oder "Expression could not be evaluated" (Signal, SIGNAL, Signal(), Signal.SIG_SELL, SIGNAL(SIG_SELL),...)
.. finde das auch nirgends in der Doku und würde das hier erwarten: https://www.mql5.com/en/docs/basis/types/integer/enumeration

Dank & VG, Christian

Documentation on MQL5: Language Basics / Data Types / Integer Types / Enumerations
Documentation on MQL5: Language Basics / Data Types / Integer Types / Enumerations
  • www.mql5.com
After the enumeration is declared, a new integer-valued 4-byte data type appears. Declaration of the new data type allows the compiler to strictly control types of passed parameters, because enumeration introduces new named constants. In the above example, the January named constant has the value of 0, February - 1, December - 11. : If a...