螺纹钢主力连续,15分钟周期,图表程序化交易,走完一根K线模式(设置见图3)。
2月22日9:15的K线上策略平多开空信号成立,在9:30的K线上开启策略,由于没有多单,系统自动进行开空下单,所有账户均已成交(通过图2,系统中调出的下单日志可以看出)。
这个期间,信号一直没有发生改变,且晚上20:00已重启电脑,重新进入系统,信号一直是对的。
2月22日22:20 正在图表程序化交易中,9:15K线上的信号突然发生改变,变成9:45K线上的平多开空信号(见图1)。
重启电脑后,你图上加载的K线数量是否发生了变化?如果你的条件对K线数量比较敏感的话,加载的K线数量不同,那信号也可能会发生变化的。可以通过指定K线开始时间,严格固定住K线数量,或开启程序化前,输出barpos看下当前加载的K线数量是多少。
引起历史上的信号发生变化的可能因素是K线的起始位置发生变化,或者是引用了未来数据,例如是小周期引用大周期这类情况。如果你的条件中有用到EMA或引用MACD指标或小周期引用大周期数据,这种情况对数据的敏感度更高。可以指定K线的开始时间,严格限定K线的起始位置,再使用debugfile输出各个条件的值,记录下历史上各个条件满足时候的值是多少,看后面是否发生变化,若发生了变化,方便查找原因。
举例说明:
MA3:MA(C,3);
MA5:MA(C,5);
BK:= CROSS(MA3,MA5);
BP:= CROSS(MA5,MA3);
debugfile('D:\test.txt','MA3的值=%.2f',MA3);
debugfile('D:\test.txt','MA5的值=%.2f',MA5);
debugfile('D:\test.txt','BK的值=%.2f',BK);
debugfile('D:\test.txt','PK的值=%.2f',PK);
以上就是输出这4条语句的值,你可以根据需要输出你需要那个值是多少,记录下条件满足的时候,各个条件的值是多少。
DATETOD1970(DATE)<DATETOD1970(1140401)
请问这句表达出来是什么意思?a:DATETOD1970(DATE)<DATETOD1970(1140401);
若K线的日期距离1970年1月1日的天数小于14年4月1日距离1970年1月1日的天数,则a返回的值是1,否则为0。