Strukturregeln. Lernen, wie man Programme strukturiert, Erforschung von Möglichkeiten, Fehlern, Lösungen usw. - Seite 16

 
Wie zu erwarten, hat jeder seine eigene Struktur und Vorstellung davon, wie die Dinge sein sollten. ))
 
tol64:
Wie zu erwarten, hat jeder seine eigene Struktur und Vorstellung davon, wie die Dinge sein sollten. ))
Genau, deshalb schlage ich vor, diese Diskussion aufzugeben, da wir ohnehin zu keinem Konsens kommen werden. Ich schlage vor, dass wir uns wieder mit den allgemeinen Grundsätzen der Programmierung großer Projekte befassen.
 
C-4:
Nein, nein und nochmals nein!!!!!!!!!!!!!!!! Nach dieser Logik ist eine einfache Strategie, die auf einem gleitenden Durchschnitt basiert, ebenfalls MM. Warum, es war +1 Vertrag und wurde -1.

:)

Mein Kollege hat versucht, Ihnen zu erklären, wie der EA bequem strukturiert werden kann (die Modulnamen sind natürlich konventionell). Anstatt mit der Terminologie zu spielen (was nicht wichtig ist), versuchen Sie, diese strukturelle Aufteilung zu überprüfen. Sie ist recht bequem und produktiv.

Abbildung: Die Pfeile zeigen die Bewegung der Informationen:


 
C-4:
Genau, deshalb schlage ich vor, dass wir aufhören, darüber zu streiten, denn wir werden sowieso nicht zu einem Konsens kommen. Ich schlage vor, dass wir uns wieder mit den allgemeinen Grundsätzen der Programmierung großer Projekte befassen.
Es scheint, dass einer dieser Grundsätze diskutiert wird, wenn er auf Handelsprojekte angewendet wird (auf die grundlegende Logik ihrer Erstellung).
 
MetaDriver:

...

Kartinko. Die Pfeile zeigen die Bewegung der Informationen:

Das ist eine viel klarere Art, Gedanken zu betrachten. Auch ohne Worte ist alles klar. Ansonsten ist dieses endlose Bla-bla-bla manchmal schwer zu verdauen. )) Und nach dem Schema können Sie qualifizierte Fragen stellen. Ich habe sie noch nicht. ))

 
MetaDriver:

:)

Mein Kollege hat versucht, Ihnen zu erklären, wie der EA bequem strukturiert werden kann (die Modulnamen sind natürlich konventionell). Anstatt mit der Terminologie zu spielen (was nicht wichtig ist), versuchen Sie, diese strukturelle Aufteilung zu überprüfen. Sie ist recht bequem und produktiv.

Die Pfeile zeigen die Bewegung der Informationen:

Ja, das kann ich sehen. Nur die Komplexität ist nirgends gegeben, sondern wird an den Empfehlungskorrektor und den Markttreiber delegiert. Nach diesem Schema muss der Korrektor die Handelsgeschichte des TS durchforsten und herausfinden, wie sein tatsächlicher Zustand ist. Der Markttreiber muss immer noch die aktuelle Position der Strategie richtig erkennen und korrigieren, und das ist beim Netting nicht einfach.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика - Документация по MQL5
 
tol64:

Das ist eine viel klarere Sicht der Dinge. Auch ohne Worte ist alles klar. Ansonsten ist dieses endlose Bla-bla-bla manchmal schwer zu verdauen. )) Und nach dem Schema können Sie qualifizierte Fragen stellen. Ich habe sie noch nicht. ))

Hier ist die Antwort, ob Sie ein Bild zeichnen müssen, um die Aufgabe zu verstehen :)

MetaDriver:

:)

(Die Modulnamen sind natürlich relativ.) Anstatt mit der Terminologie zu spielen (was nicht wichtig ist), versuchen Sie, diese strukturelle Aufteilung zu überprüfen. Sie ist recht bequem und effizient.

Die Pfeile zeigen die Bewegung der Informationen:


Wo befindet sich das Schleppnetz? Ich nehme an, dass es im MM-Block ist, weil es einen Richtungsanzeiger braucht.

Oder ist es noch im Markttreiber? denn Sie brauchen die aktuelle Stellung zum Schleppen.

