Fehler, Irrtümer, Fragen - Seite 2585

 
Nikolai Semko:

Wo und an welcher Stelle löschen Sie den Indikatorgriff?

Sobald es nicht mehr benötigt wird. Und vor OnDeinit.

 
fxsaber:

Sobald sie nicht mehr benötigt wurde. Und vor OnDeinit.

Das ist es ja, sobald ich es nicht mehr brauche, lösche ich es. Wie kann ich einem Programm mitteilen, dass es entfernt wird, wenn OnDeinit nicht funktioniert?

 
Nikolai Semko:

Das ist es ja, sobald ich es nicht mehr brauche, lösche ich es. Wie kann ein Programm wissen, dass es entfernt wird, wenn OnDeinit nicht funktioniert?

Geben Sie mir die eigentliche Aufgabe.

 
fxsaber:

Das eigentliche Problem ist, mir das eigentliche Problem zu nennen.

Das eigentliche Problem konnte leicht gelöst werden, indem man einfach darauf verzichtete, sich ein eigenes Handle zuzulegen, denn man braucht kein eigenes Handle:

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

Ich dachte nur: Was ist, wenn man einen eigenen Griff braucht...

es gab solche Probleme, aber ich kann mich nicht daran erinnern

 
Nikolai Semko:

Ich denke nur: Was ist, wenn man einen eigenen Griff braucht...

Es gab solche Aufgaben, aber ich erinnere mich nicht mehr daran.

Init_Sync hat einen solchen Bedarf.

 
Roman:

Beitrag 25786

Mit der Randomisierungsmethode habe ich ein normales Kopieren in den String von mql definiert, einen String vom Typ const wchar_t*.
Mit diesem Parameter in der Funktion memcpy begann mql, gleichmäßige Strings zu empfangen, und zwar ohne Lecks.

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

Das heißt, statt 2 Bytes sizeof(wchar_t) wurden 3 Bytes verwendet.
Der mql-String begann korrekt einen Zeiger auf die const wchar_t * string zu nehmen.
Ist das in Ordnung?

Aber interessanterweise wird die selbst beschriebene Zeichenkette korrekt mit sizeof(wchar_t) übergeben.
 
Roman:

Zufällig definierte ich normales Kopieren zu mql string, eine Zeichenkette des Typs const wchar_t*
Mit einem solchen Parameter in der Funktion memcpy begann mql, sogar Zeichenketten zu empfangen, und ohne Lecks.

Das heißt, statt 2 Bytes sizeof(wchar_t) wurden 3 Bytes verwendet.
Der mql-String begann, einen Zeiger auf die const wchar_t* string
korrekt zu übernehmen. Ist das normal?

Aber interessanterweise wird die selbstgeschriebene Zeichenkette korrekt mit sizeof(wchar_t) übergeben.

Warum wird memcpy statt des normalen wcscpy verwendet?

 
Ilyas:

Warum memcpy anstelle des normalen wcscpy verwenden?

memcpy wurde wie imBeispielartikel von Renate gezeigt verwendet.
Die Verwendung anderer Kopierfunktionen führt zu den gleichen Problemen.
Das Verhalten mit diesen Funktionen wird in diesem Beitrag und indiesem Beitrag beschrieben
Es wurden alle möglichen Kopierfunktionen ausprobiert.

 
Ich kann nicht lesen 100000 Bars M15 EURUSD von jedem Datum in der 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(){


}

beträgt etwa 37.000 bar. Bei der Ausführung im Terminal werden alle 100000 Balken angezeigt.


Ich habe versucht, den Auslagerungscode vom Server unter https://www.mql5.com/ru/docs/series/timeseries_access#synchronized hinzuzufügen.

Aber es ändert sich nichts.

Wie kann man diese 100000 Balken im Prüfgerät ablesen?

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

Wie berechnen Sie diese 100.000 Balken?

Lesen Sie zunächst den Artikel https://www.mql5.com/ru/articles/239

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