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

 
fxsaber:

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

リンク先を見ても、それがMQL5でどのように役立つのか理解できません。おそらくプログラマーにとっては必需品なのでしょうが、私のようにプログラミングから遠い人間もいます。

このトピックに関するMQL5向けの記事があれば、役に立つだろう。

バージョン管理システム(githubに限らず、どんなものでも)は、とても非自明なものだ。それが何なのか、なぜ必要なのかを5分で説明することはできない。しかし、「リンクをコピーしてプロジェクトの 最新バージョンを取得する」機能は、そのようなシステムの機能の1つであり、実にクールだ。

 
Vasiliy Sokolov:

4) さまざまな方法でカスタマイズできる。フォームの名前と、そのフォームが配置されているアセンブリを指定する必要があります。つまり、1つ、2つ、5つのフォームを実行することができます。制限はありません。

例えば、同じExpert Advisorを2つ起動しますが、フォームは異なります。競合しませんか?

私の理解が正しければ、Expert Advisorごとに異なるGuiMT.exeを作成することをお勧めします。そうでしょうか?

 
Igor Makanu:

良い記事だが、なぜか初心者のレベルではないと思う。

これ以上簡単には説明できないと思う。正直なところ、私はベストを尽くした。作業員からの要望で、スタジオの設置方法まで詳しく説明した。

初心者がやるべきことは3つ:

  1. 必要なフォームを描く(Visual Studioで正確に描く)
  2. Expert Advisorでイベント処理 コードを作成する。
  3. GuiControllerを介してExpert Advisorとフォームをリンクする(正しいパスの指定、インポートの指定など)。

もしそれが難しいのであれば、よく言われるように、できることはすべてやったことになる。
 
fxsaber:

例えば、2つの同じEAを異なるフォームで動かしてみましょう。競合しないだろうか?

もし私の理解が正しければ、それぞれのEAに対して異なるGuiMT.exeを書くべきだと提案されています。そうでしょうか?

そうですね。考えてみます。

 
Igor Makanu:

HI: ボタン付きフォームで、サードパーティの dll ( GuiController.dll ) を使用しない場合、ユーザーは VS2017 ツールを使用してボタン付きフォームを作成できます。

C# に慣れていない場合は、残念ながらできません。スレッドを作成し、デリゲートを割り当て、それを実行する。そしてプログラムの他の部分で、必要なイベントをサブスクライブしている......。- すべてが "シンプル "なのだ。

私の重要なアイデアは、ユーザーがハンドラーコードを追加することなく、新しいプロジェクトを 描けるようにすることだった。

 
fxsaber:

例えば、2つの同じEAを異なるフォームで動かしてみましょう。競合しないだろうか?

もし私の理解が正しければ、それぞれのEAに対して異なるGuiMT.exeを書くべきだと提案されています。そうでしょうか?

要するに、そのような設定は衝突します。これを避けるには、ShowFormメソッドをオーバーロードします:

ShowForm(ulong magic, string assembly, string form_name);

このアイデアは、<form-expert>タイプの関係を反映した一意の同期番号をマジックに含めることです。要するに、すべては解決可能であり、拡張可能なのです。

 
Vasiliy Sokolov:

残念ながら、もしあなたがC#に精通していないのであれば、無理でしょう。スレッドを作成し、デリゲートを割り当て、それを実行する。プログラムの他の部分で、必要なイベントをサブスクライブしている......。- すべてが "単純 "だ。

私の重要なアイデアは、ユーザーがハンドラーコードを追加することなく、新しいプロジェクトを描けるようにすることでした。

あなたの言う通り、ユーザーがVS2017のフォームにグラフィカルな要素を スケッチし、VSで自分の作成したものを実行してチェックし、「すべてが回転している」ことを確認してから、.NetとMT5上でプログラムのインタラクションを作成することに移る方が簡単でしょう。

私は、MT4で.Netを動かすという少し違った目標を持っていたが、MT4では正しいマーシャリングを一度に実現するのは難しいので、まずMT5で.dllを作り、それをMT4に統合することになった。

あなたのやり方は、おそらくより実用的です。もう少ししたら、githubのプロジェクトに慣れてきます!

 
Igor Makanu:

あなたの言う通り、ユーザーはVS2017でグラフィカル要素をフォームにスケッチし、VSで作成したものを実行してテストし、「すべてが回転している」ことを確認してから、.NetとMT5でプログラムのインタラクションを作成する方が簡単 です。

その通りだ!だから、システムは3コンポーネントなのだ。そして、「分割統治」の原則が実行されているのです。

Igor Makanu:

MT4で.Netを動かすという、ちょっと違う目標があったのですが、MT4では正しいマーシャリングを一度に実現するのは難しいので、MT5で先に.dllを作り、それをMT4に統合するという形になりました。

これでもプロレベルです。もちろん、MT4はちょっと話が違いますが。

イゴール・マカヌ

あなたのやり方の方がより実用的でしょう。後でgithubのプロジェクトに慣れるつもりです!

フィードバックありがとうございます:))))

 
我々はピーターを待っている。私の提案した解決策に対する彼の "専門家の評価 "を見てみよう:)
 

ええ、いい記事なんですが、編集者が読んでいるかどうかはわかりません;-)。"Besides "は一緒に綴られているが、本文中の他の箇所では分けられている。他の記事と比べて、多少なりとも注意深く読んだので目に留まった。

実際、一方では良いことのように思える。しかし一方で、ビジュアル・フォーム・エディターのためだけにStudio関連のものをすべて引っ張り出すのは、ちょっと面倒です。Studioがすでにインストールされているのであれば問題ありません。

私ならデザイナーと一緒にMQLですべてを行います(アイデアはあるのですが、手が出ません)。そして、Studioを使い、DLLを使わずに、WPFフォームをデザイン し、MQLでXAMLを読むという中間的なオプションもあると思います。