开多单后,第一次C<MA30,此为条件1,当后面出现第一次MACD死叉,为条件2. 达到这两个条件,平仓。求这个模型
注意:顺序必须按照1到2;也不是C<MA30&&MACDsc
我仔细想了下。你这个需求有逻辑漏洞的。
数据足够的时候 在macd死叉的位置 往前找肯定能找到一个c<ma30,也就是说等于是macsc就平仓就行了。你这个限制其实不够的。
macdjc 以及你说的第一次c<ma30 (其实就是cross(ma(c,30),c)) 都是交替反复出现的。
举个例子吧:
majc macdjc macdsc macdjc macdsc masc macdjc macdsc
上面 假设是几个金叉死叉出现位置。三个macdsc位置可以说都满足 第一次c<ma30 之后macdsc.
不是的,有些是没有破均线,但是死叉了。如果是按照你说的MACD死叉就平了,那是不准确的,我现在是30均线,那么万一是100均线呢?清帮我再想下,我主要是对函数不会
p:=26;
s:=12;
m:=9;
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA :=EMA(DIFF,M);
MACD :=2*(DIFF-DEA);
MACDSC:CROSS(DEA,DIFF);//死叉
MA30:MA(C,30);
cd:count(c<MA30,ENTERBARS+2)>=1 and not(C<MA30) and count(MACDSC,ENTERBARS+2)=1 and MACDSC and holding>0;
if cd then
begin
测试:sell(holding>0,holding,market);
end
如果用的是market指令,使用上述代码,如果是marketr这种,因为ENTERBARS返回值原因,改成ENTERBARS+1即可。