# 您能用移动平均线做什么呢

3 五月 2022, 08:59
5
2 034

### 概述

`MA[i] = (Price[i]+Price[i+1]+...+Price[i+MAPeriod])/MAPeriod`

### 模板指标

`#property indicator_chart_window`

`#property indicator_separate_window`

`#property indicator_height 100`

```  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);```

### 价格穿越指标线（趋势方向）

```//--- main cycle
for(i=start+3; i<rates_total && !IsStopped(); i++)
{
ArrowDownBuffer[i]=0;
ArrowUpBuffer[i]=0;

//---

if(
)
)
)

)
{
ArrowDownBuffer[i]=high[i]+extATRData[i]/5;
}
else
if(
)
)
)
)
{
ArrowUpBuffer[i]=low[i]-extATRData[i]/5;
}
} // main cycle```

### 均线则作为支撑/阻力线

```//--- main cycle
for(i=start+3; i<rates_total && !IsStopped(); i++)
{
ArrowDownBuffer[i]=0;
ArrowUpBuffer[i]=0;

//---

if(
)
)
{
ArrowDownBuffer[i]=high[i]+extATRData[i]/5;
}

else
if(
)
)
{
ArrowUpBuffer[i]=low[i]-extATRData[i]/5;
}
} // Main cycle end```

### 坡度

MA-Slope.mq5 中主回路的代码如下所示：

```//--- main cycle
for(i=start+SlopeShift*2; i<rates_total && !IsStopped(); i++)
{
SlopeDownBuffer[i]=0;
SlopeUpBuffer[i]=0;

//---

if(
slopeIndex<0

)
{
SlopeDownBuffer[i]=slopeIndex;
}
else
if(
slopeIndex>0
)
{
SlopeUpBuffer[i]=slopeIndex;
}
} // main cycle```

```//--- main cycle
for(i=start+SlopeShift*3; i<rates_total && !IsStopped(); i++)
{
SlopeDownBuffer[i]=0;
SlopeUpBuffer[i]=0;
//---

if(
slopeIndex<0
)
{
SlopeDownBuffer[i]=slopeIndex;
}
else
if(
slopeIndex>0
)
{
SlopeUpBuffer[i]=slopeIndex;
}
} // main cycle```

```//--- main cycle
for(i=start+SlopeShift*3; i<rates_total && !IsStopped(); i++)
{
SlopeDownBuffer[i]=0;
SlopeUpBuffer[i]=0;
//---

if(
slopeIndex<=-SlopeThreshold
)
{
SlopeDownBuffer[i]=-1;
}
else
if(
slopeIndex>=SlopeThreshold
)
{
SlopeUpBuffer[i]=1;
}
} // Main cycle

```

H1 上的最终图像如下所示：

### 基于两条移动平均线的通道（ATR3x5）

```//--- main cycle
for(i=start+3; i<rates_total && !IsStopped(); i++)
{
ArrowDownBuffer[i]=0;
ArrowUpBuffer[i]=0;

//---

MAUpBuffer[i]=extMAUpData[i]+extATRData[i]*DistanceCoefficient;

if(
(high[i-1]>=MAUpBuffer[i-1]
&& close[i-1]<MAUpBuffer[i-1])
||(
close[i-2]>MAUpBuffer[i-2]
&& close[i-1]<MAUpBuffer[i-1]
)
)
{
ArrowDownBuffer[i]=high[i]+extATRData[i]/5;
}
else
if(
||(
)
)
{
ArrowUpBuffer[i]=low[i]-extATRData[i]/5;
}
}// main cycle
```

### 相对位置。 均线交叉

```//--- main cycle
for(i=start+3+SlopeShift*2; i<rates_total && !IsStopped(); i++)
{
ArrowDownBuffer[i]=0;
ArrowUpBuffer[i]=0;

//---

if(
extMAFastData[i-1]<extMASlowData[i-1]
&& extMAFastData[i-2]>=extMASlowData[i-2]
&& MASlope(extMAFastData,i-1)<-SlopeThreshold
&& MASlope(extMASlowData,i-1)<SlopeThreshold/SlowDelimiter
)
{
ArrowDownBuffer[i]=high[i]+extATRData[i]/3;
}
else
if(
extMAFastData[i-1]>extMASlowData[i-1]
&& extMAFastData[i-2]<=extMASlowData[i-2]
&& MASlope(extMAFastData,i-1)>SlopeThreshold
&& MASlope(extMASlowData,i-1)>-SlopeThreshold/SlowDelimiter
)
{
ArrowUpBuffer[i]=low[i]-extATRData[i]/3;
}
} // main cycle```

SlopeTreshold — 快速均线坡度示意图的阈值。 您可能还记得，如果在穿越的瞬间，快速均线的坡度太小，我们很可能是在应对一段横盘。 这段横盘通常会受到大量误报所困扰，最终导致亏损。

SlowDelimiter — 慢速均线坡度阈值分隔符。 有时，当快速均线已经向下倾斜了，我们也许会得到一个非常好的信号，而慢速均线尽管接近反转，但却尚未反转。 换句话说，入场

`MASlope(extMASlowData,i-1)>-SlopeThreshold/SlowDelimiter`

### 结束语

jx-Breaking.mq5 (5.56 KB)
h9-Support.mq5 (5.22 KB)
lw-Slope.mq5 (4.66 KB)
ATR3x5.mq5 (7.34 KB)
wr2-Crossing.mq5 (6.5 KB)

#### 该作者的其他文章

| 28 3月 2022 在 21:35

```    slopeIndex=(extMAData[i-1]-extMAData[i-1-SlopeShift]+Point()/100*MABars)

| 6 4月 2022 在 07:08
Verner999 引入 相当大的扭曲了。试图以这种方式来减少它。

| 6 4月 2022 在 08:30

• 要么在下一根蜡烛的开盘时--下跌，止损在当前蜡烛的最大值，在曲线（MA）或水平（1/2）附近取出。
• 或者等待曲线（和水平）被触及--然后--以低于24.01.2022（根据我的数据为113.469）的价格涨停。

| 11 5月 2022 在 02:07

| 15 5月 2022 在 13:51
andy961125 #:

DirectX 教程（第一部分）：绘制第一个三角形