グラフィカルモードでMQLのGUIを作成する。

 

数年前、GUI制作のためのさまざまなライブラリが急速に発展し始めた頃、この話題を取り上げたことがあります。その後、多くのツールが作られましたが、その作り方は30年前のレベルのままでした(Win APIで手作業でインターフェイスを作り、苦しんだことを覚えている人はまだいるでしょうか)。もし、私の勘違いでこんなツールが登場したら、喜んでキックを受けて引き取りたいと思います。

-------

ここでは、VS 2017、C# Windows Formsの最もシンプルな例を紹介します。左側には、フォームにドラッグ&ドロップできるコントロールツールバーがあります。

パネル形

そして、この初歩的なフォームのために生成されるコードの一部を紹介します。

private void InitializeComponent()
        {
            this.btnDoSomething = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // btnDoSomething
            // 
            this.btnDoSomething.Location = new System.Drawing.Point(12, 12);
            this.btnDoSomething.Name = "btnDoSomething";
            this.btnDoSomething.Size = new System.Drawing.Size(100, 23);
            this.btnDoSomething.TabIndex = 0;
            this.btnDoSomething.Text = "Do something";
            this.btnDoSomething.UseCompatibleTextRendering = true;
            this.btnDoSomething.UseVisualStyleBackColor = true;
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(12, 53);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 20);
            this.textBox1.TabIndex = 1;
            this.textBox1.Text = "Hello MQL5!";
            this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6 F, 13 F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(133, 98);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.btnDoSomething);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        protected System.Windows.Forms.Button btnDoSomething;
        private System.Windows.Forms.TextBox textBox1;

そこで、このコードを解析して、このサイトで紹介されているライブラリのいずれかをベースにしたグラフィックスのコードを構築するプロジェクトを請け負うのは誰か、と考えています。

MQL5で食べて稼ぐ」のコーナーで、1年以上、著者名を伏せて記事を書いています。

55RegularExpressionsを使った MQL5ソースコードのリライトと自動修正。
関数、グローバル変数、定義、クラスなどの一覧の取得。

そして、なぜ誰もそれを取らないのか?なぜなら、誰もこのパースを必要としていないからです。市場には、10年以上にわたって磨かれ、改良され続けているDoxygenという素晴らしいプログラムがあります。そして、誰もその哀れなコピーを作ろうとは思わない(比較すれば確実に哀れなものになるだろう)。そして、最近、「ドキュメントの自動作成」というテーマで記事が出ました...。

だから

  1. すでにそのようなプロジェクトがあるのであれば
  2. このようなグラフィカルなインターフェース作りに興味を持つ人はいるのでしょうか?
すぐに「MQL5で食べて稼ぐ」ブランチに紛れてしまい、読んでくれる人が少ないので、あえて別のブランチを作りました。

 

METATRADERのGUIは、今のところ、そんな遠い存在なんです。パネル作成 用 - わかりました。でも、これ以上必要ないでしょう。

Visual」MetaEditorは良いアイデアだと思いますが。

 
Vladislav Andruschenko:

METATRADERのGUIは、今のところ、そんな遠い存在なんです。パネル作成用 - わかりました。でも、これ以上必要ないでしょう。

Visual」MetaEditorがあれば完璧だと思いますが。

なぜ何でもかんでも、特にMT-MQLを複雑にする必要があるのでしょうか?MQLは、イマドキ、すでに複雑化しすぎています。VSでパネルを作成し、必要なものは全てDLLなどで作成してもよい。MT-MQLでモンスターを作る必要はないのです))。

 
Yuriy Asaulenko:

特にMT-MQLは、なぜこんなに複雑にしているのですか?MQLは、イマドキ、すでに複雑化しすぎています。VSがあるので、そこでパネルや必要なものはすべてDLLで作成してもよいでしょう。MT-MQLをモンスター化する必要はない))。


私は空想しているだけです :-)(チャート・トレーディングシステムのVISUAL)、すでに多くのデザイナーがいることがわかる......。

正直なところ、最初のコマはPhotoshopで描いたんです。

今、ターミナルで直接描こうとしているのですが、使っている人が少ないことに気づきました。

また、カスタムパネルは個々に作るのが簡単です。

ライブラリの描画に関する記事を幅広く勉強してきましたが。しかし、これらのライブラリの利用は1%程度しか役に立たないと判断し、あきらめています。

 
Yuriy Asaulenko:

特にMT-MQLは、なぜこんなに複雑にしているのですか?MQLは、イマイチ、すでに複雑化しすぎている。VSがあるので、そこでパネルや必要なものはすべてDLLで作成してもよいでしょう。MT-MQLをモンスター化する必要はない))。

昔はそんな風にやっていたんです。以下は、マルチストラテジー(なんと!)EA用のシンプルなセットアップパネルの例です。でも、市場を切り捨てている!

そして、理解できないのは、MTがどう関係するのか?MQLでパーサースクリプトを作ることを提案しているだけです。C++/C#でやってもいいが、そうすると記事にもしてもらえない。

