这个公式交易判断MA1、MA2 是用当日收盘价,交易的时间是30分钟k线当日第二根k线开盘。
其实有没有闪烁跑下就知道了
交易条件判断的时候回溯了
回溯也是用的当日收盘价。这里未来函数比较隐秘。
第一个30分钟k线回溯是昨日的,第二个30分钟k线就变成了当日收盘价计算的ma1、ma2.
close是当根k线的收盘价,不是当日的收盘价,你是不是搞错了什么东西
我好像想明白你的理解角度了
根据你前面的信息,我推测你公式加载在30分钟周期上的。
那么data0是30分钟线,data1是日线
MA1计算的时候是没有回溯的,日线MA1又赋值给30分钟的MA1
且按照Data1.SetBasePeriod(Data0.Frequency); 在历史K线上30分钟运行一次
MA[1]在第一根30分钟k线回溯是昨日的,第二个30分钟k线回溯的时候是上一根30分钟K线的数据,并非当根正在闪动的bar
是这个意思,回测时这样第二个30分钟bar就会满足开仓条件。而不是下一个交易日满足开仓条件。
前面的图没注意多加了图层 有误导 换一个
满足开仓条件的bar计算时用到当日收盘价,我回测这个公式收益异常高,然后发现这个问题。
我理解你的意思
但你没有理解我的意思
或者 没有理解要使用“Data1.SetBasePeriod(Data0.Frequency); "这行代码的意义
为什么要把大周期信号放到小周期上做?为了使信号能更快的被执行,日线信号回溯就滞后很多,会错过行情
为了不发生闪烁,所以使用回溯
为了防止历史小周期K线取到大周期的未来数据,所以使用SetBasePeriod函数
为什么要把data1的ma赋值给data0,因为data1还日内会变动,而data0作为小周期,只要进入到下一根k线,上一根k线作为历史k线,上面的series数据将被固定不动。
有可能我仍然有没考虑到的地方,但你提的问题肯定是不存在的
除非你能依次打印出你所使用的数据,明确使用的是未来数据
明白了,我以前没用过Data1.SetBasePeriod(Data0.Frequency)这个函数,用这个函计算日线MA1,MA2时当前Close用的是Data0的当前bar的bar的Close,谢谢!
公式名TBDUALMATRADE2