在图形模式下为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中的吃与赚 "栏目中写了一篇文章,没有写作者的名字,已经一年多了。

55使用RegularExpressions 对MQL5源代码进行重写和自动修改。
获得函数、全局变量、定义、类等的列表。

为什么没有人接受呢?因为没有人需要这种解析。市场上有一个出色的程序Doxygen,它被打磨和改进了10多年。而且没有人对试图创造一个可怜的副本感兴趣(相比之下,这肯定会很可怜)。最近还出了一篇关于自动创建文档 的文章...

所以。

  1. 如果已经有了这样一个项目。
  2. 谁会对这样的图形界面创作感兴趣?
我故意做了一个单独的分支,因为它很快就会在 "MQL5中的吃和赚 "分支中消失,而且没有多少人读它。

 

METATRADER的GUI是如此遥远的可能性,目前。对于创建面板--好吧。但你不需要任何更多。

虽然我同意你的观点--"可视化 "的MetaEditor将是一个好主意。

 
Vladislav Andruschenko:

METATRADER的GUI是如此遥远的可能性,目前。对于创建面板--好吧。但你不需要任何更多。

虽然我同意你的观点--"可视化 "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),很明显,有许多设计师已经....。

说实话,我用Photoshop画了我的第一幅画,现在还在......。

现在我想直接在终端上画画,但我意识到只有少数人使用它。

而且定制面板更容易单独制作。

虽然我已经广泛研究了关于绘制图书馆的文章。但决定这些库的使用只对1%的人有用,我放弃了。

所以你没有任何图书馆?我刚刚接到一个任务,要做一个相当复杂的面板,我觉得它将会被重新配置很多次。

到目前为止,我已经决定在VS中做一个可视化,然后用我的手去获得控件的 坐标和尺寸,然后再次用我的手把它们翻译成库。目前,我倾向于阿纳托利-卡兹斯基的图书馆,他在那里做了一个怪物般的工作。一切都会比代码-->开始-->纠正,结果记录在纸上-->纠正代码......等更快。

 
Alexey Volchanskiy:

所以你根本不需要任何图书馆就能做到这一点?就在这里,我有一个任务,要做一个相当复杂的面板,而且,我觉得,它将被重新配置许多次。

到目前为止,我决定在VS中做一个可视化,然后检索控件的坐标和尺寸,用手把它们翻译成一个库。目前,我倾向于阿纳托利-卡兹斯基的图书馆,他在那里做了一个怪物般的工作。所有这些都会比代码-->开始-->纠正,结果记录在纸上-->纠正代码......等更快。

最好使用卡扎斯基的图书馆。

但是,是的,我有用于绘图的库。它们是标准的。(当然与卡扎斯基的不一样 :-))

我很少使用绘画,所以没有必要在这上面浪费时间。


我以前用photoshope画,后来用Delphi画,然后根据坐标来组织:-)

我现在不会这样做,但当时我在MQL中画了我的第一个面板(之前是用Delphi)。

我还是不敢碰它:-)我当然会更新它,而且我已经优化了10次代码。 但我在考虑用普通的按钮来画同一个面板......。

但有优点也有缺点:普通的按钮不好看:Kanvas在测试器中不工作...............。

 
Alexey Volchanskiy:

这是我以前做过的。下面是一个多策略(哦,砰!)EA的简单设置面板的例子。但它确实切断了市场!

而且我不明白MT与此有什么关系?我只是建议在MQL中制作一个解析器脚本。你可以用C++/C#来做,但那样他们甚至不会把它带到文章中去。

哎呀,忘了照片,在这里,一个简单的照片。

如果你想在市场中使用它,你将不得不面对它。只有MQL。((

你自己不需要它,你和VS也不需要它。

 
Yuriy Asaulenko:

如果是为了市场,是的,巴达巴达。只有MQL。((

而对你自己来说,你不需要它,有了VS,一切都很简单

我甚至做了那个共享文件访问的面板,它工作得很好,速度也很快。

我都不知道,也许我应该用VS快速创建一个,在消除了幼稚的疾病之后,再把它翻译成MQL?

但由于我无法在这个论坛上用C#为我的面板创建一个分支。那么,我将不得不再次从事红色工作,并需要从事这种垃圾工作?亲爱的版主们,你们怎么看?我可以把C#中的面板作为项目的 一部分发布吗?

当然,我可以把MQL5部分发布在一个分支中,把C#面板发布在博客中。但这是一种羞辱,好像我被剥夺了这种权利,不得不躲在博客里。

 
Alexey Volchanskiy:

使用VS非常简单和快速,我甚至做了那个通过共享文件访问的 面板 它工作得很好很快速。

我甚至不知道,也许我应该快速创建一个VS变体,在消除了幼稚的疾病后,将其翻译成MQL?

但由于我无法在这个论坛上用C#为我的面板创建一个分支。那么,我将不得不再次从事红色工作,并需要从事这种垃圾工作?亲爱的版主们,你们怎么看?我可以把C#中的面板作为项目的一部分发布吗?

当然,我可以把MQL5部分发布在一个分支中,把C#面板发布在博客中。但这是一种羞辱,好像我被剥夺了这种权利,不得不躲在博客里。

我非常喜欢文件共享--一切都很简单、快速和容易使用。使用RAM-Disk,我根本不需要任何DLL或小工具,它>1.5GBytes/秒。足够满足一切需求,甚至还有剩饭))。

而且,如果有必要,各种DLLs都可以在以后的闲暇时间制作。

 
阿列克谢,是否可以用C#来处理你的面板,使其显示在图表窗口内?
原因: