Mein Ansatz. Der Kern ist der Motor. - Seite 91

 
Реter Konow:

Eine weitere ernsthafte Frage.

Ich habe es nicht selbst ausprobiert, aber es gibt Zweifel an der Wirksamkeit des schnellen Austauschs über Ressourcen.

Schneller Austausch, - 16 Millisekunden hin und her auf einer konstanten Basis.

Wird das Laufwerk nicht überlastet?

Sie verfallen in die "Sünde der vorzeitigen Optimierung". :-)

Erstellen Sie eine Klasse (oder eine Reihe von Funktionen, wenn GSE Sie nicht anspricht) des Datenaustauschs - wenn in realen Projekten wird es lag, dann werden Sie über die Optionen zu denken. Und in der Zwischenzeit werden Sie noch ein halbes Jahr lang mit sinnlosen Tests beschäftigt sein.

PS: Haben Sie übrigens schon etwas unternommen, um das Projekt der Öffentlichkeit vorzustellen, oder kratzen Sie nur traditionell Ihr Ego im Forum :-)

 
Artyom Trishkin:

Der Kartenkommentar hat eine begrenzte Größe. Oder ist es nicht so? Ich bin sozusagen darüber gestolpert.

Ich denke, es gibt Grenzen. Ich selbst übergebe MqlTick-Ticks nur über Strings an EventChartCustom, da die Event-Queue die Reihenfolge der Ticks speichert. Das ist furchtbar praktisch.

 
Реter Konow:

Das heißt, Sie können ein Array von Strings in uint durch Union? übersetzen.

Ich weiß nicht mehr, wie es implementiert ist, aber ich kann nicht nur String-Arrays, sondern auch andere Datentypen in jeden Typ übersetzen (sogar in MqlTick). Der Code ist derselbe.

Und es ist schneller als die Verwendung vonStringToChar()?

Ich weiß es nicht. Versuchen Sie MqlTick zu String mit Ihrer Methode und dann über StringToChar zu uint. Und umgekehrt natürlich auch. Messen und vergleichen.

Wenn Sie können, geben Sie ein kleines und einfaches Beispiel. Ich kann mir keinen Reim auf Ihren Code machen.

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

void OnStart()
{    
  string Str[] = {"123", "Hello World!", "Peter Konow"};

  CONTAINER<uint> Container; // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)    
  Container[0] = Str;        // Записали в контейнер строковый массив
  
  CONTAINER<uint> Container2;                 // Создаем контейнер-получатель  
  ArrayCopy(Container2.Data, Container.Data); // Скопировали в него ТОЛЬКО содержимое uint массива

  string Str2[];
  Container2[0].Get(Str2); // Получили данные в исходном виде
  ArrayPrint(Str2);
}
 
fxsaber:

Ich denke, es gibt Grenzen. Ich selbst übergebe MqlTick-Ticks nur über Strings an EventChartCustom, da die Event-Queue die Reihenfolge der Ticks speichert. Das ist wirklich praktisch.

Wenn es um kleine Nachrichten (bis zu 64 Zeichen) und ständiges schnelles Hin- und Hergehen geht, gibt es mehrere praktische Optionen.

Und EventChartCustom ist nicht das beste, weil es in OnChartEvent() Ereignis-Warteschlange bekommt.

Wenn es jedoch um die schnelle Hin- und Herübertragung von mehr als 1000 Symbolen geht, führen EventChartCustom und die Ereigniswarteschlange zu Verzögerungen (z. B. beim Nachladen von Tabellen und bei der Verwendung von Animationen).

Der Schnelldurchlauf durch die Ressourcen ist fragwürdig.

Sagen Sie mir, es wird keine Diskette geladen?

 

Nach dem Schweigen zu urteilen, wird es das wahrscheinlich.

Bitte sehr, sehen Sie es sich an.)

 
Реter Konow:

Schnelle Übertragung über Ressourcen - in Frage.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Neue Version von MetaTrader 5 build 1930: Schwebende Diagrammfenster und .Net-Bibliotheken in MQL5

fxsaber, 2018.12.09 00:18

Dieses Beispiel läuft jetzt 15x schneller

1000000
Time[TestResource()] = 286646


Grob gesagt, läuft ein vollständiger Schreib-/Lese-Tick-Zyklus durch die Ressource mit 4 Millionen Ticks pro Sekunde.


Ein Wort noch: Belastet das nicht den Antrieb?

Der Datenträger wird nicht für den Ressourcenvorgang verwendet. Alles ist im Speicher.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2018.12.11 09:19

Überprüft, 60Mb werden sicher (MT4/5) in die Ressourcen geschrieben. Wenn es also eine Grenze gibt, dann ist sie höher.

 
fxsaber:


Das Laufwerk wird bei der Arbeit mit Ressourcen nicht verwendet. Alles ist im Speicher.

Ich danke Ihnen. Diese Option bleibt also bestehen.

 
fxsaber:


Das Laufwerk wird beim Umgang mit Ressourcen nicht verwendet. Alles ist im Speicher.

Was ist mit dem Prüfer? Sind die im Testgerät erstellten Ressourcen außerhalb des Testgeräts sichtbar? Und werden sie überhaupt im Prüfgerät erstellt?

ZS. ein Genosse hier, sagte, dass die Ressourcen - es ist unbekannt, ob sie in der Tester arbeiten.))
 
Реter Konow:

Was ist mit dem Prüfer? Sind die im Testgerät erstellten Ressourcen außerhalb des Testgeräts sichtbar?

Und werden sie überhaupt im Prüfgerät erstellt?

Ich habe nicht überprüft, ob die Ressourcen im Strategy Tester funktionieren. Wenn sie dort funktionieren, sind sie im MT4 sichtbar, weil der Tester im Terminal ist, aber nicht im MT5, weil der Tester nicht mit dem Terminal verbunden ist. Sie können dort Dateien nur über gemeinsame Dateien austauschen.


Als ich mir die obigen Informationen ansah, kam ich auf eine Art und Weise, ich stellte mir eine Frage und beantwortete sie, indem ich den Code überprüfte. Ich empfehle es.

 
fxsaber:

Ich habe nicht überprüft, ob die Ressourcen im Strategy Tester funktionieren. Wenn sie dort funktionieren, sind sie im MT4 sichtbar, da sich der Tester im Terminal befindet, aber nicht im MT5, da der Tester in keiner Weise mit dem Terminal verbunden ist. Dort ist nur ein Austausch über Common-Files möglich.

Verstehe. Ich muss es überprüfen. Ich werde es heute überprüfen.