日内每一次kdj金叉就开一手多,每一次kdj死叉就开一手空,一直拿到当天收盘价多空全部平仓?这个要怎么写
如果你是图表交易,那你得用2个指标,2个窗口交易。分别交易多空,否则单个图表上不能锁仓的。
代码如下:
input:n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;
kdjjc:cross(k,d);//kdj金叉
kdjsc:cross(d,k);
//多头
if kdjjc then buy(1,1,market);
if time=CLOSETIME(0) then sell(holding>0,holding,market);
//空头
//if kdjsc then buyshort(1,1,market);
//if time=CLOSETIME(0) then sellshort(holding<0,holding,market);
这是多头的指标。空头的话,你把空头部分注释去掉就行了,然后把多头部分注释掉。
因为单个图表上不能实现锁仓啊的,单个窗口上开多必须平空,开空必须平多。所以得弄2个指标,2个窗口操作。
[此贴子已经被作者于2019/11/15 16:57:40编辑过]
明白了, 那为什么我拿你写的这个这图上显示不全所以满足条件的机会,用历史回测上能把所以满足条件的机会都显示出来。就比如今天IF1分钟图上只显示2次开多,但是回测

此主题相关图片如下:1573808557(1).jpg


此主题相关图片如下:1573808579(1).jpg

有7次。实际上满足条件的是有7次开仓机会
不是,没有用复权k线。就是图上我对照kdj,今天满足开多有7次,但是图上就显示3次。
我是说你回测里面设置的复权,图表上没有。2个不一致,对比结果自然有差异了。
回测没有用复权k线

此主题相关图片如下:1574055327(1).jpg

数据量会影响到kdj里面一些值的运算。kdj里面用到的SMA函数对数据起始点比较敏感。
你这样:

此主题相关图片如下:temp.png

在加载在图表上的公式名称上右键-回测、
这样能尽量保持设置一致。
同样代码,我这边图上显示的都和你那里有差异。因为K线起点不一样,sma算的会有差异。 你回测和图表上K线起始位置不一致,会导致你现在这种情况。