記事"Net FrameworkとC#に基づくエキスパートアドバイザーと指標のためのグラフィカルインターフェイスの開発"についてのディスカッション

 

新しい記事 Net FrameworkとC#に基づくエキスパートアドバイザーと指標のためのグラフィカルインターフェイスの開発 はパブリッシュされました:

本稿では、Visual Studioを使用してグラフィカルウィンドウを作成してからエキスパートアドバイザーのMQLコードに統合する簡単で迅速な方法を紹介します。専門家ではないユーザを対象としており、C#および.NETテクノロジに関する知識は必要ありません。

MetaTrader 5ストラテジーテスターには、MQL GUI開発者が考慮すべきいくつかの特徴があります。主な特徴は、OnChartEventグラフィックイベント処理関数がまったく呼び出されないことです。グラフィック形式はリアルタイムでユーザーと作業することを含むため、これは論理的です。ただし、テスターに​​特定の種類のパネルを実装することは非常に興味深いでしょう。これらはいわゆる取引プレーヤーで、ユーザは自分のトレーディング戦略を手動でテストできます。たとえば、ユーザは[Buy]ボタンと[Sell]ボタンをクリックすると、ストラテジーテスターは現在の市場価格を早送りで生成し履歴の取引操作をシミュレートします。私たちが開発したTradePanelはまさにこのタイプのパネルです。その単純さにもかかわらず、それは最も必要な機能を備えた平易な取引プレーヤーであるかもしれません。 

しかし、MetaTrader 5ストラテジーテスターでパネルがどのように機能するかを考えてみましょう。TradePanelのグラフィカルウィンドウは、独立したネットアセンブリとして存在します。したがって、それは現在のMetaTrader 5環境あるいはターミナル自体にも依存しません。厳密に言えば、他のプログラムから実行することもできますが、ユーザー自身でもexeコンテナにあるアセンブリを起動できます。

したがって、私たちのプログラムはOnChartEventを呼び出す必要はありません。さらに、ストラテジーテスターで定期的に起動される任意のイベント処理機能で、ウィンドウ内のデータを更新し、ユーザーから新しい注文を受け取ることができます。OnTickとOnTimerはそのような関数です。パネルはそれらを通して動作します。したがって、リアルタイム操作用に設計されていますが、このパネルはストラテジーテスターでもうまく機能します。変更は必要ありません。テスターでパネルを起動し、いくつかの取引を実行して、これを確認しましょう。

作者: Vasiliy Sokolov

 

この写真

を見れば、ビジュアル・トレードをするときに、バランス/エクイティ・チャートを見るために何をしなければならないかがよくわかるよ。


ZY 各ウィンドウの右上にある2つのボタンは何ですか?

 
fxsaber:

この写真では

を見ると、ビジュアル・トレードをするときに、バランス・チャート/エクイティ・チャートを見るために何をしなければならないかがよくわかる。

モニターを2つ持っている人にとっては、実際とても便利だ。私は2台持っているが、写真のためにこのレイアウトにせざるを得なかった。

fxsaberさん

各ウィンドウの右上にある2つのボタンは何ですか?

2つのモニターで便利に作業するための追加ユーティリティです。この場合、gifにはないはずですが、すべてを見ることはできません。

 
Найдите скомпилированный файл MtGuiController.dll в папке MtGuiController\bin\debug и скопируйте его в каталог библиотек MetaTrader 5
これはデバッグ版ではないのか?
 
最初の行は、открытым статическим методам класса, располагающимся в MtGuiController.dll への呼び出しが使われることをコンパイラーに伝えている。このアセンブリでは、どのメソッドを呼び出すかを指定する必要はない。コンパイラーは自動モードでこの作業をしてくれます。
エディター・モードでこれらのメソッドのリストを得ることはできますか?
 

良い記事ですが、なぜか私はレベルが初心者向けではないと思います!

ZY: ボタン付きフォームで、サードパーティのDLL(GuiController.dll )がなくても、VS2017のツールを使って、文字通り2クリックでボタン付きフォームを作成できます。

最初のウィンドウ「クラスライブラリ」に、グラフィカルなフォームを開始するコードを数行で書きます:

using System;
using System.Threading; 
public class MainForm
    {
        static Form1 mainform;
        static Thread threadmainform;
        
public static void Init()
        {
            if (mainform == null)
            {
                threadmainform = new Thread(NewForm);
                threadmainform.Start();
            }
        }

public static void DeInit(int reason)
		{
            if (reason == 3 || reason == 5) return;
            if (mainform!=null) {mainform.Close(); Thread.Sleep(1000);}
			if(threadmainform!=null) threadmainform.Join();
			mainform=null;
			threadmainform=null;
		}

private static void NewForm()   {   mainform = new Form1();   mainform.ShowDialog();   }
}

VS2017でこの10行をコンパイルすると、MT5でグラフィカルなフォームを作成し(フォームに追加されるすべての要素は「クリック可能」になります)、それを削除できます(DeInit() )。

MT4では、すべてがはるかに悲しいですが、まだ.Netで書かれたdllを実行させることができます。


 

githubからの例をありがとう。同じ原理はMT5でも可能でしょうか?

#include <Include.mqh> // 共有プロジェクトのパス