おっと、写真を忘れていました、簡単なものですが、こちらです。


 
Vladislav Andruschenko:


私は夢を見ているだけです :-)(チャート・トレーディングシステムのVISUAL)、すでに多くのデザイナーがいることがわかる......。

正直なところ、最初のコマはフォトショップで描いたのですが、まだ残っています...。

今、ターミナルで直接描こうとしているのですが、使っている人が少ないことに気づきました。

また、カスタムパネルは個々に作るのが簡単です。

ライブラリの描画に関する記事を幅広く勉強してきましたが。しかし、これらのライブラリの利用は1%しか役に立たないと判断し、あきらめました。

では、ライブラリは一切なしでやっているのですか?ちょうど、かなり複雑なパネルを作る仕事があって、何度も組み替えることになりそうな気がしています。

今のところ、VSでビジュアル化してから、自分の手を使ってコントロールの 座標と寸法を取得し、再び自分の手を使ってライブラリに変換することにしています。今のところ、アナトリー・カズルスキー氏のライブラリーに傾いています。コード→スタート→結果を紙に記録して修正→正しいコード...など、すべてが高速化されます。

 
Alexey Volchanskiy:

では、ライブラリは一切使わずにやっているのですか?ただ、ここでかなり複雑なパネルを作ることになり、何度も組み替えることになりそうな気がしています。

今のところ、VSで可視化した後、コントロールの座標と寸法を取得し、手作業でライブラリに変換することにしています。今のところ、アナトリー・カズルスキー氏のライブラリーに傾いています。コード→スタート→結果を紙に記録して修正→コード修正...などよりも、すべてが高速になります。

カザルスキー社のライブラリーを利用した方が良い。

でも、描画用のライブラリは持っていますよ。(もちろんカザルスキーと同じではありません :-))

ドローイングはめったに使わないので、無駄な時間を過ごす意味がない。


以前はphotoshopeで描き、次にDelphiで描き、そして座標に従って整理しました :-)。

今ならそんなことはしませんが、当時はMQLで初めてパネルを描きました(それまではDelphiでした)。

まだ触るのが怖いです :-) もちろんアップデートもしますし、コードももう10回くらい最適化しました。 でも、同じパネルを普通のボタンで描こうかなと思っています......。

しかし、長所と短所があります:通常のボタンが美しくない:テスターでKanvasが動作しない・・・・・・・。

 
Alexey Volchanskiy:

以前もそうでしたね。以下は、マルチストラテジー(オバン!)EA用のシンプルなセットアップパネルの例です。でも、市場を切り離すことになるのです

それとMTがどう関係するのか理解できないんだけど?MQLでパーサースクリプトを作ることを提案しているだけです。C++/C#でやってもいいが、そうすると記事にもしてもらえない。

おっと、写真を忘れていました、こちらです、簡単なものです。

Marketで使いたい場合は、それに対応する必要があります。MQLのみ。((

自分には必要ない、VSでは必要ない。

 
Yuriy Asaulenko:

マーケット向けなら、うん、バダバダ。MQLのみ。((

でも、自分にとっては必要ない。VSならすべてがシンプル です。

VSを使えばとても簡単で高速です。 そのパネルを共有ファイルアクセスで作ったこともありますが、問題なく高速に動きました。

も分からないし、さっさとVSで作って、幼稚な病気を解消してからMQLに翻訳した方がいいのかな?

しかし、このフォーラムでは、C#で私のパネルのブランチを作ることができないので。では、私はまた赤で仕事をし、このゴミに携わる必要があるのでしょうか?司会者の皆様、いかがでしょうか?C#で作成したパネルをプロジェクトの 一部として掲載してもよろしいでしょうか?

もちろん、MQL5の部分はブランチに、C#のコマはブログに掲載してもいいんですけどね。でも、なんだか奪われたような屈辱的な気分で、ブログの中に隠れるしかないような。

 
Alexey Volchanskiy:

VSを使えばとても簡単で、共有ファイル経由のアクセスで そのパネルも作りましたが、問題なく高速に動きました。

も分からないし、さっさとVSバリアントを作って、幼稚な病気を解消してからMQLに翻訳した方がいいのかも?

しかし、このフォーラムでは、C#で私のパネルのブランチを作ることができないので。では、私はまた赤で仕事をし、このゴミに携わる必要があるのでしょうか?司会者の皆様、いかがでしょうか?C#で作成したパネルをプロジェクトの一部として掲載してもよろしいでしょうか?

もちろん、MQL5の部分はブランチに、C#のコマはブログに掲載してもいいんですけどね。でも、なんだか奪われたような屈辱的な気分で、ブログの中に隠れるしかないような。

私はファイル共有がとても好きです。すべてがシンプルで、速く、使いやすいのです。RAM-DiskではDLLやギズモは一切不要で、1.5GBytes/秒以上です。全てに十分で、残りものも))。

そして、様々なDLLは、必要に応じて、後で自由に作ることができます。

 
Alexeiさん、C#でパネルを操作して、チャートウィンドウの中に表示させることは可能でしょうか?