指标的移动平均线

[已删除]

你好


I'我是MQL4编程的新手,我'm试图计算EA中指标的移动平均.


有人可以给我一个代码示例:


-一个符号的x周期的移动平均值?

-符号的慢速随机(5,10,3)的x周期的移动平均值?


在此先感谢您的帮助。

[已删除] 2009.02.09 21:14:09

没有人可以帮助我吗?


[已删除] 2009.02.09 21:54:56

我想这与重新编写自定义的MA指标有关,该指标查看所需指标的平均值。如果真的只是用iStochastic值替换当前MA指标中的价格值的情况,那么您可以 使用iCustom() 调用自定义指标。我认为。


这是MT4随附的MA指标中的简单移动平均线代码,应该是我认为用iStochastic(...,[pos])值替换Close [pos]的情况


无效sma()
{
双和= 0;
int i,pos = Bars-ExtCountedBars-1;
// ----初始积累
如果(pos<MA_Period)pos = MA_Period;
对于(i = 1; i<MA_Period;i++,pos--)
sum + = Close [pos];
// ----主计算循环
而(pos>=0)
{
sum + = Close [pos];
ExtMapBuffer [pos] = sum / MA_Period;
sum- = Close [pos + MA_Period-1];
pos--;
}
// ----零个初始柱
如果(ExtCountedBars<1)
对于(i = 1; i<MA_Period; i ++)ExtMapBuffer [Bars-i] = 0;

[已删除] 2009.02.09 22:24:47
乱码:

我想这与重新编写自定义的MA指标有关,该指标查看所需指标的平均值。如果真的只是用iStochastic值替换当前MA指标中的价格值的情况,那么您可以使用iCustom()来调用自定义指标。我认为。


这是MT4随附的MA指标中的简单移动平均线代码,应该是我认为用iStochastic(...,[pos])值替换Close [pos]的情况


无效sma()
{
双和= 0;
int i,pos = Bars-ExtCountedBars-1;
// ----初始积累
如果(pos<MA_Period)pos = MA_Period;
对于(i = 1; i<MA_Period;i++,pos--)
sum + = Close [pos];
// ----主计算循环
而(pos>=0)
{
sum + = Close [pos];
ExtMapBuffer [pos] = sum / MA_Period;
sum- = Close [pos + MA_Period-1];
pos--;
}
// ----零个初始柱
如果(ExtCountedBars<1)
对于(i = 1; i<MA_Period; i ++)ExtMapBuffer [Bars-i] = 0;

谢谢您的帮助,mrwobbles,但仍然没有帮助我。

试想一下,我想简单地计算数量上x个周期的移动平均值,您是否有相应的代码?

[已删除] 2009.02.11 16:25:49
我已经完成了该卷的简单MA,如果您查看 移动平均线 MT4附带的指示器,您可以看到我做了什么。这很简单。随机MA的问题在于随机数返回正值和负值,因此总和不准确。
[已删除] 2009.02.11 16:38:37
这是一个有 指数的 MA也一样。只需更改MA方法,0 =简单MA,1 =指数MA。哦,您必须将颜色设置为红色,出于某种原因默认为黑色...
ahmetozer10 2019.03.04 22:18:21
采用 iMAOnArray() 功能。对于数据数组,请使用先前用指标数据填充的数组。


PS:

注意

   ArraySetAsSeries(array,true);

在调用iMAOnArray函数之前,必须执行此操作。
保罗·塞尔万 2019.03.05 19:08:56

如前所述 ahmetozer10  you have to use iMAOnArray()

例如 

int period = 7;
int history = 100;
double array[];
ArrayResize(array,history);
   
for (int i=0; i<history; i++) array[i]=(double)iVolume(NULL,0,i); 

double result = iMAOnArray(array,0,period,0,MODE_SMA, shift);  // shift = studied bar
ahmetozer10 2019.03.06 21:26:19

注意

   ArraySetAsSeries(array,true);

在调用iMAOnArray之前是必需的 功能.
马辛·马扎克(Marcin Madrzak) 2019.03.15 23:56:21
ahmetozer10:
采用 iMAOnArray() 功能。对于数据数组,请使用先前用指标数据填充的数组。


PS:

注意

   ArraySetAsSeries(array,true);

在调用iMAOnArray函数之前,必须执行此操作。

您刚刚回答了10岁的问题。我知道,从理论上讲,他们仍有可能在寻找答案,但机会很小;) 

micke81 2020.01.08 21:25:34
保罗·塞尔万:

如前所述 ahmetozer10  you have to use iMAOnArray()

例如 

我如何在MQL5上执行此操作,因此iMAOnArray()不可用。 

我试图找到On Balance Volume的20MA。我错过了什么吗? 

我是这种事物的新手。

提前致谢 

//+------------------------------------------------------------------+
//|   On Balance Volume                                              |
//+------------------------------------------------------------------+      
  // create an Array for several prices
     double OnBalanceVolumeArray[];
     double OnBalance_MA_Array[];
     
     // sort the price array from the current candle downwards
     ArraySetAsSeries(OnBalanceVolumeArray,true);
     // sort the price array1 from the current candle downwards
     ArraySetAsSeries(OnBalance_MA_Array,true);
     
     // define the properties of the OBV
     int OBVDefinition = iOBV (_Symbol,_Period,VOLUME_TICK);
     int OBV_MA20 = iMA(   ? ) 
                
     // Defined OBV, 上e line,current candle,20 candles, store result 
     CopyBuffer(OBVDefinition,0,0,20,OnBalanceVolumeArray);
      // Defined OBV, 上e line,current candle,20 candles, store result 
     CopyBuffer(OBV_MA20,0,0,20,OnBalance_MA_Array);
12