我在策略里面用到了getinifile/writeinifile读写本地文件,在图表程序化运行时,由于图表程序化的机制,图表中K线信号变化过程中也会执行策略的getinifile/writeinifile,有什么办法只让程序化中设置的K线走完运行一次?
我的意思是,图表程序化运行过程中,相当于执行了两次,1次是窗口的图表加载了K线并且有策略,信号变化会执行一次,另外的是程序化运行时,K线走完也会运行一次,有什么办法只在K线走完运行?
这个做不到的。可以限制只读写一次,但是如果按照你说的走完K去读写一次,那是不行的,对于代码执行而言没有这么个说法的。
如何限制只读写一次?在图表中加载策略后(非程序化),出现信号后会一直执行,加全局变量限制也没有用(只有走完K线变量才会固定值)
限制一个K内只赋值一次一般用另一种全局变量:http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm 这里用EXTGBDATA 来获取的全局变量。你可以看下这个全局变量的用法。
通常是用这个全局变量保存K线barpos或者time,来作为限制某个语句只执行一次的条件。
比如你保存了K线的time,那么只有当当前K的time不等于全局变量保存的值的时候,执行一次,执行完成之后将全局变量赋值成当前的time。
不过我觉得你用getinifile 这类函数在图表上的话其实有一定问题,因为他们也是只有最新值。你在图表上从历史到现在这个函数取到的值都是一样的,会影响策略信号的。