真格编程小技巧
一,真格的运行机制是事件驱动的,即代码未必一定会从上到下运行。
怎样完整地正确地理解上面这句话话呢?即还有一种情况,如果没有事件驱动时则代码是会从上到下运行的。
二,事件驱动的另一个好处是,在某一个驱动事件中给全局变量赋值后,在另一个事件驱动的代码运行过程中会及时取到这个全局变量的值。
三,为了兼顾事件驱动运行机制和代码会或者不会从上到下运行的机制,可以在K线驱动事件或者行情驱动事件里这样排列代码顺序:撤单代码、平仓代码、开仓代码。
这样做的的好处是,交易的动作顺序必然是先开仓后平仓、平仓后再开仓或者或者直接再加仓。撤单,在开仓或者平仓中都也许会发生、也许不会发生。
那么,试想下超高频交易下的代码运行顺序:
第一轮(代码从上到下运行一遍称为一轮):撤单代码不会被执行,平仓代码不会被执行,开仓代码先被执行。
第二轮:针对开仓动作的撤单代码也许执行也许不执行,平仓代码也许执行(平仓条件满足)、也许不执行(平仓条件满足),开仓代码也许执行(开仓条件满足)、也许不执行(开仓条件不满足)。
第三轮:针对开仓动作或平仓动作的撤单代码也许执行也许不执行,平仓代码也许执行(平仓条件满足)、也许不执行(平仓条件满足),开仓代码也许执行(开仓条件满足)、也许不执行(开仓条件不满足)。
第四轮:.......
四,撤单代码、平仓代码、开仓代码分开写,别混着写,同时可以在撤单代码、平仓代码、开仓代码中设置开关来在撤单代码、平仓代码、开仓代码之间转移控制权。
五,注意在撤单代码、平仓代码、开仓代码处理全局变量的初始化,这个主要给予你的交易逻辑。
六,有些全局变量需要放在开始事件里。有些全局变量需要放在初始化事件里。能不用全局变量尽量不用。
一点浅见,献丑,恳请各位砖家拍砖
您尚未登录,请 登录 真格量化发表回复
点赞!
其实事件模型是异步编程常见的一种模式,真格一定程度上以经把一些更难处理的(临界区)之类的事情先处理掉了
嗯, 这一段说得很好