Erreurs, bugs, questions - page 2585

 
fxsaber:

Dès qu'elle n'était plus nécessaire. Et avant OnDeinit.

C'est ça le truc, dès que je n'en ai plus besoin, je le supprime. Comment puis-je indiquer à un programme qu'il est supprimé si OnDeinit ne fonctionne pas ?

 
Nikolai Semko:

C'est ça le truc, dès que je n'en ai plus besoin, je le supprime. Comment un programme peut-il savoir qu'il a été supprimé si OnDeinit ne fonctionne pas ?

Donnez-moi la tâche réelle.

 
fxsaber:

La vraie tâche est de me dire quelle est la vraie tâche.

Le vrai problème a été facilement résolu en évitant simplement d'obtenir votre propre pseudo, car vous n'en avez pas besoin :

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);
  }

Je pense juste : et si j'ai besoin de ma propre poignée...

il y a eu de tels problèmes, mais je ne m'en souviens pas.

 
Nikolai Semko:

je pensais juste : et si vous aviez besoin de votre propre poignée...

Il y avait de telles tâches, mais je ne m'en souviens pas.

Init_Sync a un tel besoin.

 
Roman:

poste 25786

Par la méthode de randomisation, j'ai défini une copie normale dans la chaîne de mql, une chaîne de type const wchar_t*.
Avec ce paramètre dans la fonction memcpy, mql a commencé à recevoir des chaînes régulières, et sans fuites.

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

C'est-à-dire qu'au lieu d'utiliser 2 octets sizeof(wchar_t), il a utilisé 3 octets.
La chaîne mql a commencé à prendre correctement un pointeur sur la chaîne const wchar_t *.
C'est bon ?

Mais il est intéressant de noter que la chaîne littérale auto-décrite est correctement transmise avec sizeof(wchar_t).
 
Roman:

Au hasard, j'ai défini la copie normale à la chaîne mql, une chaîne de type const wchar_t*
Avec un tel paramètre dans la fonction memcpy, mql a commencé à recevoir des chaînes paires, et sans fuites.

C'est-à-dire qu'au lieu d'utiliser 2 octets sizeof(wchar_t), il a utilisé 3 octets.
La chaîne mql a commencé à prendre correctement un pointeur vers la chaîne const wchar_t*
Est-ce normal ?

Mais il est intéressant de noter que la chaîne littérale auto-écrite est correctement transmise avec sizeof(wchar_t).

Pourquoi memcpy est utilisé au lieu de wcscpy normal ?

 
Ilyas:

Pourquoi utiliser memcpy au lieu du wcscpy normal ?

memcpy a été utilisé comme indiqué dans l'article d'exemplede Renate.
L'utilisation d'autres fonctions de copie pose les mêmes problèmes.
Le comportement avec ces fonctions est décrit dans ce post et dansce
Toutes les fonctions de copie possibles ont été essayées.

 
Je ne peux pas lire 100000 barres M15 EURUSD à partir de n'importe quelle date dans le testeur (serveur de couverture metaquot demo).


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(){


}

lit environ 37 000 bars. Lorsqu'il est exécuté dans le terminal, il lit les 100 000 barres.


J'ai essayé d'ajouter le code de pagination du serveur à l'adresse https://www.mql5.com/ru/docs/series/timeseries_access#synchronized.

Mais rien ne change.

Comment lire ces 100000 barres dans le testeur ?

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

Comment calculez-vous ces 100 000 barres ?

Commencez par lire l'article https://www.mql5.com/ru/article s/239

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

Commencez par lire l'article https://www.mql5.com/ru/article s/239

Lisez-le. Mais je n'ai pas vu de réponse, pourquoi CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time) ; il lit 30k barres au lieu de 100k barres dans le testeur. En même temps, dans le terminal, il lit tout correctement.
Raison: