Diskussion zum Artikel "Entwicklung eines Expertenberaters für mehrere Währungen (Teil 2): Übergang zu virtuellen Positionen von Handelsstrategien" - Seite 6

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Entwicklung eines Multicurrency Expert Advisors (Teil 2): Übergang zu Handelsstrategien für virtuelle Positionen"

fxsaber, 2024.02.12 17:33

Ihre Architektur ist etwas anders als meine

//+------------------------------------------------------------------+
//| Konstruktor|
//+------------------------------------------------------------------+
CSimpleVolumesStrategy::CSimpleVolumesStrategy( const string sInputs ) : CStrategy(sInputs)
{
   this.Input = sInputs;

   ArrayResize(m_orders, this.Input.maxCountOfOrders);

   // Laden Sie den Indikator, um Tick-Volumen zu erhalten
   iVolumesHandle = iVolumes(this.InputStrategy.symbol, this.InputStrategy.timeframe, VOLUME_TICK);

// Einstellen der Größe des Array-Empfängers von Tick-Volumes und der erforderlichen Adressierung
   ArrayResize(volumes, this.Input.signalPeriod);
   ArraySetAsSeries(volumes, true);
}

Ich verwende keine Eingaben aus der übergeordneten Klasse. Alle meine Eingänge sind privat und können daher denselben Namen haben. Das führt zu einer starken Universalisierung: der gleiche Code, der in einem gemeinsamen Makro versteckt ist. Aber so ist es bei mir.

 
Yuriy Bykov #:

Ich denke, dass dies auch nicht die endgültige Version ist, da Sie sich auf die Szenarien der Verwendung von Parametern im Code konzentriert haben, die bereits veröffentlicht wurden. Bei der Zusammenstellung von Parametern zu Sets und noch mehr bei der automatischen Zusammenstellung zu Sets werden Sie wahrscheinlich feststellen, dass Sie auch hier Verbesserungen/Vereinfachungen vornehmen können.

Sie haben Recht. Ich habe es so gemacht.
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
Es ist eine globale String-Variable, in die alle Eingabevariablen automatisch eingefügt (und erstellt) werden. D.h. egal welche Objekte erstellt werden, diese Variable ist immer Input.
 
fxsaber #:
Sie haben recht. Ich habe es so gemacht. Dies ist eine globale String-Variable, in die alle Eingabevariablen automatisch eingefügt (und erstellt) werden. Das heißt, egal, welche Objekte erstellt werden, diese Variable wird immer eingegeben.

Nur für den Fall, dass ich Sie daran erinnere, dass String-Eingaben durch den Optimierer um 63 Zeichen gekürzt werden.

 
Stanislav Korotky #:

Vorsichtshalber möchte ich Sie daran erinnern, dass der Optimierer bei der Eingabe von Zeichenketten 63 Zeichen abschneidet.

Ich danke Ihnen. Es handelt sich nicht um eine Eingabe, daher ist die Länge nicht begrenzt.

string inInputsAll = NULL;
 

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Entwicklung eines Multicurrency Expert Advisors (Teil 2): Übergang zu Handelsstrategien für virtuelle Positionen"

fxsaber, 2024.02.14 11:36 AM

Du hast recht. Habe es so gemacht.
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
Es handelt sich um eine globale String-Variable, in die alle Eingabevariablen automatisch eingefügt (und erstellt) werden. D.h. was auch immer an Objekten nicht erstellt wird, diese Variable wird immer in die Eingabe eingespeist.

Angehängt.

Dateien:
 

Hallo,

ich befinde mich auf einer steilen Lernkurve von OOP. Diese Follow-up zum vorherigen Artikel war sehr hilfreich.

Ich arbeite mich immer noch durch. Ich danke Ihnen.

 
Hallo, ich kann die Bildschirmfotos nicht sehen. Können Sie sie noch einmal anhängen?