Ich würde einen Volatilitätsprädiktor und einen weiteren Block hinzufügen, um Schutzstopps zu korrigieren, und zwar Schutzstopps, weil (imho) der Ausstieg durch TP oder SL für einen normalen TS eine höhere Gewalt darstellt.

 
Urain:

Das ist die Antwort auf die Frage, ob man ein Bild zeichnen muss, um die Aufgabe zu verstehen :)

Wo ist das Schleppnetz? Ich glaube, es befindet sich im MM-Block, oder?

Immerhin wird die aktuelle Position für das Schleppnetz benötigt.

Ich würde einen Volatilitätsprädiktor und einen weiteren Block hinzufügen, um schützende Stopps zu korrigieren, genau schützend, weil (imho) ein Ausstieg durch TP oder SL für einen normalen TS höhere Gewalt ist.

Und dann noch ein paar Blöcke, und die Strategie kommt ins Wanken... Wenn es gleich zu Beginn absolut berechtigte Fragen gibt, in welchem Block ein Teil der Strategie zu beschreiben ist und in welchem der andere, dann bedeutet das, dass das Schema nicht eindeutig ist, und das führt zu den bekannten Problemen.
 

Da wir nun mit dem Zeichnen von Schaltplänen begonnen haben, hier mein verbessertes Modell. Ich hoffe, sie wird klarer sein als die vorherige:

BENEFITS

  • Es gibt nur zwei Module.
  • Links sind klar definiert und eindeutig
  • Jede Klasse, die 4 Methoden beschreibt, kann eine Handelsstrategie sein
  • Die Beschreibung aller Regeln wird immer an einem Ort gespeichert: der Handelsstrategieklasse. Es besteht keine Notwendigkeit, das gesamte Projekt nach einem "Unbeständigkeitsmodul" zu durchsuchen.
  • Die Anzahl der Strategiezustände ist eine Konstante. Nach den Regeln des TS kann er nicht größer sein. Es kann keine zusätzlichen Module geben und sie sind einfach unnötig
  • Alle gemeinsamen Einheiten können und müssen in der Basisklasse von control* beschrieben werden.

*Auf diese Weise kann die Regel "Ausstieg am Ende der Handelssitzung", die für alle Strategien gilt, in der Basisklasse beschrieben werden. Wenn diese Regel gesetzt ist, ruft die Basisklasse die Unterstützungsmethode zum Schließen der Position am Ende des Tages auf, anstatt sie noch einmal aufzurufen. Und die Position wird zum richtigen Zeitpunkt geschlossen, auch wenn dies in den Regeln der Basisstrategie nicht vorgesehen ist.
 
C-4:

Ja, das kann ich sehen. Nur die Komplexität ist nirgends vorgegeben, sondern wird an den Empfehlungsgeber und den Markttreiber delegiert.

Das ist in Ordnung. Das Ziel war nicht, objektive Schwierigkeiten zu beseitigen, sondern neue zu schaffen.


Nach diesem Schema muss der Einsteller die Handelsgeschichte des TS durchforsten und herausfinden, wie sein tatsächlicher Zustand ist.

Ich denke, wir haben bereits herausgefunden, dass TS keinen Zustand (Speicher) hat. Der Korrektor muss auch nicht in der Geschichte graben. Er wurde auf Ihre Bitte hin absichtlich in das Schema eingefügt - ich komme sehr gut ohne ihn zurecht... ))


Der Markttreiber muss immer noch die aktuelle Strategieposition richtig erkennen und anpassen, und das ist beim Netting nicht einfach.

:)

Muss ich Sie beim Wort nehmen?

double CMarketDriver::GetCurrentPos(string Sym)
  {
   if(!PosInfo.Select(Sym)) return 0; // DBL_MIN;
   double v=PosInfo.Volume();
   return(PosInfo.PositionType()==POSITION_TYPE_SELL) ? -v : v;
  }
bool CMarketDriver::Synhronize(const SymbolPos  &sp,int  &Err)
  {
   Err=0;
   bool res=true;
     {
      SymInfo.Name(sp.Sym);
      SymInfo.Refresh();
      double fp= TranslateLots(sp.Pos);  // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
      double cp=GetCurrentPos(sp.Sym);
      double pos=fp-cp;   // вычисляет разницу текущей и рекомендованной позы
      if(pos>0.000001)
         res=Trade.Buy(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"
      if(pos<-0.000001)
         res=Trade.Sell(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"   
     }
   return res;
  }