
等级: 新手上路
- 注册:
- 2025-4-22
- 曾用名:
|
请大神帮我看看这个双均线策略的交易执行部分,哪儿不对呀?怎么编译没问题,运行没问题,图表程式化的,图表上做多做空的提示信号出来了,交易都没有执行?
//以1,3,5为MA变量的定义。
ma1:ma(close,5);
ma3:ma(close,20);
ma5:ma(close,60);
//调试
con1:CROSS(MA1,MA5),linethick0; //开多
con2:CROSS(MA5,MA1),linethick0; //开空
con3:CROSS(MA5,MA3),linethick0; //平多
con4:CROSS(MA3,MA5),linethick0; //平空
//交易条件
KD:=CROSS(MA1,MA5),TFILTER;//开多
KK:=CROSS(MA5,MA1),TFILTER;//开空
PD:=CROSS(MA5,MA3),TFILTER;//平多
PK:=CROSS(MA3,MA5),TFILTER;//平空
//交易执行
//交易执行信号
开多:BUY(KD,手数,THISCLOSE,OPEN),TFILTER; //开多条件
平多:SELL(PD,手数,THISCLOSE,OPEN),TFILTER; //平多条件
开空:BUYSHORT(KK,手数,THISCLOSE,OPEN),TFILTER; //开空条件
平空:SELLSHORT(PK,手数,THISCLOSE,OPEN),TFILTER; //平空条件
//交易系统发布指令
if con1 and cs<次数 and holding=0 then BEGIN //开多
buy(1,手数,market); //符合条件就按照市价买入。
SPEAK(con1,'开多单啦');
cs:=cs+1; //为每次控制交易次数赋值,每次+1次,最多5次。
END
if con2 and cs<次数 and holding=0 then BEGIN //开空
buy(1,手数,market);
SPEAK(con2,'开空单啦');
cs:=cs+1;
END
if con3 and 开多>0 then BEGIN //平多
buy(1,开多,market); //清仓该品种的所有多单。
SPEAK(con3,'平仓多单啦');
cs:=0; //死叉出现就清仓,上限赋值为0,重新计数。
END
if con4 and 开空>0 then BEGIN //平空
buy(1,开空,market); //清仓该品种的所有多单。
SPEAK(con4,'平仓空单啦');
cs:=0; //死叉出现就清仓,上限赋值为0,重新计数。
END
|
|