//第一次开多单价格
nn1:barslast(HOLDING=0 AND KDTJ=1);
DD:REF(enterprice,nn1);
//第一次开空单价格
nn2:barslast(HOLDING=0 AND KKTJ=1);
KK:REF(enterprice,nn2);
请教老师,我写的取第一次开仓价格测试不对。帮忙看看问题出现在哪
谢谢!
也就是说初始建仓多单或者空单的价格,这里的价格可以是满足开仓条件的价格,也可以是实际成交的价格,分别怎么去取值。
可以用BARSSINCE函数,求得第一次条件成立的位置,然后再用ref找出该位置的价格
//第一次开多单价格
NN1:BARSSINCE(HOLDING=0 AND CROSS(C,HH20));
DD:REF(HH20,NN1);
//第一次开空单价格
NN2:BARSSINCE(HOLDING=0 AND CROSS(LL20,C));
KK:REF(LL20,NN2);
写出来不对,请老师帮忙看看错误在哪?
正确的写法应该怎么写?
此主题相关图片如下:qq图片20171208140508.png

aa: BARSSINCE(BUYCON );//取得第一次满足开多条件时的位置
bb: ref(ENTERPRICE,aa);//
我没有申明全局变量,建立了一个开多条件:KDTJ:IF(MACD>REF(MACD,1) AND MA1>MA2),1,0);
//第一次开多单价格
NN1:BARSSINCE(KDTJ=1);
DD:REF(ENTERPRICE,NN1);
这样写始终不对。请老师帮助给了正确的写法。谢谢!
1. 你现在的DD是要取得第一次开仓位置的前一次开仓价了,建议 DD:REF(ENTERPRICE,NN1);中, 把enterprise改成open 或 close;2. 最新K线上的价格可以按市价来,历史的成交价格实际是取不到的,可以按第二根K的开盘价来或按本根K的收盘价来
MA1:=MA(C,12); MA2:=MA(C,26);
DIFF : =EMA(C,12) - EMA(C,26);
DEA : =EMA(DIFF,9);
MACD : =2*(DIFF-DEA), COLORSTICK;
KDTJ:IF(MACD>REF(MACD,1) AND MA1>MA2,1,0);
KKTJ:IF(MACD<REF(MACD,1) AND MA1<MA2,1,0);
NN1:BARSSINCE(KDTJ=1);
DD:REF(C,NN1);
NN2:BARSSINCE(KKTJ=1);
KK:REF(C,NN2);
这是全部代码,怎么都不对。请教老师问题出现在哪?