开单规律观察分析


程序在实际运行中出现的开单规律观察分析:

从观察到的情况来看,当价格单边上升后,往往会出现连续空单1,2,3。当价格拉升比较大后,开始出现回落。这时经常会出现连开三个多单的情况,原因分析如下:

由于程序设定最多只能开3单,所以当价格回落达到开多单条件时并不能马上开多单,而这时价格也达到关空单条件,所以必然会先关掉一个空单,

因为: (total>0 && total<2 && (Ask-OrderOpenPrice())>B)

(total>1 && total<3 && (Ask-OrderOpenPrice())>C)

现在属于有2个空单,也满足开多单的条件,但总计是排在第三单,所以按C间隔执行,开第一多单。

这里为啥不先执行关其他空单?分析后发现这应该说是和程序运行次序有关。

关掉空单后,先运行检查多单条件,所以应该先开多单;往下如果价格还在下面,则继续关掉后面一个空单,然后再开一个多单;第三个空单情况相同,要是条件合适继续开第三个多单。

(注:会不会出现有1个空单2个多单后价格上升,到上面再把多单关掉,剩下一个空单?应该是会有这个情况出现的。)

出现3个多单后,价格上行并达到多单关单条件,但关掉第一多单后并没有开空单,等第二第三全关了后仅出现按第一单开单条件开了一个空单。什么原因?

这就是说关掉多单并没有同时符合开空单。

情况如此,当关掉第一多单后,还剩2个多单,此时可能无法满足条件:

(total>1 && total<3 && (Ask-OrderOpenPrice())>C),即C间隔没有满足,所以不会开空单,

这样就会关掉第二多单,但同样会因B间隔没有满足而不开空单。直到关掉最后一个多单后,A可以满足,所以才有可能开一个空单。

但这里就会出现多种情况,要取决于当时可能达到的间隔,突然大幅拉升,就会开几个空单。

上面这种开单情况是不在原始设计思路里的,也就是前面日志里提及的“歪打正着”,现在终于搞明白了。而且资金管理里的开单手数也和原来的想法有差异,是个动态参数。