{策略定义模式}
RUNMODE:0;{运行模式 逐渐}
CLOSEPOSMODE:1;{平仓模式 平老仓}
WARNING_DISABLE:2;{报警处理 编译不警告}
//TEST:SPLITBARS(0)<OPENMINUTES(TIME),noaxis,LINETHICK0;{除权到现在的周期数}
IF SPLITBARS(0)<OPENMINUTES(TIME) THEN
DRAWTEXTEX( 1,0,20,0,'/主力移仓日/'+NUMTOSTR(MINUTE(),0)+'分/'+STKNAME+'/'+STKLABEL+'/'+DYNAINFO(210) +'/本月'+NUMTOSTR(MONTH(),0)+'/主月'+NUMTOSTR(STRTONUM( STRRIGHT(DYNAINFO(210),2) ),0),COLORYELLOW);{当日主力合约切换提示}
IF {STKLABEL='CU00' {沪铜策略停止}
{OR STKLABEL='AU00' {黄金策略停止}
{OR STKLABEL='SC00' OR}{原油策略停止}
STKLABEL='SA00' {纯碱策略停止}
OR STKLABEL='SH001'{上证指数策略停止}
OR STKLABEL='IH13' {50指数策略停止}
OR STKLABEL='AU30' {商品指数策略停止}
OR STKLABEL='AU31' {金属指数策略停止}
OR STKLABEL='AU32' {能源指数策略停止}
OR STKLABEL='AU33' {化工指数策略停止}
OR STKLABEL='AU34' {农产品指数策略停止}
OR STKLABEL='AU35' {油脂指数策略停止}
OR SPLITBARS(0)<OPENMINUTES(TIME) {当日除权到现在的周期数。主力合约换月停止策略}
OR CALLSTOCK(STKLABEL,VTCLOSE,6,-1)*1.03 < CALLSTOCK(STKLABEL,VTOPEN,6,0) {开盘价差大于3%停止策略}
OR CALLSTOCK(STKLABEL,VTCLOSE,6,-1)*0.97 > CALLSTOCK(STKLABEL,VTOPEN,6,0) {开盘价差大于3%停止策略}
THEN
EXIT; {定制品种策略停止,换月停止,纯碱品种交易模拟盘不支持限制停止}
{主力合约判断异常处理}
//本月:=MONTH(),LINETHICK0;
//主月:=STRTONUM( STRRIGHT(DYNAINFO(210),2) ),LINETHICK0;
IF (OPENPROFIT+NETPROFIT+(CASH(0)+CASH(1))/2)<0 THEN DRAWGBK(1,COLORRGB(255,0,0), COLORRGB(255,255,0),0);
IF (OPENPROFIT+NETPROFIT+(CASH(0)+CASH(1))/2)>0 THEN DRAWGBK(1,COLORRGB(0,255,0), COLORRGB(255,255,0),0);
IF (OPENPROFIT+NETPROFIT+(CASH(0)+CASH(1))/2)>=0 THEN
DRAWTEXTEX( 1,0,20,0,'/'+NUMTOSTR(MINUTE(),0)+'分/'+STKNAME+'/'+STKLABEL+'/'+DYNAINFO(210) +'/本月'+NUMTOSTR(MONTH(),0)+'/主月'+NUMTOSTR(STRTONUM( STRRIGHT(DYNAINFO(210),2) ),0),COLORRED);
ELSE
DRAWTEXTEX( 1,0,20,0,'/'+NUMTOSTR(MINUTE(),0)+'分/'+STKNAME+'/'+STKLABEL+'/'+DYNAINFO(210) +'/本月'+NUMTOSTR(MONTH(),0)+'/主月'+NUMTOSTR(STRTONUM( STRRIGHT(DYNAINFO(210),2) ),0),COLORGREEN);
{品种交易限制}
//IF 本月=主月 THEN EXIT; {如果本月是主月移仓换月停止交易,预留模块}
以下是引用ma-robot在2020/12/16 19:25:29的发言:
{策略定义模式}
RUNMODE:0;{运行模式 逐渐}
CLOSEPOSMODE:1;{平仓模式 平老仓}
WARNING_DISABLE:2;{报警处理 编译不警告}
//TEST:SPLITBARS(0)<OPENMINUTES(TIME),noaxis,LINETHICK0;{除权到现在的周期数}
IF SPLITBARS(0)<OPENMINUTES(TIME) THEN
DRAWTEXTEX( 1,0,20,0,'/主力移仓日/'+NUMTOSTR(MINUTE(),0)+'分/'+STKNAME+'/'+STKLABEL+'/'+DYNAINFO(210) +'/本月'+NUMTOSTR(MONTH(),0)+'/主月'+NUMTOSTR(STRTONUM( STRRIGHT(DYNAINFO(210),2) ),0),COLORYELLOW);{当日主力合约切换提示}
IF {STKLABEL='CU00' {沪铜策略停止}
{OR STKLABEL='AU00' {黄金策略停止}
{OR STKLABEL='SC00' OR}{原油策略停止}
STKLABEL='SA00' {纯碱策略停止}
OR STKLABEL='SH001'{上证指数策略停止}
OR STKLABEL='IH13' {50指数策略停止}
OR STKLABEL='AU30' {商品指数策略停止}
OR STKLABEL='AU31' {金属指数策略停止}
OR STKLABEL='AU32' {能源指数策略停止}
OR STKLABEL='AU33' {化工指数策略停止}
OR STKLABEL='AU34' {农产品指数策略停止}
OR STKLABEL='AU35' {油脂指数策略停止}
OR SPLITBARS(0)<OPENMINUTES(TIME) {当日除权到现在的周期数。主力合约换月停止策略}
OR CALLSTOCK(STKLABEL,VTCLOSE,6,-1)*1.03 < CALLSTOCK(STKLABEL,VTOPEN,6,0) {开盘价差大于3%停止策略}
OR CALLSTOCK(STKLABEL,VTCLOSE,6,-1)*0.97 > CALLSTOCK(STKLABEL,VTOPEN,6,0) {开盘价差大于3%停止策略}
THEN
EXIT; {定制品种策略停止,换月停止,纯碱品种交易模拟盘不支持限制停止}
{主力合约判断异常处理}
//本月:=MONTH(),LINETHICK0;
//主月:=STRTONUM( STRRIGHT(DYNAINFO(210),2) ),LINETHICK0;
IF (OPENPROFIT+NETPROFIT+(CASH(0)+CASH(1))/2)<0 THEN DRAWGBK(1,COLORRGB(255,0,0), COLORRGB(255,255,0),0);
IF (OPENPROFIT+NETPROFIT+(CASH(0)+CASH(1))/2)>0 THEN DRAWGBK(1,COLORRGB(0,255,0), COLORRGB(255,255,0),0);
IF (OPENPROFIT+NETPROFIT+(CASH(0)+CASH(1))/2)>=0 THEN
DRAWTEXTEX( 1,0,20,0,'/'+NUMTOSTR(MINUTE(),0)+'分/'+STKNAME+'/'+STKLABEL+'/'+DYNAINFO(210) +'/本月'+NUMTOSTR(MONTH(),0)+'/主月'+NUMTOSTR(STRTONUM( STRRIGHT(DYNAINFO(210),2) ),0),COLORRED);
ELSE
DRAWTEXTEX( 1,0,20,0,'/'+NUMTOSTR(MINUTE(),0)+'分/'+STKNAME+'/'+STKLABEL+'/'+DYNAINFO(210) +'/本月'+NUMTOSTR(MONTH(),0)+'/主月'+NUMTOSTR(STRTONUM( STRRIGHT(DYNAINFO(210),2) ),0),COLORGREEN);
{品种交易限制}
//IF 本月=主月 THEN EXIT; {如果本月是主月移仓换月停止交易,预留模块}
第一个模块在于判断,开盘时有除权数据,出现跳空价格情况下,指标计算会出现误差,限制子策略停止运行,以上策略只能用与日内交易,
第二个模块如果是多品种一个策略,可以控制那个品种策略不运行,这个可以通过子策略判断自动选择,这个你要自己加条件控制。
第三个模块显示当前子策略状态,反馈到图表中表述色彩。如果子策略停止运行,黑色,红色亏损,绿色盈利。
最后一个模块判断主月换月接近当月风险,策略退出,可以选择开启。