文章 "图形界面 X: 排序、重建表格和单元格中的控件 (集成编译 11)" - 页 10

 

您好、

您的表格项目非常有趣,是良好 OOP 编码的典范。

我想问一下,您是否愿意考虑为复杂的多符号 EA 提供一个非常有用的附加功能?

试想一下,一个 EA 可以用很多指标来交易很多符号,每个符号都有一个单独的指标参数设置(例如,很简单):

输入字符串 Sym1 = "EURUSD";

输入 int Sym1MACDema1 = 12;

输入 int Sym1MACDema2 = 26;

输入 int Sym1MACDsma3 = 9

输入 ENUM_APPLIED_PRICE Sym1MACDprc =PRICE_CLOSE;

输入字符串 Sym2 = "GBPUSD";

输入 int Sym2MACDema1 = 11;

输入 int Sym2MACDema2 = 25;

输入 int Sym2MACDsma3 = 10

输入 ENUM_APPLIED_PRICE Sym2MACDprc =PRICE_CLOSE;

...

如果以表格的形式而不是长长的参数列表来显示这种设置,用户会更容易处理。

特别是如果您的应用程序能够通过 csv 文件管理 StartegyTester。我认为必须通过OnInit()-function 中的 csv 文件来管理 StrategyTester 中的 EA。

为此,可以添加 StratTester 提供的功能:定义范围。

但问题是,在遗传算法中,如果 OnInit() 返回 INIT_PARAMETERS_INCORRECT 或 INIT_FAILED,遗传算法会将其视为有效通过,这将减少真正通过的测试运行次数,从而降低最终结果的有效性。

我在使用 mt4 时就意识到了这个问题,并把它写给了服务台,但我不知道他们是否已经解决了这个问题。


无论如何,干得好 - 继续努力:)




 
Carl Schreiber:

...

感谢您的反馈和建议!我会考虑如何实现这一目标。
 

您好,如何通过编程将主表单或对话框移动到特定位置。

例如,我想在点击表单标题时将对话框移到左上角。

 

Tol,我发现在调整栏大小时有一些奇怪的现象--文字被错误地裁剪了。我还意外发现,按住 Ctrl 键时,列的大小会不断变化。


 
Artyom Trishkin:

1. Tol,我发现在改变栏大小时有一些奇怪的现象--文字被错误地裁剪了。

2. 我还意外地发现,按住 Ctrl 键时,栏大小会不断变化。

1.我试着用不同的列中文本对齐模式进行测试,但没有成功。

2.玩过 Ctrl 键,但不清楚为什么会出现这种行为。表格代码中没有定义此键。

 

您好!

这是一个很棒的库!

你们还支持 MT4 吗?

同时支持 MT4 和 MT5 将是一个很好的方法,当需要从 MT4 平滑过渡到 MT5 时。

 

您好、


我下载了这篇文章中的库,正在修改以学习这个库。 我有一个简单的问题。


如果我不创建菜单,就像下面我修改的代码那样,我就不能对表格进行排序,也不能单击复选框,为什么会这样?@AnatoliKazharski


//+------------------------------------------------------------------+
//| 创建交易面板|
//+------------------------------------------------------------------+
bool CProgram::CreateExpertPanel(void)
  {
//--- 为控件创建表格 1
   if(!CreateWindow1("EXPERT PANEL"))
      return(false);
/*/--- 创建控件:
// 主菜单
 if(!CreateMenuBar(1,20))
 return(false);
//--- 上下文菜单
 if(!CreateMBContextMenu1())
 return(false);
 if(!CreateMBContextMenu2())
 return(false);
 if(!CreateMBContextMenu3())
 return(false);
 if(!CreateMBContextMenu4())
 return(false);*/
//--- 创建状态栏
   if(!CreateStatusBar(1,25))
      return(false);
//--- 按钮
   if(!CreateSimpleButton1(7,50,"ADD COLUMN"))
      return(false);
   if(!CreateSimpleButton2(7,75,"DELETE COLUMN"))
      return(false);
   if(!CreateSimpleButton3(180,50,"ADD ROW"))
      return(false);
   if(!CreateSimpleButton4(180,75,"DELETE ROW"))
      return(false);
   if(!CreateSimpleButton5(353,50,"REBUILD TABLE"))
      return(false);
   if(!CreateSimpleButton6(353,75,"CLEAR TABLE"))
      return(false);
//--- 编辑
   if(!CreateSpinEdit1(114,52,":"))
      return(false);
   if(!CreateSpinEdit2(114,77,":"))
      return(false);
   if(!CreateSpinEdit3(287,52,":"))
      return(false);
   if(!CreateSpinEdit4(287,77,":"))
      return(false);
//--- 创建渲染表
   if(!CreateCanvasTable(1,103)) // 103 | 42
      return(false);
//--- 重新绘制图表
   m_chart.Redraw();
   return(true);
  }
 
你好,请告诉我如果一个表有动态数据,如何更新https://www.mql5.com/ru/forum/165152/page10#comment_7488387
 
Juer:
您好,请问如果表格有动态数据https://www.mql5.com/ru/forum/165152/page10#comment_7488387,如何更新表格?

请看这里:GUI X:更新绘制的表格和代码优化(第 10 版)