语法上没有错误。这种建议你查看当时输出的DEBUGFILE的值。在金字塔上条件不成立自然不会有委托。
后台和图表机制不一样。所以图表和后台对比没有意义。金字塔的后台没有虚拟持仓等概念。都是直接操作实际账户的。
图表计算的起始位置是不会变的。后台的k线数量是固定的。在数据量上就存在差异。
1.图表
图表执行是从第一个k线开始逐根计算。在这个计算过程中,会产生虚拟的持仓(或者叫理论持仓)等数据。当最新k上满足开仓条件时,图表自己会虚拟开仓。然后自己的真实账户跟着去下单。在最新k上发生平仓条件成立时,那么图表中需要有虚拟的持仓才能有效进行虚拟平仓。然后账户才会跟着发平仓执行到柜台。
图表交易的过程可以理解为:图表自身与实际账户之间是串联关系。图表自身的仓位等情况都是根据历史k计算得到的。
2.后台
后台是为了提高策略的执行效率,一般在使用时都需要指定k线数量。而后台的执行过程不存在虚拟持仓的概念。都是直接对真实账户进行操作的。包括仓位判断,追撤单等操作。
注:上面两条中说的真实账户,包括模拟、仿真、实盘。
图表和后台理论,执行结果应该是一致的。但是实际使用过程中图表和后台对比没有任何参考意义。
造成不一致的原因如下:
1.使用k线数量不同。尤其使用ema这类对k线值比较敏感的函数。只要k线数量不同其结果自然不同。
2.图表中k线计算的起始位置不会随着k线的增加而发生变化。而后台在限制k线数量后,使用保持该数量。从而造成k线起始位置与图表起始位置不同。
3.图表中k线图和后台使用的数据,两个复权设置不同。(连续合约中,k线图左上角有个红色的"$",代表复权。后台使用连续时也要设置复权否者数据不一致)
4.不同函数之间可能存在差异性。
5.信号闪烁。从而造成历史信号与实际开仓存在差异。
对于后台,您只能通过debugfile跟踪记录当时的结果。才能真正知道当前的情况。
你可以尝试把图表k线数量限制的与后台k线数量一致后,在尝试对比。这样两者之间的结果可能更接近。