Errori, bug, domande - pagina 1853

 
Комбинатор:

Non può cosa? Scrivere così?

Struct[(int)0]

Sì, non si può scrivere così. A maggior ragione - Struct[(MqlTick)0]


Forum sul trading, sistemi di trading automatico e tester di strategie

Nuova versione di MetaTrader 5 build 1570: Miglioramento del Market Watch ed estensione delle funzioni Template in MQL5

MetaQuotes Software Corp., 2017.03.22 16:31

  1. MQL5: è stata aggiunta la possibilità di specializzazione esplicita delle funzioni template. A tal fine, i parametri di digitazione devono essere specificati prima dell'elenco dei parametri di chiamata:
    template<typename T>
    T Func() { return (T)0; }
      
      
    void OnInit()
      {
       Func<double>();   // явная специализация шаблонной функции
      }
    Così, la specializzazione non avviene attraverso parametri di chiamata, ma specificando esplicitamente i tipi.
 
C è un bel linguaggio di programmazione. Ma molte persone programmano con gli occhi chiusi:
 

Così, la specializzazione non avviene attraverso parametri di chiamata, ma attraverso l'indicazione diretta dei tipi.

Tipi di cosa, signore? Qual è il tipo di struttura che state violentando?

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

Che tipo di struttura violentate?

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

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

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

Risultato

Basta studiare i tipi di dati.
 
Алексей Тарабанов:
Basta studiare i tipi di dati.
Avere un senso dell'umorismo - ha spuntato la casella.
 
fxsaber:
Avere un senso dell'umorismo - ha spuntato la casella.

Grazie
 
Renat Fatkhullin:

Il compito è già stato impostato per cambiare questa strategia e portare i dati non più in profondità di 500 barre dalla data più lontana della richiesta. Questo permetterà una scrittura indolore degli screeners di mercato.

1. sarà possibile cambiare questa profondità?

2. dove in MT5 sono regolati i limiti della storia caricata?

 
Ho letto il Tutorial for Dummies. Ho un algoritmo, ma non posso prescriverlo correttamente.
Quindi l'idea è che accedo all'insieme di dati delle ultime 86 candele, tranne 0. Ogni candela bianca è 1, ogni candela nera è 0. Se il prezzo di chiusura di 1 candela è uguale alprezzo di apertura di 1 candela, allora guarda il prezzo di chiusura di 2 candele e se è superiore al prezzo di apertura di 1 candela, allora metti 0. Se il prezzo di chiusura di 2 candele è uguale al prezzo di apertura di 1 candela, allora per lo stesso principio, confronta il prezzo di apertura di 2 candele con il prezzo di chiusura di 2 candele.
Il ciclo funziona ogni 15 minuti o 60
 
È un bug nel linguaggio o una caratteristica non documentata?
struct STRUCT
{
  void operator =( STRUCT& ) { Print(__FUNCSIG__); }
};

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

L'operatore non viene chiamato, anche se lo si rende un operatore template!