Loading ...

多级百分比止盈策略

Author: Hukybo, Date: 2019-09-18 18:07:48
Tags:

斯坦利·克罗在《克罗谈投资策略》书中提到过他的止盈分为三部分:当达到止盈目标的时候主动平掉三分之一,突破长期阻力位和支撑位的时候再主动平掉三分之一,剩下的三分之一跟随趋势直到止损。本篇文章分享的策略也正是根据这个原理,利用均线作为趋势方向的判断,以收盘价、最高价与最低价的相互关系作为开平仓信号,在价格走势没有明显转向的前提下,提前按照百分比主动分批止盈。 点击阅读更多内容


(*backtest
start: 2015-02-22 00:00:00
end: 2019-09-18 00:00:00
period: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
args: [["SlideTick",2,126961],["ContractType","rb000",126961]]
*)

// 定义参数
LENGTH := 100;   // 均线参数
STOP_LOSS := 3;       // 止损幅度

// 定义止盈参数
STARTPER1 := 5;  // 1级跟踪止盈,盈利5%启动
STOPPER1 := 100; // 1级跟踪止盈,盈利回撤100%触发    
STARTPER2 := 10; // 2级跟踪止盈,盈利10%启动
STOPPER2 := 50;  // 2级跟踪止盈,盈利回撤50%触发	
STARTPER3 := 20; // 3级跟踪止盈,盈利20%启动
STOPPER3 := 20;  // 3级跟踪止盈,盈利回撤20%触发

// 定义上下区间
NN := BARSLAST(DATE <> REF(DATE, 1)) + 1;  // 当天开盘到当前周期数
TODAY_OPEN := VALUEWHEN(NN = 1, O);        // 当天开盘价
TODAY_HIGH := HHV(H, NN);                  // 当天最高价
TODAY_LOW := LLV(L, NN);                   // 当天最低价
YESTERDAY_HIGH := REF(TODAY_HIGH, NN);     // 昨天最高价
YESTERDAY_LOW := REF(TODAY_LOW, NN);       // 昨天最低价
BAND := YESTERDAY_HIGH - YESTERDAY_LOW;    // 昨天振幅
UPPERLINE : TODAY_OPEN + BAND;             // 上线
LOWERLINE : TODAY_OPEN - BAND;             // 下线
MYMA:MA(CLOSE, LENGTH);                    // 均线

// 开仓
C > UPPERLINE AND UPPERLINE > MYMA, BK;   // 开多
C < LOWERLINE AND LOWERLINE < MYMA, SK;   // 开空

// 平仓
C < LOWERLINE OR C < MYMA, SP;  // 平多
C > UPPERLINE OR C > MYMA, BP;  // 平空

// 多单止盈
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER1) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER1, SP;  // 一级
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER2) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER2, SP;  // 二级
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER3) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER3, SP;  // 三级

// 空单止盈
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER1) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER1, BP;  // 一级
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER2) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER2, BP;  // 二级
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER3) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER3, BP;  // 三级


//止损
C <= BKPRICE * (1 - STOP_LOSS * 0.01), SP;  // 多头
C >= SKPRICE * (1 + STOP_LOSS * 0.01), BP;  // 空头

// 设置下单委托方式
SETSIGPRICETYPE(BK,NEW_ORDER);
SETSIGPRICETYPE(SK,NEW_ORDER);
SETSIGPRICETYPE(BP,NEW_ORDER);
SETSIGPRICETYPE(SP,NEW_ORDER);

// 设置信号过滤方式
AUTOFILTER;

More