-- 作者:gsqh_zyp
-- 发布时间:2013/7/22 9:57:14
--
//参数设置: INPUT : M(9,2,60,6),N(14,1,100,1),P(26,20,100,8),S(12,5,40,4); INPUT : SS(40,1,100,1);//持仓手数 VARIABLE : maxprofit = 0;//有仓位时最大获利幅度 win1 := 0; win2 := 0;//止损、止盈、回撤控制
//需要的中间变量
//MACD指标 DIFF := EMA(CLOSE,S) - EMA(CLOSE,P); DEA := EMA(DIFF,M); MACD1 := 2 * (DIFF-DEA), COLORSTICK;
//开平仓条件 开多 := CROSS(DIFF , DEA);
开空 := CROSS(DEA , DIFF);
平空 := 开多; 平多 := 开空; //交易系统
IF HOLDING > 0 THEN BEGIN //多头平仓 IF 平多 THEN SELL(1,HOLDING,LIMITR,CLOSE); //盈利计算 IF ENTERBARS > 0 THEN BEGIN win1 := (c - ENTERPRICE)/ENTERPRICE * 100;//记录最大盈利 IF win1 > maxprofit then maxprofit := win1; win2 :=(maxprofit - win1)/maxprofit*100;//最大盈利后的回调幅度 END //多头浮动亏损达3%止损 IF win1 < -3 THEN 多头止损:SELL(1,HOLDING,LIMITR,CLOSE); //多头获利后回撤20%止盈 IF win2 >15 AND win1 > 10 THEN BEGIN 多头止盈:SELL(1,HOLDING,LIMITR,CLOSE),ORDERQUEUE; END
IF HOLDING < 0 THEN BEGIN //空头平仓 IF 平空 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); //盈亏计算 IF ENTERBARS > 0 THEN BEGIN win1 := (enterprice - c)/enterprice*100; //记录最大盈利 IF win1 > maxprofit THEN maxprofit := win1; win2 := (maxprofit - win1)/maxprofit*100; //最大盈利后的回调幅度 END //空头浮动亏损达3%止损 IF win1 < -3 THEN 空头止损:SELLSHORT(1,HOLDING,LIMITR,CLOSE); //空头获利后回撤20%止盈 IF win2 > 15 AND win1 > 10 THEN 空头止盈:SELLSHORT(1,HOLDING,LIMITR,CLOSE); END IF HOLDING=0 THEN BEGIN //多头开仓 IF 开多 THEN BEGIN BUY(1,SS,LIMITR,CLOSE); maxprofit := 0; END //空头开仓 IF 开空 THEN BEGIN BUYSHORT(1,SS,LIMITR,CLOSE); maxprofit := 0; END END
上面一个简单的例子,请帮忙改下如果改变策略使得当出现盈利回撤平仓后反手开仓
|
-- 作者:lichenghu
-- 发布时间:2013/7/22 15:17:44
--
//参数设置: INPUT : M(9,2,60,6),N(14,1,100,1),P(26,20,100,8),S(12,5,40,4); INPUT : SS(40,1,100,1);//持仓手数 VARIABLE : maxprofit = 0;//有仓位时最大获利幅度 win1 := 0; win2 := 0;//止损、止盈、回撤控制
//需要的中间变量
//MACD指标 DIFF := EMA(CLOSE,S) - EMA(CLOSE,P); DEA := EMA(DIFF,M); MACD1 := 2 * (DIFF-DEA), COLORSTICK;
//开平仓条件 开多 := CROSS(DIFF , DEA);
开空 := CROSS(DEA , DIFF);
平空 := 开多; 平多 := 开空; //交易系统
IF HOLDING > 0 THEN BEGIN //多头平仓 IF 平多 THEN SELL(1,HOLDING,LIMITR,CLOSE); //盈利计算 IF ENTERBARS > 0 THEN BEGIN win1 := (c - ENTERPRICE)/ENTERPRICE * 100;//记录最大盈利 IF win1 > maxprofit then maxprofit := win1; win2 :=(maxprofit - win1)/maxprofit*100;//最大盈利后的回调幅度 END //多头浮动亏损达3%止损 IF win1 < -3 THEN 多头止损:SELL(1,HOLDING,LIMITR,CLOSE); //多头获利后回撤20%止盈 IF win2 >15 AND win1 > 10 THEN BEGIN 多头止盈:SELL(1,HOLDING,LIMITR,CLOSE),ORDERQUEUE; BUYSHORT(1,1,LIMITR,CLOSE);//回撤止盈反手 END
IF HOLDING < 0 THEN BEGIN //空头平仓 IF 平空 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); //盈亏计算 IF ENTERBARS > 0 THEN BEGIN win1 := (enterprice - c)/enterprice*100; //记录最大盈利 IF win1 > maxprofit THEN maxprofit := win1; win2 := (maxprofit - win1)/maxprofit*100; //最大盈利后的回调幅度 END //空头浮动亏损达3%止损 IF win1 < -3 THEN 空头止损:SELLSHORT(1,HOLDING,LIMITR,CLOSE); //空头获利后回撤20%止盈 IF win2 > 15 AND win1 > 10 THEN 空头止盈:SELLSHORT(1,HOLDING,LIMITR,CLOSE); BUY(1,1,LIMITR,CLOSE);//回撤止盈反手 END IF HOLDING=0 THEN BEGIN //多头开仓 IF 开多 THEN BEGIN BUY(1,SS,LIMITR,CLOSE); maxprofit := 0; END //空头开仓 IF 开空 THEN BEGIN BUYSHORT(1,SS,LIMITR,CLOSE); maxprofit := 0; END
|