MEがパスにコメントを指定してmqhファイルを自動的に同期する場合?

 

記事をありがとう!全てが噛み砕かれています。C#のガッツリしたところだけは読んでませんでした。でも、本当に知らなくてもフォームは作れるんですね。


アプリケーションについて

  • アプリケーションからは、可視化モードでなくても、単一パスの実行を停止することができる。例えば、OnTesterでループされたMO-learningが実行されているとします。フォームを使えば、適切と思われる時に停止させることができて便利です。
  • C#用の本格的な取引APIを書くのは非常に簡単であることがよくわかる。そして、すべてのExpert AdvisorをC#で書き、Terminal/Testerで実行します。そして、このAPIに基づいて、例えばカスタムスキンを持つ代替ターミナルを作成することができます。一般ユーザー向けのアプリケーションには大きなチャンスがあります。ティックチャート、テスターなど、ユーザーの要望を集めて実装することができます。
  • ビジュアライザーでの手動取引に 加え、EAにパネルを簡単に組み込むことが可能です。これにより、アルゴ・アドバイザーにとってストレスのかかる状況(注文の削除、自分の注文の発注など)をエミュレートすることができます。しかし、さらに嬉しいのは、すべての手動アクションを簡単に記録し、フォームなしで、それに応じて、ボタンを押すことなく再生できることです。これは、手動介入の安定性のためにデバッグモードでEAをデバッグすることができます。


このようなフォーム・アドバイザーが複数実行された場合、相互作用はどのように機能するのでしょうか?

 
fxsaber:

githubからの例をありがとう。同じ原理はMT5でも可能ですか?

#include <Include.mqh> // 共有プロジェクトのパス

パスのコメントに従ってMEが自動的にmqh-ファイルを同期する場合ですか?

あなたが説明したことは、MEにとって非常に興味深くクールな機能かもしれませんが、もちろんそのようには動作しません。

しかし、MQL4とMQL5はGitHubが直接サポートしています

また、主にGit Bashという ユーティリティがあり、VisualStudioが持っているものとそれ以上のことができます。これらはMQLプロジェクトで完璧に機能する。本全体がgithubの助けを借りて書かれて いるとしたら、何と言うべきか。

実際、githubでのMQLプロジェクトの開発は長い間、高いレベルでサポートされてきた。

 
Vasiliy Sokolov:

あなたが説明したことは、MEにとって非常に興味深くクールな機能かもしれないが、もちろんそのようには機能しない。

しかし、MQL4とMQL5はGitHubによって直接サポートされています

また、主にGit Bashという ユーティリティがあり、VisualStudioが持っているものとそれ以上のことができます。これらはMQLプロジェクトで完璧に機能する。本全体がgithubの助けを借りて書かれて いるとしたら、何と言うべきか。

実際、githubでのMQLプロジェクトの開発は長い間、高いレベルでサポートされてきた。

残念ながら、私のようなオタクにとっては暗い森でしかない。あなたの記事はgithubのクールなアプリケーションを示している。おそらくその能力の1%しかないでしょうが、便利だと思います。

MQL5でどのように役立つのかは、リンク先を見てもよくわかりません。おそらくプログラマーにとっては必需品なのだろうが、私のようにプログラミングからほど遠い人間もいる。

MQL5でこのトピックに関する記事があれば、役に立つと思う。

 
fxsaber:

記事をありがとう!全てが噛み砕かれています。C#のガッツリしたところだけは読んでませんでした。でも、本当に知らなくてもフォームは作れるんですね。

アプリケーションの感想

  • 1) 視覚化モードでなくても、アプリケーションから単一パスの実行を停止することができる。例えば、ループしたMO-learningがOnTesterで実行されているとします。フォームを使えば、適切と思われる時に停止させることができて便利です。
  • 2) C#用の本格的なトレーディングAPIを書くのは非常に簡単であることがよくわかります。そして、すべてのExpert AdvisorをC#で書き、Terminal/Testerで実行します。そして、このAPIに基づいて、例えばカスタムスキンを持つ代替ターミナルを作成することができます。一般ユーザー向けのアプリケーションには大きなチャンスがあります。ティックチャートやテスターなど、ユーザーの要望を集めて実装することができます。
  • 3) Visualiserでの手動取引に加え、パネルをEAに簡単に組み込むことができます。これにより、アルゴ・アドバイザーにとってストレスのかかる状況(注文の削除、自分の注文の発注など)をエミュレートすることができます。しかし、さらに快適なのは、すべての手動アクションを簡単に記録し、フォームなしで、それに応じて、ボタンを押すことなく再生できることです。これにより、手動介入を安定させるためにデバッグモードでEAをデバッグすることができます。

4) このようなフォームアドバイザーを複数実行した場合、インタラクションはどのように機能しますか?

1) もちろんです。外部アプリケーション・チップを使えば、これらすべてのことが可能です。

2) 確かに書くことは可能です。しかし、取引環境全体をC#に詰め込むのはよくありません。純粋なMQLでExpert Advisorを書く方が良いですが、c#で必要な「トリミング」を装備することは可能です。

3) はい、可能です。

4) 様々な設定が可能です。フォームの名前と、そのフォームがあるアセンブリを指定する必要があります。つまり、1つ、2つ、5つのフォームを実行できます。制限はありません。