怎么写趋势的选股公式 (均线战法最简单的方法)

/ 简称: MA

// 名称: 移动平均线

// 类别: 公式应用

// 类型: 内建应用

//------------------------------------------------------------------------

移动平均线的核心思想是通过平滑价格数据来消除短期波动的干扰,凸显价格的长期趋势。它体现了“平均成本”或“平均价格”的概念,反映了过去一段时间内市场参与者总体的买卖意愿平衡点。

移动平均线在量化中运用很多,它虽然是滞后的指标,但是趋势策略是期货量化最有效的一类策略,而趋势策略中经常可以看见移动平均线。

金融民工就使用交易开拓者平台来进行期货量化的知识分享和学习,希望和大家一起在量化的世界探索和进步。

以下是金融民工写的一个移动平均线的函数:

Params

Numeric Length1(20);

Begin

PlotNumeric("MA1",AverageFC(Close,Length1));

End

以上是20日均线的一个划线,划线之后就得进行买卖逻辑建立,

最简单但均线策略逻辑:

1、前两根K线收盘价在均线之下,上一根K线收盘价在均线之上,下一根K线开盘价买入

2、前两根K线收盘价在均线之上,上一根K线收盘价在均线之下,下一根K线开盘价卖出

策略编写如下

Params

Numeric Length1(20);

Vars

NumericSeries MA1;

Begin

// 集合竞价和小节休息过滤

If (!CallAuctionFilter()) Return;

MA1 = AverageFC(Close, Length1);

PlotNumeric("MA1", MA1);

// 判断买卖条件并下单

If (MarketPosition == 0) // 当前无持仓

{

If (Close[2] < MA1[2] &&Close[1] > MA1[1] && Open[1] > MA1[1] && Vol[1] > 0) // 当前周期收盘价高于MA1且上一周期成交量大于0

{

Buy(1, Open);

}

If (Close[2] > MA1[2] &&Close[1] < MA1[1] && Open[1] < MA1[1] && Vol[1] > 0) // 当前周期收盘价低于MA1且上一周期成交量大于0

{

SellShort(1, Open);

}

}

End

写完策略进行编译和验证:

测试结果是均线策略长期来看是有效的,上面是期货铜的日K线策略,但是问题就是频繁交易,所以均线就诞生了很多衍生量化策略。

比如MACD,双均线策略,三均线策略,瀑布线策略等。