我的方法。核心是引擎。 - 页 80

 
Александр:

你的帖子是否应该被看作是参与执行的申请?

我也在看这个主题,但你似乎没有仔细阅读我之前的帖子。

如果通过自由职业者,请这样做。预算是什么?在哪一点上,你觉得我是在不专心地阅读?

 
Dmitry Fedoseev:

如果通过自由职业者,请这样做。预算是多少?在什么时候你认为我没有仔细阅读?

我将避免建议自由职业者。

在这里我就不注意了。

关于交易、自动交易系统和策略测试的论坛

我的方法。核心 - 发动机。

亚历山大, 2018.12.16 16:12

我在MQL和一般编程方面的技能相当有限。....

......如果有一种方法可以加快结果,而又不至于太深入,为什么不利用它呢?

 

EA在引擎窗口中绘制的自定义动画的例子。

EA中的控制代码。

void OnTimer()
  { 
   static int q1,a,b; 
   //------------------------------------
   if(!a)LOAD_CANVAS_Last_10_bars(); 
   //---------------------------------
   if(!b) q1++;
   if(q1 == 200)b = 1;
   if(b)q1--;
   if(!q1)b = 0;  
   //------------- 
   ELLIPSE(q1,q1,q1+q1*2,q1+q1,clrBlue);          
   //------------------------------------
  }

在引擎的绘图块中添加了CCanvas类 的14个绘图函数。这些功能是由专家顾问调用的。为此,在文件Connection_Properties.mqh中加入了绘图函数包装函数。

你可以画圆、长方形、三角形、拱形、椭圆和直线。

在调用绘图函数之前,我们必须指定它们将在哪个画布上绘图(例如,LOAD_CANVAS_Last_10_bars();)。

该技术仍处于原始状态。一旦我调试好了,我就会发布准备好的例子。

 
Александр:

下午好。

我试图创建一个工具栏,用于控制我自己生产的交易功能的开/关,并相应地调整一些参数。

在专家顾问的代码中实现面板时,由于策略测试器中没有ChartEvent事件,我面临无法启用/禁用面板的问题。

或者在指标代码中实施面板的情况下,不可能打开订单。

在此讨论: https://www.mql5.com/ru/forum/294890

彼得向我提出帮助我开发面板,我无法拒绝。

所以面板看起来像这样

或者像这样,当所有按钮都被按下时。

每个按钮下都有它的参数,可以通过上/下箭头或编辑栏来改变。

对于 "Now "按钮 ,其值是.Locking(false); ,对于所有其他按钮.Locking(true)。

对于 "尾随 "按钮,添加另一个参数(开关),值为全部/每个。

此外,我们必须在面板中添加一个下拉列表,选择时间框架,并在一个窗口中显示当前符号的未平仓订单列表,显示每个订单的利润(包括互换),并在每个订单前打叉以关闭它。

彼得,这样的描述对你的TOR来说足够了吗?

这里是小组。

请对外观进行调整,并解释 "全部/每个 "开关的具体位置,以及带有时间框架的发布列表(我假设在顶部的中心位置)。

按下的按钮。


 

至于交易测试器,我现在正在解决这个问题。我想完全重做EA和引擎之间的通信。通过 "通信对象"(MT-对象,其字符串描述用于程序之间的数据传输)来实现它。

这可以是一种快速和通用的通信方式,用于正常通信和EA的测试 模式下的通信。

目前的通信方法是对OnChartEvent()事件队列进行重载。如果事件太多,EA和引擎之间的信息发送和接收就会延迟,这一点可以直观地看到。通过MT对象进行通信应该可以消除这个问题,因为消息的接收和发送将在OnChartEvent()事件队列之外完成。

在理论上,这应该是可行的...

 
Реter Konow:

这里是小组。

请对外观进行修正,并解释 "全部/每个 "开关的具体位置,以及时间框架列表(我猜是在顶部的中心位置)。

我认为最好使面板成为工作区的整个宽度(订单列表将有更多的元数据)。

标签为 "批量"、"利润 "和 "现在 "按钮旁边的编辑字段应该有百分之一(格式为0.00)。

我做了实验,得出的结论是,用Label和两个按钮("-"和 "+")取代带有时间框架列表的字段会更好。放在最上面一排按钮的位置。标签在中间,"-"按钮在左边,"+"按钮在标签的右边。下面会有空格,列出未完成的订单。

