Fehler, Irrtümer, Fragen - Seite 1853

 
Комбинатор:

Was kann ich nicht? Schreiben Sie es so auf?

Struct[(int)0]

Ja, so kann man das nicht schreiben. Umso mehr - Struct[(MqlTick)0]


Forum zum Thema Handel, automatische Handelssysteme und Strategietester

Neue Version von MetaTrader 5 build 1570: Verbesserung der Marktbeobachtung und Erweiterung der Vorlagenfunktionen in MQL5

MetaQuotes Software Corp., 2017.03.22 16:31

  1. MQL5: Die Möglichkeit der expliziten Spezialisierung von Template-Funktionen wurde hinzugefügt. Zu diesem Zweck müssen die Typisierungsparameter vor der Liste der Aufrufparameter angegeben werden:
    template<typename T>
    T Func() { return (T)0; }
      
      
    void OnInit()
      {
       Func<double>();   // явная специализация шаблонной функции
      }
    Die Spezialisierung erfolgt also nicht durch Aufrufparameter, sondern durch die explizite Angabe von Typen.
 
C ist eine coole Programmiersprache. Aber viele Leute programmieren mit zugekniffenen Augen(:
 

Die Spezialisierung erfolgt also nicht durch den Aufruf von Parametern, sondern durch die direkte Angabe von Typen.

Was für Typen, Sir? Welcher Art ist die Struktur, die Sie vergewaltigen?

 
Алексей Тарабанов:

Welche Art von Struktur vergewaltigen Sie?

struct STRUCT
{
  template <typename T>
  void operator []( int )
  {
    Print(__FUNCSIG__);
  }
};

void OnStart()
{
  STRUCT Struct;
  
  Struct.operator[]<int>(0);
  Struct.operator[]<MqlTick>(0);
}

Ergebnis
void STRUCT::operator[]<int>(int)
void STRUCT::operator[]<MqlTick>(int)
 
fxsaber:

Ergebnis

Studieren Sie einfach die Datentypen.
 
Алексей Тарабанов:
Studieren Sie einfach die Arten von Daten.
Einen Sinn für Humor zu haben - das war das Richtige.
 
fxsaber:
Einen Sinn für Humor zu haben - das war das Richtige.

Dankeschön
 
Renat Fatkhullin:

Die Aufgabe wurde bereits so gestellt, dass diese Strategie geändert wird und Daten nicht tiefer als 500 Balken vom entferntesten Datum der Anfrage abgerufen werden. Auf diese Weise können Sie mühelos ein Marktscreening erstellen.

1. Ist es möglich, diese Tiefe zu ändern?

2. Wo im MT5 sind die Grenzen der geladenen Historie geregelt?

 
Ich habe das Tutorial für Dummies gelesen. Ich habe einen Algorithmus, aber ich kann ihn nicht richtig vorschreiben.
Die Idee ist also, dass ich auf den Datensatz der letzten 86 Kerzen zugreife, außer 0. Jede weiße Kerze ist 1, jede schwarze Kerze ist 0. Wenn der Schlusskurs von 1 Kerze gleich demEröffnungskurs von 1 Kerze ist, dann schaue ich mir den Schlusskurs von 2 Kerzen an, und wenn er höher ist als der Eröffnungskurs von 1 Kerze, dann setze ich 0. Wenn der Schlusskurs von 2 Kerzen gleich dem Eröffnungskurs von 1 Kerze ist, dann vergleiche ich nach dem gleichen Prinzip den Eröffnungskurs von 2 Kerzen mit dem Schlusskurs von 2 Kerzen.
Die Schleife läuft alle 15 Minuten oder 60 Minuten.
 
Ist dies ein Fehler in der Sprache oder eine undokumentierte Funktion?
struct STRUCT
{
  void operator =( STRUCT& ) { Print(__FUNCSIG__); }
};

void OnStart()
{
  STRUCT Struct = {0};
  
  Struct = (STRUCT)Struct; // Пусто
  Struct = Struct;         // void STRUCT::operator=(STRUCT&)
}

Der Operator wird nicht aufgerufen, auch wenn Sie ihn zu einem Template-Operator machen!