老师:
买入后,当天盈利一个固定数额(比如2000元)止盈,为什么我写的显示出来都不正确
开多后
pdj:=(H-ENTERPRICE)*MULTIPLIER*手数;
sell(pdj>=2000,0,limitr,enterprice+2000/(MULTIPLIER*手数));
好像结果都不对。
请教老师正确的写法。
如果你止盈之后不再开仓 可以用资金变化来处理。
当前资金-当天开始的资金
star:ref(asset,TODAYBAR);//当天初始资金
cond:asset-star>=2000 and holding>0;
sell(cond,0,limitr,enterprice+2000/(MULTIPLIER*手数));
如果后面还要继续开仓的话:
可以考虑直接使用这个函数OPENPROFIT
照理,我用以下写法表示也没错啊
开多浮盈:if(holding>0,(H-ENTERPRICE)*MULTIPLIER*手数,DRAWNULL);
开空浮盈:if(holding<0,(ENTERPRICE-L)*MULTIPLIER*手数,DRAWNULL);
1.asset这个返回值不是实际账号的盈亏,是图表上的模拟资金,和实际账号盈亏不一致的。你是和实际账号栏的盈亏进行对比的吗?
2.函数是不分软件版本的。不同版本限制的是软件部分功能。
3.图表上无法根据实际账号盈亏来执行开平操作的,因为图表上无法获取实际账号的盈亏情况。
按照图表逻辑你这个代码应该是对的,不过你这里用H-ENTERPRICE 可以考虑换成C-ENTERPRICE H表示的是在当个K最高盈利。
这样的话有两个问题:就是回测和实际交易(图表程序化)分别应该怎么写?
可以的啊,你怎样写对回测都是不影响的。 H-ENTERPRICE和C-ENTERPRICE 主要区别是前者稳定,后者在实际交易时候能返回实时的情况,是可能不断变动的,从而导致信号变动。
开多浮盈:=if(holding>0,(H-ENTERPRICE)*MULTIPLIER*手数,DRAWNULL);
开空浮盈:=if(holding<0,(ENTERPRICE-L)*MULTIPLIER*手数,DRAWNULL);
sell(开多浮盈>n,0,limitr,(ENTERPRICE+N/MULTIPLIER*手数)-滑点);
sellshort(开空浮盈>n,0,limitr,(ENTERPRICE-N/MULTIPLIER*手数)+滑点);
这个可以用于回测?
那实盘交易就必须用asset是吗