Errori, bug, domande - pagina 2585

 
Nikolai Semko:

Dove e a che punto si cancella la maniglia dell'indicatore?

Non appena non è più necessario. E prima di OnDeinit.

 
fxsaber:

Non appena non era più necessario. E prima di OnDeinit.

Questo è il punto, appena non serve più, lo cancello. Come posso dire a un programma che viene rimosso se OnDeinit non funziona?

 
Nikolai Semko:

Questo è il punto, appena non serve più, lo cancello. Come può un programma sapere che viene rimosso se OnDeinit non funziona?

Dammi il compito vero e proprio.

 
fxsaber:

Il vero compito è dirmi il vero compito.

Il vero problema è stato facilmente risolto evitando semplicemente di ottenere il proprio manico, dato che non c'è bisogno del proprio manico:

Total = ChartIndicatorsTotal(0,0);
for (int i=0; i<Total; i++) 
  {
      string name=ChartIndicatorName(0,0,i);
      if (name!=MQLInfoString(MQL_PROGRAM_NAME)) 
         handle[i] = ChartIndicatorGet(0,0,name);
  }

Sto solo pensando: e se avessi bisogno del mio manico...

ci sono stati tali problemi, ma non li ricordo

 
Nikolai Semko:

Stavo pensando: e se tu avessi bisogno di un manico tutto tuo...

C'erano questi compiti, ma non li ricordo.

Init_Sync ha una tale necessità.

 
Roman:

palo 25786

Con il metodo della randomizzazione, ho definito una normale copia nella stringa di mql, una stringa di tipo const wchar_t*.
Con questo parametro nella funzione memcpy, mql ha iniziato a ricevere anche le stringhe, e senza perdite.

memcpy( out, data, wcslen(data) * (sizeof(char)*3) );

Cioè, invece di 2 byte sizeof(wchar_t), ha usato 3 byte.
La stringa mql ha iniziato a prendere correttamente un puntatore alla stringa const wchar_t *.
Va bene?

Ma è interessante notare che la stringa letterale auto-descritta viene correttamente passata con sizeof(wchar_t).
 
Roman:

A caso, ho definito la normale copia della stringa di mql, una stringa di tipo const wchar_t*
Con tale parametro nella funzione memcpy, mql ha iniziato a ricevere anche stringhe, e senza perdite.

Cioè, invece di 2 byte sizeof(wchar_t), ha usato 3 byte.
La stringa mql ha iniziato a prendere correttamente un puntatore alla stringa const wchar_t*
È normale?

Ma è interessante notare che la stringa letterale auto-scritta viene correttamente passata con sizeof(wchar_t).

Perché si usa memcpy invece del normale wcscpy?

 
Ilyas:

Perché usare memcpy invece del normale wcscpy?

memcpy è stato usato come mostrato nell'articolo di esempiodi Renate.
L'uso di altre funzioni di copia causa gli stessi problemi.
Il comportamento con queste funzioni è descritto in questo post e inquesto
Sono state provate tutte le possibili funzioni di copia.

 
Non riesco a leggere 100000 barre M15 EURUSD da qualsiasi data nel tester (metaquot demo hedge server)


void OnInit()
  {
    datetime first_date;
   SeriesInfoInteger(_Symbol,_Period,SERIES_FIRSTDATE,first_date);
   int bars=Bars(_Symbol,_Period);
   Print("First date ",first_date," - ",bars," bars");
   
   datetime time[];
   CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time);
   Print("rows=",100000," =? ",ArraySize(time));
   Print("Load data from ",D'2015.01.01'," =? ",time[0]," to ",time[ArraySize(time)-1],", rows=",100000," =? ",ArraySize(time));
//---

  }
 
void OnTick(){


}

legge circa 37.000 bar. Quando viene eseguito nel terminale legge tutte le 100000 barre.


Provato ad aggiungere il codice di paginazione dal server a https://www.mql5.com/ru/docs/series/timeseries_access#synchronized

Ma non cambia nulla.

Come leggere queste 100000 barre nel tester?

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
elibrarius:

Come si calcolano queste 100.000 barre?

Cominciate a leggere l'articolo https://www.mql5.com/ru/articles/239

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...