分享

基于凯特纳通道的交易系统(多)

 cntagu 2017-04-11



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

//  简称: CL_KeltnerChannel_L

//  名称: 基于凯特纳通道的交易系统多

//  类别: 公式应用

//  类型: 内建应用 

//  输出:

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


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

//  策略说明:

//  基于凯特纳通道的交易系统

// 

//  系统要素:

//  1. 计算关键价格的凯特纳通道

// 2. 价格突破凯特纳通道后,设定入场触发单

// 

//  入场条件:

//  1、价格突破凯特纳通道后,在当根K线高点之上N倍通道幅度,设定多头触发单,此开仓点将挂单X根k线

//  2、价格突破凯特纳通道后,在当根K线低点之下N倍通道幅度,设定空头触发单,此开仓点将挂单X根k线

// 

//  出场条件:

//  1. 价格下穿轨道中轨时平仓

// 2. 价格小于N周期低点平仓

// 

//     注:当前策略仅为做多系统, 如需做空, 请参见CL_KeltnerChannel_S

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



Params

Numeric length(10);         // 均线参数

Numeric Constt(1.2);        // 通道倍数

Numeric ChanPcnt(0.5) ;     // 入场参数

Numeric buyN(5);        // 入场触发条件有效K线周期

Numeric stopN(4);          // 低点止损参数


Vars

NumericSeries Price(0);     // 关键价格

NumericSeries KCU(0);       // 通道上轨

NumericSeries KCL(0);       // 通道下轨

NumericSeries ChanRng(0);    // 通道宽度

NumericSeries AvgVal(0);    // 通道中轨

NumericSeries AvgRange(0);   // 真实波动均值(atr)

NumericSeries Setbar(0);

NumericSeries CountL(0);    // 触发单周期变量

NumericSeries hh;           // 多头触发单价位

NumericSeries Lstopline;    // 止损线

bool con;                     // bool变量

BoolSeries con2;             // boolSeries变量

Begin


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

If(BarStatus == 2 And IsCallAuctionTime) Return;

// 指标计算

Price = Close;                            // 关键价格,可以换成中位价等

AvgVal = Average(Price,Length);           // 计算均线 默认10周期

AvgRange = Average(TrueRange,Length);     // 计算真实波动均值(atr) 默认10周期

KCU = AvgVal + AvgRange*Constt;           // 计算通道上轨=均线+1.2倍的10周期真实波动值

KCL = AvgVal - AvgRange*Constt;           // 计算通道下轨=均线-1.2倍的10周期真实波动值

ChanRng = (KCU - KCL)/2;                  // 通道宽度/2      

CountL = CountL + 1;                      // 每经过1根K线CountL+1,用于判断信号取消的变量,上穿上轨后,默认参数:开仓点仅挂单5根k线


con = CrossOver( Price,KCU);              // bool变量con,当价格上穿上轨时为真

If(con)                                

SetBar = High;

CountL = 0;

hh = SetBar + (ChanRng*ChanPcnt);

}                                         // 当con为真时,计算开仓线hh,CountL重置为0


// PlotNumeric('KCU',KCU);

// PlotNumeric('KCL',KCL);

// If(MarketPosition == 0)PlotNumeric('hh',hh); 

// 系统入场

// 当价格上穿上轨,并且在buyN根K线内>=hh时,买入开仓

If(MarketPosition == 0)

{

If(Price[1] > KCU[1] and CountL <= buyN and High >= hh) 

{

Buy(0,max(Open,hh));

}                                    

}

// 系统出场

con2 = CrossUnder(Close,AvgVal);          // bool变量con,当价格下穿轨道中轨时为真

Lstopline = Lowest(Low[1],stopN);

If(MarketPosition == 1 and BarsSinceEntry > 0)

{

// 价格下穿轨道中轨时平仓

If(con2[1])

{

Sell(0,Open);                            

}


// 价格小于N周期低点平仓 默认4

If(Low <= Lstopline)

{

Sell(0,Min(Open,Lstopline));         

}

}


End


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约