一个真正的问题 - 页 10

 
m100:

goldtrader 也许我问的问题太傻了,但是,"数据窗口 "从哪里得到所有的值呢?


这是给MT4终端开发者的一个问题。我认为它来自相关指标和时间序列的缓冲区。
 
goldtrader:
这是给MT4终端开发者的问题。我认为,从相应的指标和时间序列的缓冲区。

那么,有没有像GetWindowsData(3 buffer,0 bar)这样的等效函数?

GetWindowsData自己想出了这个办法。

 
goldtrader:

阅读 msdn, WinApi, WindowHandle.我不是这些技术的专家。请记住,对于你的任务来说,它是一个BLEEP。

这里有一些东西https://www.mql5.com/ru/forum/120356

要想从数据窗口获得这些数值--你需要将鼠标光标始终放在所需窗口上

一旦光标移动到某个地方或失去焦点,窗口就会停止刷新。

 
m100:

那么,有没有像GetWindowsData(3 buffer,0 bar)这样的等效函数?

显然不是,因为你需要的一切都在那里,你不需要多余的东西。数据窗口基本上是没有必要的。
 
好的,谢谢大家,我会把drknn 的代码拆开的。
 

也许值得解释一下,让事情变得更清楚。

行MyValue=MyValue/(PeriodSkolzjaschej+1); 1被添加到变量PeriodSkolzjaschej中,因为循环将从数字=PeriodSkolzjaschej的蜡烛开始搜索,以零蜡烛结束。因此,参与循环的烛台总数将等于PeriodSkolzjaschej+1。这意味着,如果PeriodSkolzjaschej=35,周期=36的MA将实际参与。为了在不改变代码的情况下获得35期的移动平均线,我们需要将PeriodSkolzjaschej变量设置为 34。

 
drknn:

也许值得澄清几件事情,让大家明白这一点。

行MyValue=MyValue/(PeriodSkolzjaschej+1); 1被添加到变量PeriodSkolzjaschej中,因为循环将从数字=PeriodSkolzjaschej的蜡烛开始搜索,它将以零蜡烛的读数结束。因此,参与循环的烛台总数将等于PeriodSkolzjaschej+1。这意味着,如果PeriodSkolzjaschej=35,周期=36的MA将实际参与。为了在不改变代码的情况下获得35期的移动平均线,我们需要将PeriodSkolzjaschej变量设置为34。

谢谢

applied_price是一个额外的变量吗?

 
m100:

谢谢你

applied_price是一个额外的变量吗?


不 - 默认情况下,我将iMACD()设置为零,这意味着指标应基于收盘价 建立。如果我允许用户选择,那么对指标值的请求应该是这样做的

Main_MACD=iMACD(SMB,0,fast_ema_period,slow_ema_period,signal_period,applied_price,0,0);

Signal_MACD=iMACD(SMB,0,fast_ema_period,slow_ema_period,signal_period,applied_price,1,0);

// ------- Усредняем сигнальную линию ------------------
for(int i=PeriodSkolzjaschej;i>=0;i--){
 MyValue=MyValue+iMACD(SMB,0,fast_ema_period,slow_ema_period,signal_period,applied_price,1,i);
}