記事「MQL5クックブック - サービス」についてのディスカッション

 

新しい記事「MQL5クックブック - サービス」はパブリッシュされました:

この記事では、チャートへの結合を必要としないMQL5プログラムである「サービス」の多彩な機能について説明しています。また、他のMQL5プログラムとのサービスの違いをハイライトし、開発者がサービスで作業する際の微妙な違いを強調しています。例として、読者にはサービスとして実装できる幅広い機能をカバーするさまざまなタスクが提供されます。

次のタスクに直面していると想像してみましょう。ターミナルには、現在取引されている銘柄、つまりポジションを特徴とする銘柄のチャートが表示されます。

チャートを開くためのルールは非常にシンプルです。銘柄の1つにポジションがある場合は、この銘柄のチャートを開きます。ポジションがない場合、チャートは開かれません。1つの銘柄に複数のポジションがある場合、1つのチャートのみが開かれます。

色もいくつか追加しましょう。チャートの背景色は、ポジションが利益を出している場合は水色になり、損失の場合は薄ピンクになります。ゼロ利益ではラベンダー色を使用します。



作者: Denis Kirichenko

 
EAリソースからサービスを作成する機能が必要。
 
Anatoli Kazharski #:
EAリソースからサービスを作成する機能が必要。

+1

 

興味深い記事でした!

このような質問ですが、どのシンボルでポジションを建てた/注文を変更 したという事実について、迅速に情報を得ることは可能ですか?

現在のポジションと仮想ポジションのデータベースを作成する必要があります - それは、1つのシンボルで多くのExpert Advisorが動作するときにネットワーキングのために必要です。

それとも各EAにコードを埋め込む方が良いのでしょうか?

 
Aleksey Vyazmikin ポジションをオープン/変更 した事実について、迅速に情報を得ることは可能ですか?

多くのExpert Advisorが1つのシンボルで動作する場合、現在のポジションと仮想ポジションのデータベースを作成する必要があります。

それとも、各EAにコードを埋め込む方が良いのでしょうか?

アレクセイ、それはうまくいきません。結局のところ、サービスはスクリプトのようなもので、唯一の違いはターミナル起動と同時に起動することです。

ターミナルを起動すると、サービスが飛び出してきて、動いて、下に行く......。

もちろん、無限ループで実行することもできるが、どの程度の効果があるかは、自分で判断してほしい。

 
Alexey Viktorov #:

アレクセイ、うまくいかないよ。結局のところ、このサービスはスクリプトのようなもので、ターミナル起動と同時に起動するという違いだけなんだ。

ターミナルを立ち上げると、サービスが飛び出してきて、動いて、一番下に行く......。

もちろん、無限ループで実行することもできるが、どの程度の効果があるかは、自分で判断してほしい・・・。

一方では、OnTrade()が欠けている。一方では、サービスが単に注文を要約し、許可された操作をデータベースに書き込むだけなら、うまくいくかもしれない。しかし、ここでも同期の問題が関係してくる。遅延が重要でなく、バーのオープンで動作するストラテジーの場合、そうするのが現実的だと思われます。サービスを通じて取引することは可能ですか?特に制限はないと思います。それなら、エキスパートから注文を受け取り、それらを集約し、指定された頻度で独立して取引することが可能です。

 
Aleksey Vyazmikin ポジションをオープン/変更 した事実について、迅速に情報を得ることは可能ですか?

多くのExpert Advisorが1つのシンボルで動作する場合、現在のポジションと仮想ポジションのデータベースを作成する必要があります。

それとも、各EAにコードを埋め込む方が良いのでしょうか?

アレクセイ、ご意見ありがとう!

良い質問ですね。ここでは、すべての長所と短所を比較検討する必要があります。一方では、私の同僚であるアレクセイ・ヴィクトロフが 指摘したように、そのようなタスクのサービスは無限ループで起動する必要があります。しかし一方で、サービスはバックグラウンドで動作し、データベース自体から書き込み/読み込みを行う。各ロボットにデータベースを操作する機能を追加する場合、同期の衝突が発生する可能性があることを理解する必要がある。ミューテックスのようなものが、おそらくここで役立つでしょう。

また、EAは取引イベントを即座に処理できますが、サービスはできません。

 
Aleksey Vyazmikin ポジションをオープン/変更 した事実について、迅速に情報を得ることは可能ですか?

多くのExpert Advisorが1つのシンボルで動作する場合、現在のポジションと仮想ポジションのデータベースを作成する必要があります。

それとも、各EAにコードを埋め込む方が良いのでしょうか?

各ロボットは仮想ポジションを考慮します。原則的に、ロボットは実際のポジションを知りません。MMの唯一の問題はロットの定義ですが、私はパラメータで固定ロットを設定しています。固定ロットに代わる唯一の方法は、各ロボットに保証金の何パーセントかを割り当てることです。

 
また、KMKのサービスにはOnTimer、OnTrade、OnTradeTransactionといった イベント処理がありません。OnDeinitは、ターミナルを閉じるときの定期的な停止にも役立つだろう。
 
Denis Kirichenko #:

アレクセイ、ご意見ありがとう!

いい質問だね。ここでは、すべての長所と短所を天秤にかける必要がある。一方では、私の同僚Alexey Viktorovが 指摘したように、そのようなタスクのサービスは無限ループで起動されるべきです。しかし一方で、サービスはバックグラウンドで動作し、データベース自体から書き込み/読み込みを行う。各ロボットにデータベースを操作する機能を追加する場合、同期の衝突が起こる可能性があることを理解する必要がある。ミューテックスのようなものがあれば、おそらく役立つでしょう。

また、EAは取引イベントを即座に処理できますが、サービスはできません。

SQLiteはトランザクション・キューの扱い方を知らないのですか?私はこの問題を扱ったことはありませんが、あなたは記事を書いています。)

ベースの各セクション(別のテーブル)に書き込むことができますし、各アドバイザーが独自のベースを作成することもできます。

もちろん、問題は遅延ですが、一方でそれは節約されたスプレッドによって補われます。

 
JRandomTrader #:

私の場合、各ロボットは自分で仮想位置を考慮する。原則的に、ロボットは現実のポジションを知りません。MMの唯一の問題はロットの定義ですが、私はパラメータで固定ロットを設定しています。固定ロットに代わる唯一の方法は、各ロボットに保証金の何パーセントかを割り当てることです。

異なるロジックを持つExpert Advisorのバスケットを作成できるように、私は普遍的でありたいと思っています。もしExpert Advisorがそれ自体で沸騰しているのであれば、そうです - それは少し簡単です - 私はそれを自分でやりましたが、実験的に - ファイル/データベースにデータを保存せずに。