我的需求是这样的:
一波流畅下跌行情中,是一直满足我持空的,但我不希望行情突然回调到前一根bar的c+3的位置。
我的伪代码片段是这样的
做空:=aaa;
防反弹:=bbb;
if holding<0 then begin
sellshort(防反弹,0,stop,c+3);
end
if holding=0 then begin
buyshort(做空,1,thisclose);
end
实际运行起来后,在反弹的那个位置,止损了,但,前一根bar的收盘价处又开了空了。
我认为:
既然已经走到了新的bar上了,判定完前一根的止损条件不就好了吗?
为什么还去修改历史?
还是这么想不对?
望指点啊!
图表是逐k的模式,每次都是会刷新历史所有k信号的。
你历史上的bar只要满足开空条件,就会出信号。
我觉得您可能没有回答我的问题。
代码是从上到下执行的,在执行触发的时候,事实上下一根bar已经出现了。
如果触发并完成平仓的动作,那么再开仓就相当于在修改历史了吧?
修改历史的原因有可能是因为虚拟持仓的检测机制,是必须等待bar走完,才会置位。
我觉得应该这样:
如果stop控制符判定了次周期的平仓条件得到满足后,直接执行次周期上的动作。
也就是说,直接跳出没有循环完的代码。
当前的产品好像不是这样设计的,是有什么难处吗?
stop用于图表回测时,是本周期满足条件,然后在次周期进行开仓。
这个和历史上信号是否有没有关系的,前面的k上是否有信号只和你那个条件满足有关系。