将全部/每个开关放在 "拖曳 "按钮下面的 "利润 "标签的位置。

这是我的设想,但据我了解,在阅读论坛和观看你的作品后,你有绘画的愿望和能力,所以我不会反对你的建议。

 
Александр:

1.我认为最好使面板成为工作区的全部宽度(订单列表将有更多的元数据)。

2.标签为 "批量"、"利润 "和 "现在 "按钮旁边的编辑字段应该有百分之一(格式为0.00)。

3.我做了实验,得出的结论是,最好用标签和两个按钮("-"和 "+")来取代带有时间框架列表的字段。放在最上面一排按钮的位置。标签在中间,"-"按钮在左边,"+"按钮在标签的右边。下面将有空间显示未结订单的清单。

4.将全部/每个开关放在利润标签水平的拖曳按钮下面。

5.这是我的设想,但我在看了论坛和看了你的作品后明白,你有绘画的天赋和能力,所以我不会反对你的建议。

1.即让面板自动调整到图表的宽度?还是只限于图表的宽度?

2.会做的。

3.我不太明白。你的意思是,时间框架应该在输入栏中用+/-按钮来设置?我们不应该为订单列表做一个单独的窗口吗?面板上的一切?

4.开关可以是一个简单的按钮,当按下/压下时改变文字?

5.添加图形元素。

(一个小滑块可以做成一个开关)。滑块会向右/向左移动)

 
Реter Konow:

至于交易测试器,我现在正在解决这个问题。我想完全重做EA和引擎之间的通信。通过 "通信对象"(MT-对象,其字符串描述用于程序之间的数据传输)来实现它。

这可以是一种快速和通用的通信方式,用于正常通信和EA的测试 模式下的通信。

目前的通信方法是对OnChartEvent()事件队列进行重载。如果事件太多,EA和引擎之间的信息发送和接收就会延迟,这一点可以直观地看到。通过MT对象进行通信应该可以消除这个问题,因为信息的接收和发送将在OnChartEvent()事件队列之外完成。

在理论上,它应该是有效的...

我不确定我是否完全理解这一点。

我的理解是否正确,你要通过OnChartEvent()事件在测试模式下实现EA和面板之间的通信?

如果是这样,成功的几率并不高,因为在测试器中没有为EA产生OnChartEvent()事件(只为指标)。

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 这里有人建议用OnTick()事件来代替OnChartEvent()事件。

我试过了,但它使所有的复合对象(SpinEdit、ComboBox和其他)停止工作。唯一允许改变Button.Pressed()测试器中的变量值的方法,而且只适用于独立的按钮(没有包含在任何复杂对象中的按钮,如SpinEdit)。

SimplePanel проблема при переключении таймфрейма
SimplePanel проблема при переключении таймфрейма
  • 2018.12.16
  • www.mql5.com
В составе стандартного пакета MT4 имеется пример создания панели управления "Simple Panel...
 
Александр:

我不确定我是否完全理解这一点。

我的理解是否正确,你将通过OnChartEvent()事件在测试模式下实现EA和面板之间的通信?

如果是这样,成功的几率并不高,因为在测试器中没有为EA产生OnChartEvent()事件(只为指标)。

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 这里有人建议用OnTick()事件来代替OnChartEvent()事件。

我试过了,但它使所有的复合对象(SpinEdit、ComboBox和其他)停止工作。唯一允许改变Button.Pressed()测试器中的变量值的方法,而且只适用于独立的按钮(没有包含在任何复杂对象中的按钮,如SpinEdit)。

这是个很长的解释。但是,请相信我的经验。沟通方式将发挥作用。

该小组将在一个常规图表上。测试器中的专家顾问。小组将在策略测试器中找到专家顾问,创建MT对象,并通过其描述与EA "沟通"。

OnChartEvent()在常规图表上工作。在测试器中没有。但它不会阻止参数值的同步。

我相信它一定会成功的。

这将是一个星期的问题。

 
Реter Konow:

这是个很长的解释。但是,请相信我的经验。沟通方式将发挥作用。

该小组将在一个正常的图表上。测试器中的专家顾问。小组将在策略测试器中找到专家顾问,创建MT对象,并通过其描述与EA "沟通"。

OnChartEvent()在常规图表上工作。在测试器中没有。但它不会阻止参数值的同步。

我相信它一定会成功的。

这将是一个星期的问题。

这是不可能的。