初学者的问题 MQL4 MT4 MetaTrader 4 - 页 237

 
Sergey Likho:

MT5的指标用两种颜色画出一条线

行的值都在同一个缓冲区。

在向指标请求数值时,有什么方法可以识别线条的颜色吗?

你可以。线条的颜色被储存在颜色缓冲区。如果只有一行,值缓冲区为0,颜色缓冲区为1。因此,在CopyBuffer中,你把第二个参数设为1。
 
Ventura:

如果参数窗口不能以编程方式显示,请告知是否可以以任何方式初始化参数

input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;
 
Евгений:

你有什么建议?

首先,必须通过符号和魔法来筛查权证。你剩下的是两个命令。你在你的条件下选择你想删除的那个。你删除一个并改变止损。

 
Aleksei Stepanenko
input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;

Alexey,我问的是如何在参数窗口出现之前而不是之后调用参数计算函数的建议。

问题是开放的:是否可以用程序调用参数窗口?如果没有,是否可以在参数窗口出现之前从函数中初始化参数?

我想做的事情是这样的

输入 double BuyStop = GetMyBuyStop();

但我得到一个错误,说只有常数可以在右边(

 
Ventura:

Alexey,我问的是如何在参数窗口出现之前而不是之后调用参数计算函数的建议。

问题是开放的:是否可以用程序调用参数窗口?如果没有,是否可以在参数窗口出现 之前从一个函数中初始化参数。

我想做的事情是这样的

输入 double BuyStop = GetMyBuyStop();

但出现了一个错误,即在右边只能有一个常数(

在参数窗口出现之前没有任何东西,一切都在后来才开始,当窗口已经加载时。

 

正是维塔利所说的!

在图表上创建一个面板,从那里管理变量。

 
Vitaly Muzichenko:

在参数窗口出现之前没有任何东西,它只是在之后开始,当窗口已经加载时才开始。

我知道这一点,这就是为什么我在等待专业建议。也许可以通过非标准的方式,通过Win API或其他方式来完成。

真的没有办法以编程方式,从代码中显示窗口吗?

 
Ventura:

我知道这一点,这就是为什么我在等待专业建议。也许可以通过非标准的方式,通过Win API或其他方式来完成。

是否没有办法以编程方式,从代码中显示窗口?

在初始化EA之前(并且在初始化之前输入参数),EA是不可用的,它不工作...在初始化专家顾问之前,你可以看到其参数窗口。但这并不适合你。所以,使用另一个你需要的数值的输入--在EA的初始化之后。你可以访问MessageBox()窗口。但这对你帮助不大--没有数值输入字段--只有同意/不同意/取消的按钮。

所以--你需要使用你自己的窗口。你可以自己从物体中创建它。在ObjectCreate() 中寻找它。或者使用Canvas。但帆布不适合做简单的工艺品。

Документация по MQL5: Графические объекты / ObjectCreate
Документация по MQL5: Графические объекты / ObjectCreate
  • www.mql5.com
ObjectCreate - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

在初始化之前,EA是不可用的(在初始化之前输入参数),它不工作...在EA被初始化之前,它的参数窗口可以供你使用。但这并不适合你。因此,使用另一个你需要的数值的输入--在EA的初始化之后。你可以访问MessageBox()窗口。但这对你帮助不大--没有数值输入字段--只有同意/不同意/取消的按钮。

所以--你需要使用你自己的窗口。你可以自己从物体中创建它。在ObjectCreate() 中寻找它。或者使用Canvas。但帆布不适合做简单的工艺品。

Artem,谢谢你,我一直在等待你的建议。在等待期间,我自己也在寻找可能的解决方案。今天早上,我研究出了如何以编程方式显示设置窗口 !

我发现,按F7键就可以调用该窗口。在互联网上搜索后发现,我可以用MQL制作一个软键显示。

剩下的就是技术问题了。我把代码粘贴在这里与大家分享,如果有人发现它有用的话。

外来的双倍BuyStop, SellStop。

...

void SetParams()
  {
   BuyStop = CalcBuyStop();
   SellStop = CalcSellStop();
   int handle = WindowHandle(Symbol(), 0);
   PostMessageA(handle,WM_KEYDOWN,VK_F7,0);
  } 
 

但我高兴得太早了。我设法以编程方式打开了参数窗口,但我在程序中分配给参数的值没有被保存((())。

也就是说,当我打开参数窗口时,我看到的是初始化时指定的值,在我的情况下是零。

有什么方法可以使计算值转移到参数表格中吗?