老师您好,我有个想法试了很多次都没写好,我大体写一下,请老师帮忙看一下大致是什么地方出错了
CC:=REF(C,BARSLAST(CROSS(diff,dea)));//取上次MACD金叉的收盘价;
BB:=REF(C,1);//得到昨天的收盘价
DD:=IF(ENTERVOL=0,CC,BB);//判断当前收否有持仓,如果没有持仓的话,取CC的价格,如果有持仓的话,取昨天的收盘价。
SS:=5;
DD1:=DD+SS;
DD2:=DD+2*SS;
DD3:=DD+3*SS;
EE1:=DD-SS;
EE2:=DD-2*SS;
EE3:=DD-3*SS;
if holding=0 and cross(DIFF,DEA),THEN BEGIN//判断当根K线有没有持仓,且出现金叉时,买入十手多单
BUY(1,10,MARKET);
END;
IF holding>=10 and (diff>dea AND BETWEEN(C,dd1,DD2)),THEN BEGIN//判断持仓数是否大于等于10,且价位处在DD1与DD2之间,如果满足,则平仓五手
SELL(1,5,MARKET);
END;
IF holding>=5 and (diff>dea AND BETWEEN(C,DD2,DD3)),THEN BEGIN判断持仓数是否大于等于5,且价位处在DD2与DD3之间,如果满足,则平仓五手
SELL(1,5,MARKET);
END;
if holding>=0 and (diff>dea and between(c,ee1,ee2)),then begin
buy(1,5,market);
end;
if holding>=0 and (diff>dea and between(c,ee2,ee3)),then begin
buy(1,5,market);
end;
我也不知道哪写错了,我想表达的意思是:当新K线出来,首先要判断下有没有持仓,如果没有持仓,判断下MACD情况,如果有金叉出现,则开十手多单。如果有持仓的话,判断当前价位处于什么位置,如果处在EE1与EE2之间,加5手多单,如果处在EE2与EE3之间,再加5手多单,如果处在DD1与dd2之间,平5手多单,处在dd2与dd3之间,再平5手多单。
----------------------DD2 平5手
-----------------------DD1 平5手
--------------------- DD 开10手多单
---------------------EE1
---------------------EE2 加5手
---------------------EE3 加5手
麻烦老师了
DD:=IF(ENTERVOL=0,REF(C,BARSLAST(CROSS(diff,dea)),REF(C,1));//判断当前是否有持仓,如果没有持仓的话,取MACD金叉时的收盘价,如果有持仓的话,取前一天的收盘价的价格。
这段话写的对是吧。
以下是引用如意蝶在2017/9/1 11:14:37的发言:
DD:=IF(ENTERVOL=0,REF(C,BARSLAST(CROSS(diff,dea)),REF(C,1));//判断当前是否有持仓,如果没有持仓的话,取MACD金叉时的收盘价,如果有持仓的话,取前一天的收盘价的价格。
这段话写的对是吧。
代码是对的。不过你要判断是否有持仓,直接用holding=0判断吧。