Errori, bug, domande - pagina 2148

 
Andrey Khatimlianskii:

È confermato?

No, certo che no. Tutto ciò che è scritto qui è una conclusione indipendente.

Ricordo che Renat o Slava hanno detto che gli indicatori non vengono duplicati, anche se eseguiti manualmente. L'hash dei parametri corrisponde - viene usata la stessa parte di calcolo.

Questo non è vero. E soprattutto, non poteva nemmeno essere vero.

Esegui questo indicatore manualmente su due grafici identici

int OnCalculate( const int, const int, const int, const double &[] )
{
  Print(ChartID());
  
  return(0);
}

Se le parti di calcolo fossero le stesse, non ci sarebbero repliche diverse. Penso che il 90% delle conclusioni espresse siano corrette.

 
Nexxtor:

Aiuto autori, o lingua MQL5, a seconda di chi ha le mani fuori dal ***, siete così fastidiosi!!!

IndicatorCreate() dice:

parametri_cnt

[in] Numero di parametri passati nell'array parameters_array[]. Gli elementi dell'array hanno un tipo speciale di strutturaMqlParam. Il valore predefinito è zero - i parametri non vengono passati. Se viene specificato un numero non nullo di parametri, il parametroparameters_array è obbligatorio. Si possono passare fino a 256 parametri.


Mi dica, ha controllato personalmente? Che l'indicatore con 256 parametri sarà chiamato?


Aggiustalo!!!

Non corre? Mostrami il codice che non gira.

E per favore, meno emozioni e più affari.

 
fxsaber:

Non è vero. E soprattutto, non poteva nemmeno essere vero.

Esegui questo indicatore manualmente su due grafici identici

Se le parti calcolate fossero le stesse, non ci sarebbe una stampa diversa.

Una conclusione molto difficile per me.

Perché gli indicatori dovrebbero vedere lo stesso grafico? Perché un algoritmo di indicatori può essere costruito sulla base diChartID?

 
fxsaber:

Gli EA su OBJ_CHART certamente non funzionano (o meglio, non funzionano). Quindi, in base al timer, sembra essere OK. Forse tutti gli eventi non funzionano lì.

Gli Expert Advisors su OBJ_CHART partono e funzionano bene. Gestiscono solo OnChartEvent (personalizzato) e possono generare i loro eventi personalizzati per altri grafici.

 
Andrey Khatimlianskii:

Perché gli indicatori dovrebbero vedere lo stesso grafico?

Gli indicatori iCustom non hanno un proprio grafico. Anche se aggiunto a qualche grafico.

Perché un algoritmo di indicatori può essere costruito sulla base di ChartID?

Sì, le funzioni grafiche e gli eventi applicati al loro grafico (indicatori manuali/template) possono essere utilizzati per qualsiasi azione.

 

Errore nella documentazione

ChartNavigate

Sposta il grafico specificato del numero di barre specificato rispetto alla posizione del grafico specificata.

bool  ChartNavigate(
   long  chart_id,     // идентификатор графика
   int   position,     // позиция
   int   shift=0       // значение сдвига
   );

Parametri

chart_id

[ID grafico. 0 significa il grafico corrente.

posizione

[in] Posizione del grafico rispetto alla quale il grafico sarà spostato. Il valore può essere uno dei valori di enumENUM_CHART_POSITION.

 
Andrey Barinov:

Gli Expert Advisors su OBJ_CHART girano e funzionano bene. Gestiscono solo OnChartEvent (personalizzato) e possono generare i propri eventi personalizzati per altri grafici.

Controllato. Expert\Test.mq5

class CUSTOM
{
public:  
  CUSTOM()
  {
    Print(__FUNCSIG__);
    
    Print(EventSetTimer(1) && EventChartCustom(0, 0, 0, 0, NULL) &&
          MarketBookAdd(_Symbol) && 
          ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, true) &&
          ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true) &&
          ChartNavigate(0, CHART_BEGIN, 100) &&
          ObjectCreate(0, __FILE__, OBJ_VLINE, 0, 0, 0) &&
          ObjectDelete(0, __FILE__));
    
  }
  ~CUSTOM() { Print(__FUNCSIG__); }
};

const CUSTOM InitDeinit;

void OnTick() { Print(__FUNCSIG__); }
void OnInit() { Print(__FUNCSIG__); }
void OnDeinit( const int ) { Print(__FUNCSIG__); }
void OnChartEvent( const int id, const long&, const double&, const string& ) { Print(__FUNCSIG__ + " " + (string)id) ; }
void OnTimer() { Print(__FUNCSIG__); }
void OnBookEvent( const string& ) { Print(__FUNCSIG__); }


Script

#include <fxsaber\Expert.mqh>  // https://www.mql5.com/ru/code/19003

void OnStart()
{
  if (ObjectCreate(0, __FILE__, OBJ_CHART, 0, 0, 0))
  {
    MqlParam Params[1];
    Params[0].string_value = "Experts\\Test.ex5";

    Print(EXPERT::Run(ObjectGetInteger(0, __FILE__, OBJPROP_CHART_ID), Params));
  }
}


Risultato

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)        void CUSTOM::CUSTOM()
Test (EURUSD,M1)        true
Test (EURUSD,M1)        void OnInit()
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 1000
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnDeinit(const int)
Test (EURUSD,M1)        void CUSTOM::~CUSTOM()


Conclusione sui consulenti esperti su OBJ_CHART

  • Funzionerà OnInit, OnDeinit, costruttore/distruttore globale e OnChartEvent.
  • OnTimer, OnTick e OnBookEvent non funzionano.
  • Solo CHARTEVENT_CHART_CHANGE e gli eventi personalizzati vengono catturati.
  • Attraverso OnChartEvent+EventChartCustom EA può creare "eventi" per OnTimer e OnTick, ma non OnBookEvent.
 
In glucotrader 5 la #proprietà tester_file non funziona correttamente quando viene specificato FILE_COMMON, il file non si apre sull'agente
 
Anton Ohmat:
In glucotrader 5 la #proprietà tester_file non funziona correttamente quando viene specificato FILE_COMMON, il file non viene aperto sull'agente

Bene, il file non è preso dalla cartella Common (comune per Terminal e Agenti locali), ma da Sandbox.

 
fxsaber:

Beh, non dalla cartella Common (comune per Terminal e Agenti locali), ma da Sandbox.

Lo provo sui miei server remoti - non funziona. Eseguire è possibile solo se la macchina locale nella directory MT lie files, COMMON sull'ottimizzazione non va


file tester

stringa

Nome del file per il tester, specificando l'estensione, racchiuso tra doppi apici (come una stringa costante). Il file specificato verrà passato al tester per il lavoro. I file di input per i test, se necessario, dovrebbero sempre essere specificati