0

私はMetaTrader Terminalソフトウェアのエキスパートアドバイザーから始めており、それで使用するアルゴリズムがたくさんあります。これらのアルゴリズムはMATLAB、強力な組み込み関数 ( svdpinv、 などfft) を使用して開発されました。私のアルゴリズムをテストするには、いくつかの選択肢があります。

  1. にすべてのアルゴリズムを記述しMQL5ます。
  2. C++and でアルゴリズムを記述し、DLLで呼び出す to を作成しますMQL5
  3. Pythonに埋め込むアルゴリズムをに記述しC、 を作成しDLLます。
  4. MATLABソース コードを に変換してからCDLL.

問題について:

  1. 組み込みMQL5関数がないため実用的ではないため、1つずつ手動で実装する必要があります。
  2. 私はまだこれを試していませんが、アルゴリズムを実装するには長い時間がかかると思います (いくつかのアルゴリズムを書きましCたが、時間がかかり、結果は のように速くはありませんでしたMATLAB)。
  3. にコンパイルするときに多くのエラーが発生しますが、実行可能ファイルにコンパイルするとエラーは発生しません (変換は非常に簡単で高速なDLLので、これは良い代替手段です)。MATLABpython
  4. 私は今これを試みていますが、やるべきことはたくさんあると思います。

他の同様のソフトウェアについて調査しMetaTrader Terminalましたが、良いものは見つかりませんでした。

MQL5私の問題に何らかの方法で、または別の方法で他の言語を埋め込む最も簡単な(そして迅速な)方法があるかどうかを知りたいです。

ありがとう。

4

1 に答える 1

1

はい、代替手段があります... 5 ) Go Distributed :

FX取引の外部定量モデルで高速で複雑な数学に非コードを使用する同様の動機を持って、異種分散処理システムの相互接続された形式でと環境のMQL4両方を使用し始めました。{ MATLAB | python | ... }MetaTrader Terminal

MQL4部分は次のことを担当します。

  1. anAsyncFxMarketEventFLOW処理
  2. aZmqInteractionFRAMEWORKメッセージパターン処理へのセットアップと参加
  3. anFxTradeManagementPOLICY処理
  4. anFxTradeDetectorPolicyREQUESTOR分析RQST-s をリモート AI/ML-predictor に送信する
  5. anFxTradeEntryPolicyEXECUTORリモートノード指示時の処理

{ MATLAB | python | ... }部分は次のことを担当します。

  1. aZmqInteractionFRAMEWORKメッセージパターン処理へのセットアップと参加

  2. anFxTradeDetectorPolicyPROCESSOR受信と処理の分析RQST-s からリモート{ MQL4 | ... }-リクエスタ

  3. anFxTradeEntryPolicyREQUESTORトレードエントリーリクエストをリモート{ MQL4 | other-platform | ... }マーケットインターフェースノードに送信する

分散型の考え方を始める理由

MATLABコアの利点は、およびその他の COTS パッケージの長所を再利用できることですAI/ML。いまだ忍び寄るMQL4インターフェース オプションをリバース エンジニアリングする必要はありません (そうです、ここ数年で、DLL インターフェースには新しい更新によるいくつかのダーティ ヒットがありました (strings は停止しました)。文字列になり、構造体(!!!)などになり始めました-メンテナンス中のコードベースで何年にもわたる苦痛があるため、避けるべき忘れられない経験があります...)。

次の利点は、障害回復力を追加できるようになることです。分散システムは、( 1 + N ) 保護されたシェーディングで機能します。

次の利点は、パフォーマンスを上げることができるようになることです。分散システムは、プロセッサのプールを提供できます。これは、{ SEQ | PAR }操作のモード (パイプライン プロセスまたは並列形式のプロセス実行) で行われます。


MATLABノードが参加するだけです:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MATLAB script to setup 

zeromq-matlab
clear all;
if ~ispc
    s1 = zmq( 'subscribe', 'ipc', 'MATLAB' );   %% using IPC transport on <localhost>
else
    disp( '0MQ IPC not supported on Windows.' )
    disp( 'Setup TCP transport class instead' )
    disp( 'Setting up TCP')                     %% using TCP transport on <localhost>
    s1 = zmq( 'subscribe', 'tcp', 'localhost', 5555 );
end

recv_data1 = [];                                %% setup RECV buffer

とはいえ、それぞれの長所を維持し、すでに実装されているネイティブで高性能に調整されたライブラリの重複を避けることができます。また、運用の分散モードにより、運用方法にいくつかの新しい潜在的な利点が追加されますExpert Advisor

  • リモート キーボード インターフェースを EA オートメーションに追加し、いくつかのカスタム固有のコマンドを使用することができます ( CLI)
  • 高速でノンブロッキングの分散リモート ロギング
  • GPU / GPU グリッド コンピューティングが内部から使用されているMetaTrader Terminal
  • プログラミング モデルの拡張に関する他の投稿を確認したい場合がありますMetaTrader Terminal

通信フレームワーク上の分散システム:

MATLABZeroMQMetaTrader TerminalAustin CONRAD のラッパーのおかげで (ただし、サービスは魅力のように機能する必要がありMQHましたが、DLL にインターフェイスしています) 、通信フレームワークの利用可能なポートが既にあります。ノードのタイプは、真の異種分散システムに設計できる任意の形式でver 2.1.11、それぞれの役割に参加する準備ができています。

ここに画像の説明を入力

私の最近の R&D では、python-side プロセス のいくつかのインスタンスを使用して、それぞれの-codeによる -s のいくつかのインスタンスから、多くの+ +スケーラブルなフォーマル コミュニケーション パターンで積極的に使用される、 AI/ML-predictorr/KBDr/RealTimeANALYSERおよび集中型サービスを操作します。r/LOGPUSH/PULLXREQ/XREPPUB/SUBMetaTrader TerminalMQL4

MATLAB関数は同じ方法で再利用できます。

于 2016-08-01T18:36:37.757 に答える