Was sollte zur zusätzlichen Unterstützung von universellen mathematischen Berechnungen in MQL5 und MQL5 Cloud Network hinzugefügt werden?

 

Nicht jeder weiß, dass der MetaTrader 5-Tester nicht nur Handelsstrategien testen, sondern auch eine ganze Klasse von universellen Problemen lösen kann. Zu diesem Zweck gibt es einen speziellen Modus "Mathematische Berechnungen", der die Datenlieferung des Marktumfelds deaktiviert, was die Menge der übertragenen Daten erheblich reduziert.

Derzeit haben wir eine Reihe von wichtigen Funktionen für den Aufbau eines universellen Berechnungsnetzes implementiert:

  • Betriebsart "Mathematische Berechnung", um das Marktumfeld zu deaktivieren.
  • Übermittlung von Ausgangsdaten durch Anhängen der #Eigenschaft tester_file "my_file.dat", die es uns ermöglicht, Ausgangsdaten beliebiger Größe zu verarbeiten und die Ergebnisse zurückzugeben.
  • Übermittlung von Quelldaten in Form von #Ressourcenanhängen.
  • Berechnungsservermodus auf dem Terminal und Übertragung von Datenfeldern von Agenten in Form von Frames. Agenten können beliebige Daten über FrameAdd an das Terminal zurückgeben, während der Serverteil desselben Expert Advisors auf der Terminalseite in einem separaten Fenster gestartet wird, um Ergebnisse über OnTesterPass-Eingabepunkte mit Datenextraktion über FrameXXX-Funktionen zu empfangen. Die gewonnenen Daten können auf der Terminalseite aufgezeichnet, in einer Tabelle visualisiert usw. werden. Mehr dazu erfahren Sie im Thema"Echtzeitsteuerung von Optimierungsprozessen und Übertragung von Massendaten aus den Agenten im MetaTrader 5".
  • Betrieb von lokalen und entfernten Agenten (ohne MQL5 Cloud Network) mit einem separaten Server unter Verwendung der named pipes.
  • Anmietung eines großen Netzes von Agenten, um die Berechnungen zu beschleunigen.
  • Erstellen Sie Ihre eigene Berechnungsfarm in Ihrem Netzwerk auf entfernten Agenten.

Natürlich wird dies begleitet von: der Sicherheit von MQL5, seiner Geschwindigkeit, dem genetischen Enumerator, etc.

Daraus ergibt sich die Frage: Welche weiteren Funktionen sollten einbezogen werden, um die Fähigkeiten des Computernetzwerks zu verbessern?

 
Renat:

Daher die Frage: Welche anderen Funktionen sollten aktiviert werden, um die Fähigkeiten des Berechnungsnetzes zu verbessern?

Erlauben Sie die Verwendung von OpenCL im Modus "mathematisches Rechnen" in der Cloud.
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 
TheXpert:
Ermöglicht die Verwendung von OpenCL im Modus "mathematisches Rechnen" in der Cloud.

Dies wurde bereits mehrfach diskutiert - aufgrund der Funktionsweise der Windows-Treiber ist dies architektonisch unmöglich. Solange die Berechnungsfunktionen ein geschützter Teil der Videotreiber sind, gibt es keine Lösung. Selbst wenn Sie sich über Remote Desktop mit Windows verbinden, haben Sie derzeit keinen Zugriff auf OpenCL.

Sobald die Grafikkartenhersteller die Berechnungsfunktionen auf eine eigene, von den Grafiktreibern unabhängige Schnittstelle verlagern, wäre die Freude groß. Bislang geht nur Nvidia Tesla in diese Richtung.

 
In der FunktionOnTesterInit()

Hinzufügen der Übertragung von Rohdaten an den Agenten, nicht als angehängte Ressource, sondern als ein Array von Daten, die im Verlauf der Optimierung erzeugt werden.

Ungefähr:

void OnTesterInit()
  {
   // здесь формируем массив данных (например ArrayPass[])
   // и передаем сформированный массив агенту для расчетов
   return(ArrayPass);
  }

.

...

Ich bitte Sie.

 
Und wer muss diese Daten übermitteln und wie genau?

Es sind die technischen Details, wer, was und wie, die von Interesse sind.
 
Renat:
1. Wer und wie genau soll diese Daten übermitteln?

2. Es sind die technischen Details, wer, was und wie, die von Interesse sind.

1. Die Übertragung sollte natürlich durch den Benutzer erfolgen, wie ich oben vorgeschlagen habe -"Ungefähr so:", Sie wissen es am besten.

2. Wer wer ist und wie, kann ich nicht beschreiben)

Wozu sind die Agenten da? - Um Probleme zu lösen.

Welche Aufgaben lösen wir? - Ich weiß es nicht, Hauptsache, sie lösen sie.

Für die Lösung dieser Aufgaben benötigen wir Input und Output.

Der Output ist klar, aber der Input ist unklar.

Vielleicht habe ich etwas übersehen? Wie übergebe ich die Eingabedaten (die auf der Grundlage früherer Ausgabedaten berechnet wurden) an den Agenten?

 
her.human:

1. Es sollte natürlich vom Benutzer übermittelt werden, wie ich oben vorgeschlagen habe -"Ungefähr so:", Sie wissen es am besten.

2. Wer wer ist und wie, kann ich nicht beschreiben)

Der Punkt ist, dass wir genau technisch ausgearbeitete Vorschläge in mindestens 2 Schritten benötigen. "Ich weiß nicht, was und wie" ist nicht gut genug.

 
her.human:

Übergabe der Eingabedaten (berechnet aus früheren Ausgabedaten) an den Agenten

Diese Frage wurde bereits gestellt. Die Kontrolle des Optimierungsfortschritts wäre manchmal sehr hilfreich.

Bei näherer Betrachtung ergeben sich jedoch eine Reihe von Fragen (es sei denn, die Optimierung erfolgt für einen einzelnen lokalen Agenten).

 
Renat:

Es geht darum, dass wir technisch fundierte Vorschläge in mindestens zwei Schritten brauchen. "Ich weiß nicht, was und wie" ist nicht gut genug.

Sie sollten es so formulieren: "Vorschläge werden in Form von Aufgabenbeschreibungen angenommen", sonst wird es als "wir hören uns Ideen an" aufgefasst.
 
Komposter, nicht so kategorisch, aber immer noch ein bisschen technischer.

Wir denken dabei an eine unabhängige Kommunikation zwischen Agenten ohne Terminal. So könnte beispielsweise einer der Agenten die Ausgangsdaten generieren und sie per Fordcast an die anderen senden.
 
Renat:
Wir unsererseits denken über eine unabhängige Kommunikation zwischen Agenten ohne Beteiligung des Terminals nach. So kann beispielsweise einer der Agenten erste Daten generieren und diese per Fordcast an die anderen senden.

Es ist ein bisschen anders. Ich wollte den Verlauf der Optimierung kontrollieren.

Das heißt, dass im Laufe der Optimierung Parametersätze erstellt und an die Agenten zur Ausführung gesendet werden.

Natürlich wird es eine Menge Fragen geben. Ich bin nicht bereit, sie zu beantworten.