平均差值策略(MC版).docx
平均差值策略(MC版)
本策略通过通道指标的形式描述价格趋势变化的强弱。我们通过收盘价与平均价格之间的距离来判定即时趋势强度,从而计算特定周期内价格趋势强度的区间。??????
指标通道向上运行,代表价格处于多头趋势;
指标通道向下运行,代表价格处于空头趋势。
当指标通道上行,价格突破通道上轨,代表多头趋势进一步增强;
当指标通道下行,价格突破通道下轨,代表空头趋势进一步增强。
当指标通道上行,价格突破通道下轨,代表上行趋势强度减弱或趋势反转;
当指标通道下行,价格突破通道上轨,代表下行趋势强度减弱或趋势反转。?????
??
突破前期价格高低点是趋势的起点和充分非必要条件。
因此以价格突破唐齐安通道上下轨作为进场信号。
当持有多单时,价格跌破趋势强度通道下轨平仓离场;
当持有空单时,价格击穿趋势通道上轨平仓离场。?????
代码的逐行注释:
1.?Inputs:?zq(105);?:定义一个输入参数?zq?,初始值为105。
2.?Variables:?var0(0),var1(0),var2(0),var3(0),var4(0),var5(0),var6(0),var7(0);?:定义8个变量,初始值都设为0。
3.?计算变量:?
var0=close-Average(close,zq);?:计算当前收盘价与过去?zq?天收盘价平均值的差,存储在变量?var0?中。?
var1=highest(var0[1],zq);?:计算?var0?数列中过去?zq?天的最高值,存储在变量?var1?中。
?var2=lowest(var0[1],zq);?:计算?var0?数列中过去?zq?天的最低值,存储在变量?var2?中。
4.?计算交易价格:?
var3=Average(close[1],zq)+var1;?:计算过去?zq?天收盘价的次日平均值加上?var1?的值,存储在变量?var3?中。?
var4=Average(close[1],zq)+var2;?:计算过去?zq?天收盘价的次日平均值加上?var2?的值,存储在变量?var4?中。
?var6=highest(high[1],zq);?:计算过去?zq?天的最高价,存储在变量?var6?中。
?var7=lowest(low[1],zq);?:计算过去?zq?天的最低价,存储在变量?var7?中。
5.?交易逻辑:?
ifmarketposition=0thenbuynextbaratvar6stop?:如果当前市场位置(持仓情况)为0(无持仓),则在下一根K线以?var6?为止损价买入。?
ifmarketposition=0thensellshortnextbaratvar7stop;?:如果当前市场位置为0,也在下一根K线以?var7?为止损价卖出(做空)。?
?ifmarketposition=1thensellnextbaratvar4stop;?:如果当前市场位置为1(持有多头),则在下一根K线以?var4?为止损价卖出。?
ifmarketposition=-1thenbuytocovernextbaratvar3stop;?:如果当前市场位置为-1(持有空头),则在下一根K线以?var3?为止损价买入平仓。
本策略通过计算收盘价与平均值的差异,并使用这个差异的最高值和最低值来确定买入和卖出的止损点。此外,它还考虑了当前的市场位置来决定是开仓、平仓还是保持现有头寸。
策略信号代码:
Inputs:
zq(105);
variables:
var0(0),
var1(0),
var2(0),
var3(0),
var4(0),
var5(0),
var6(0),
var7(0);
var0=close-Average(close,zq);
var1=highest(var0[1],zq);
var2=lowest(var0[1],zq);
var3=Average(close[1],zq)+var1;
var4=Average(close[1],zq)+var2;
var6=highest(high[1],zq);
var7=lowest(low[1],zq);
ifmarketposition=0thenbuynextbaratvar6stop
ifmarketposition=0thensellshortnextbaratvar7stop;
ifmark