龙听期货论坛's Archiver

C
+
+


 微信: QQ:

龙听 发表于 2019-8-17 08:53

信号脚本计算机制(第二部分)

[p=22, 2, left][b][font=inherit][size=13pt][font=inherit]四、[/font][font=宋体]信号脚本计算的驱动因素[/font][/size][/font][/b][/p][p=22, 2, left][font=宋体]信号脚本计算的驱动因素有如下几种方式,通常的方式是第一种方式,即[/font][font=inherit]tick[/font][font=宋体]驱动的计算:开启[/font][font=inherit]bar[/font][font=宋体]内模式下,信号脚本是基于每笔[/font][font=inherit]tick[/font][font=宋体]进行计算,包括开盘[/font][font=inherit]tick[/font][font=宋体]、[/font][font=inherit]bar[/font][font=宋体]内[/font][font=inherit]tick[/font][font=宋体]、收盘[/font][font=inherit]tick[/font][font=宋体];而未开启[/font][font=inherit]bar[/font][font=宋体]内模式,信号脚本是基于收盘[/font][font=inherit]tick[/font][font=宋体]或者开盘[/font][font=inherit]tick[/font][font=宋体]进行计算。[/font][/p][p=22, 2, left][font=宋体]除了[/font][font=inherit]tick[/font][font=宋体]驱动的计算,信号脚本还可以基于鼠标点击、关键字[/font][font=inherit]recalclastbarafter[/font][font=宋体]、经纪商部位变化、策略部位变化进行计算,但是需要都需要进行额外的代码处理或者特别的设置,这里需要注意的是,除了[/font][font=inherit]tick[/font][font=宋体]驱动的计算外,其它计算方式不能用于回测中。[/font][/p][p=22, 2, left][font=inherit][font=&quot][size=7pt]1. [/size][/font]
[/font][font=宋体]当新的[/font][font=inherit]bar/tick[/font][font=宋体]出现时[/font][/p][p=22, 2, left][font=宋体]我们知道一根[/font][font=inherit]bar[/font][font=宋体]由一笔开盘[/font][font=inherit]tick[/font][font=宋体]、若干笔[/font][font=inherit]bar[/font][font=宋体]内[/font][font=inherit]tick[/font][font=宋体]、一笔收盘[/font][font=inherit]tick[/font][font=宋体]组成,而开盘[/font][font=inherit]tick[/font][font=宋体]、[/font][font=inherit]bar[/font][font=宋体]内[/font][font=inherit]tick[/font][font=宋体]都是从交易所接收的,只有收盘[/font][font=inherit]tick[/font][font=宋体]是[/font][font=inherit]MC[/font][font=宋体]底层产生的;在开启[/font][font=inherit]bar[/font][font=宋体]内模式下,信号脚本会基于每笔[/font][font=inherit]tick[/font][font=宋体]执行一次计算。[/font][/p][p=22, 2, left][font=宋体]在未开启[/font][font=inherit]bar[/font][font=宋体]内模式下,信号脚本基于每根[/font][font=inherit]bar[/font][font=宋体]只会计算一次,或者基于开盘[/font][font=inherit]tick[/font][font=宋体]进行计算,或者基于收盘[/font][font=inherit]tick[/font][font=宋体]进行计算;是基于开盘[/font][font=inherit]tick[/font][font=宋体]还是收盘[/font][font=inherit]tick[/font][font=宋体]是基于信号脚本的代码中是否含有[/font][font=&quot]Open next bar[/font][font=宋体]、[/font][font=&quot]Date next bar[/font][font=宋体]、[/font][font=&quot]Time next bar[/font][font=宋体]、[/font][font=&quot]DateTime next bar[/font][font=宋体]、[/font][font=&quot]Time_s next bar[/font][font=宋体]这[/font][font=inherit]5[/font][font=宋体]个语句之一,也就是引用下一根[/font][font=inherit]bar[/font][font=宋体]的数据;当信号脚本中含有引用下一根[/font][font=inherit]bar[/font][font=宋体]数据的语句时(至少含有[/font][font=inherit]5[/font][font=宋体]个语句之一),信号脚本会基于下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体]执行计算;当信号脚本中不含有引用下一根[/font][font=inherit]bar[/font][font=宋体]数据的语句时,信号脚本会基于当根[/font][font=inherit]bar[/font][font=宋体]的收盘[/font][font=inherit]tick[/font][font=宋体]执行计算。(“[/font][font=inherit]Set[/font][font=宋体]系列关键字”这篇帖子中也提到引用下一根[/font][font=inherit]bar[/font][font=宋体]数据的语句)。[/font][/p][p=22, 2, left][font=inherit]    Bar[/font][font=宋体]内模式与非[/font][font=inherit]bar[/font][font=宋体]内模式的区别之一就是是否基于[/font][font=inherit]bar[/font][font=宋体]内[/font][font=inherit]tick[/font][font=宋体]执行信号计算,这个从表面意思上也可以意会。[/font][/p][p=22, 2, left][font=宋体]2. [/font][font=宋体]鼠标在图表上点击[/font][/p][p=22, 2, left][font=宋体]当在信号脚本中加入语句“[/font][font=&quot][[/font][font=&quot]processmouseevents[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][font=宋体]”时,我们可以用鼠标在图表上进行点击,点击之后,信号脚本就会基于这个点击的操作进行计算,每点击一次信号就执行一次计算,每次计算都是基于最新的[/font][font=&quot]bar[/font][font=宋体]最新的行情执行计算;可以用鼠标左键点击图表执行计算,也可以使用鼠标右键点击图表执行计算。[/font][/p][p=22, 2, left][font=inherit]3. Recalclastbarafter[/font][/p][p=22, 2, left][font=宋体]信号代码中若出现[/font][font=宋体]“[/font][font=&quot]recalclastbarafter[/font][font=&quot]([/font][b][font=&quot]20[/font][/b][font=&quot]);[/font][font=宋体]”这个语句,那么当信号脚本超过[/font][font=&quot]20[/font][font=宋体]秒没有执行计算时,那么信号脚本就会执行一次计算;[/font][font=宋体]“[/font][font=&quot]recalclastbarafter[/font][font=&quot]([/font][font=&quot]N[/font][font=&quot]);[/font][font=宋体]”,关键字[/font][font=&quot]recalclastbarafter[/font][font=宋体]后面的参数[/font][font=&quot]N[/font][font=宋体]是以秒为单位的,[/font][font=&quot]N[/font][font=宋体]需要自行设置,可以是整数也可以是小数,这个语句的作用就是当信号脚本超过[/font][font=&quot]N[/font][font=宋体]秒没有执行计算,该语句就会促使信号脚本执行一次计算;举例,当交易所收盘后,没有[/font][font=&quot]tick[/font][font=宋体]行情驱动信号执行计算并且没有其它因素驱动信号执行计算,那么信号脚本会每隔[/font][font=&quot]N[/font][font=宋体]秒执行一次计算。[/font][/p][p=22, 2, left][font=宋体]4. [/font][font=宋体]经纪商部位变化和策略部分变化[/font][/p][p=22, 2, left][font=宋体]关于经纪商部位和策略部位这两个概念,可以在帖子“图表部位、策略部位、经纪商部位”中学习一下;当经纪商部位变化或者策略部分变化时,若需要让信号脚本执行相应的计算,我们需要在“策略属性”[/font][font=inherit]-[/font][font=宋体]“自动交易”[/font][font=inherit]-[/font][font=宋体]“重新计算”中进行设置一下,如下图所示:[/font][/p][p=22, 2, left][attach]11788[/attach]
[/p][p=22, 2, center][font=宋体]图[/font][font=inherit]3. [/font][font=宋体]重新计算[/font][/p][p=22, 2, left][font=宋体]  图[/font][font=inherit]3[/font][font=宋体]中圈出来的地方,有两个选项:当勾选“市场部位变动”时,那么当委托单在交易所实际成交了,也就是经纪商部位变动了,那么信号就会基于经纪商部位的变动执行一次计算;当勾选“委托单成交”时,那么当策略部位变动了,那么信号就会基于策略部位的变动执行一次计算。[/font][/p][p=22, 2, left][font=宋体]5. [/font][font=宋体]关键字[/font][font=inherit]getappinfo[/font][/p][p=22, 2, left][font=宋体]关键字[/font][font=inherit]getappinfo[/font][font=宋体]的用法,在这里并不打算系统阐述,该关键字后面可以有各种参数,我们只里只介绍参数[/font][font=inherit]aicalcreason[/font][font=宋体]的用法;“[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”返回信号脚本执行计算的原因,上面我们已经介绍了信号脚本执行计算的各种驱动因素,也就是各种原因,每种原因都会对应[/font][font=宋体]“[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”的一个返回值:[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]当信号脚本基于[/font][font=inherit]tick[/font][font=宋体]驱动执行计算时,“[/font][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”语句中[/font][font=&quot]value1[/font][font=宋体]等于[/font][font=&quot]0[/font][font=宋体],也就是[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回的值是[/font][font=&quot]0[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]当信号脚本基于鼠标在图表上左击而执行计算时,“[/font][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”语句中[/font][font=&quot]value1[/font][font=宋体]等于[/font][font=&quot]1[/font][font=宋体],也就是[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回的值是[/font][font=&quot]1[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]当信号脚本基于鼠标在图表上右击而执行计算时,“[/font][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”语句中[/font][font=&quot]value1[/font][font=宋体]等于[/font][font=&quot]2[/font][font=宋体],也就是[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回的值是[/font][font=&quot]2[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]当信号脚本基于关键字[/font][font=&quot]recalclastbarafter[/font][font=宋体]而执行计算时,“[/font][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”语句中[/font][font=&quot]value1[/font][font=宋体]等于[/font][font=&quot]3[/font][font=宋体],也就是[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回的值是[/font][font=&quot]3[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]当信号脚本基于经纪商部位变动而执行计算时,“[/font][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”语句中[/font][font=&quot]value1[/font][font=宋体]等于[/font][font=&quot]4[/font][font=宋体],也就是[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回的值是[/font][font=&quot]4[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]当信号脚本基于策略部位变动而执行计算时,“[/font][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][font=宋体]”语句中[/font][font=&quot]value1[/font][font=宋体]等于[/font][font=&quot]5[/font][font=宋体],也就是[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回的值是[/font][font=&quot]5[/font][/p][p=22, 2, left][font=宋体]通过[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]的使用,我们可以在信号脚本中对当前信号计算的驱动因素进行识别和判断,并且信号在后续的计算中执行相应的逻辑,例如,当[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot])[/font][font=宋体]返回值为[/font][font=&quot]4[/font][font=宋体]时,在信号中就可以判断当前的委托单在交易所实际成交了。[/font][/p][p=22, 2, left][font=inherit]五、[/font][font=宋体]委托单的发单机制[/font][/p][p=22, 2, left][font=宋体]终于写到第五部分内容了,我想说这部分内容是最难的,也是最难测试的,花费了一个月时间进行测试,因为需要等到极端的行情才能测试出结果,有些还需要进行测试好几遍以便进行对比确认,而这部分内容也很难归纳,如果只是简单的将测试结果进行罗列,那样会很不容易理解。[/font][/p][p=22, 2, left][font=宋体]对于这一章节,前[/font][font=inherit]4[/font][font=宋体]节的内容的阐述都是以实盘情况进行阐述,不涉及到回测的内容;若需要涉及到回测,我要特别强调一下。[/font][/p][p=22, 2, left][font=宋体]1. [/font][font=宋体]委托单条件判断和委托单触发[/font][/p][p=22, 2, left][font=宋体]这里首先我们需要理解两个概念,一个是“委托单条件判断”,另一个是“委托单触发”,这两个概念会贯穿这部分的内容,我们先来看一下代码例子,如下:[/font][/p][p=22, 2, left][font=&quot]if[/font] [font=&quot]condition1[/font] [font=&quot]then[/font][/p][p=22, 2, left]
[font=&quot]buy[/font] [font=&quot]next[/font] [font=&quot]bar[/font] [font=&quot]at[/font] [font=&quot]market[/font][font=&quot];[/font][/p][p=22, 2, left][font=宋体]条件[/font][font=inherit]condition1[/font][font=宋体]是[/font][font=inherit]next bar[/font][font=宋体]委托语句的判断条件,当条件[/font][font=inherit]condition1[/font][font=宋体]成立时,还需要等待下一笔[/font][font=inherit]tick[/font][font=宋体]的触发,才能将买入市价单发送出去;也就是说买入市价单是否能发送到交易所,涉及两个步骤,缺一不可,那就是首先信号脚本执行计算必须进行“委托单条件判断”这个步骤,并且条件成立,然后需要“委托单触发”这个步骤,才可以将[/font][font=inherit]next bar[/font][font=宋体]的委托单发送到交易所;这里只是通过一个简单的例子来阐述这两个概念,那么对于“委托单条件判断”和“委托单触发”就光这两个步骤在非[/font][font=inherit]bar[/font][font=宋体]内模式、[/font][font=inherit]bar[/font][font=宋体]内模式、[/font][font=inherit]bar[/font][font=宋体]外模式、信号脚本不同的计算驱动因素会表现的不一样。[/font][/p][p=22, 2, left][font=inherit]This bar[/font][font=宋体]和[/font][font=inherit]next bar[/font][font=宋体]主要有两点区别,一个区别就是,[/font][font=inherit]this[/font][font=宋体]和[/font][font=inherit]next[/font][font=宋体]的区别,这正如它们的名称一样,[/font][font=inherit]next bar[/font][font=宋体]委托单需要经过两个步骤才能发送到交易所,也就是上面说到的两个步骤,而[/font][font=inherit]this bar[/font][font=宋体]委托单只需要一个步骤,也可以说“委托单条件判断”和“委托单触发”两个步骤对于[/font][font=inherit]this bar[/font][font=宋体]委托单来说是一个步骤,“委托单条件判断”的同时,若条件成立就“委托单触发”立即发送到交易所;另一个区别是,[/font][font=inherit]next bar[/font][font=宋体]有[/font][font=inherit]bar[/font][font=宋体]内模式、[/font][font=inherit]bar[/font][font=宋体]外模式,也就是说,[/font][font=inherit]next bar[/font][font=宋体]委托单可以基于[/font][font=inherit]bar[/font][font=宋体]的开盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态、收盘状态、[/font][font=inherit]bar[/font][font=宋体]外状态进行“委托单条件判断”,基于[/font][font=inherit]bar[/font][font=宋体]的开盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态、收盘状态、[/font][font=inherit]bar[/font][font=宋体]外状态进行“委托单触发”,而[/font][font=inherit]this bar[/font][font=宋体]只能基于收盘状态进行“委托单条件判断”和“委托单触发”。所以,在总体上[/font][font=inherit]this bar[/font][font=宋体]的使用是受限制的,不如[/font][font=inherit]next bar[/font][font=宋体]的使用功能丰富,但是从速度上说,[/font][font=inherit]this bar[/font][font=宋体]更快;若您对[/font][font=inherit]this bar[/font][font=宋体]和[/font][font=inherit]next bar[/font][font=宋体]的区别没有掌握或者说您没有完全掌握这篇帖子,那么建议您不要使用[/font][font=inherit]this bar[/font][font=宋体]委托语句。在本文的后面不再对[/font][font=inherit]this bar[/font][font=宋体]进行阐述,请参考[/font][font=inherit]next bar[/font][font=宋体]的阐述进行理解[/font][font=inherit]this bar[/font][font=宋体]的功能。[/font][/p][p=22, 2, left][font=宋体]2. [/font][font=宋体]自动交易进行中[/font][/p][p=22, 2, left][font=宋体]这里要区分一个两个标题,“自动交易进行中”和“开启自动交易的瞬间”,这是因为[/font][font=inherit]next bar[/font][font=宋体]委托单需要两个步骤,当这两个步骤都发生在自动交易进行中的时候,就是“自动交易进行中”所要阐述的内容;当“委托单条件判断”这个步骤在开启自动交易之前,而“委托单触发”这个步骤发生在开启自动交易之后,就是“开启自动交易的瞬间”这个标题所要阐述的内容了。之所以这样分开,有两个考虑,一个是这两种情况下,[/font][font=inherit]next bar[/font][font=宋体]委托单表现的不一样,另一个是实盘有些技巧也是需要这部分内容的。[/font][/p][p=22, 2, left][font=宋体]2.1 [/font][font=宋体]未开启[/font][font=inherit]bar[/font][font=宋体]内模式[/font][/p][p=22, 2, left][font=宋体]未开启[/font][font=inherit]bar[/font][font=宋体]内模式,也就是非[/font][font=inherit]bar[/font][font=宋体]内模式;非[/font][font=inherit]bar[/font][font=宋体]内模式与[/font][font=inherit]bar[/font][font=宋体]内模式的一个区别,就是非[/font][font=inherit]bar[/font][font=宋体]内模式下“委托单条件判断”这个步骤只能基于开盘状态或者收盘状态进行执行,而[/font][font=inherit]bar[/font][font=宋体]内模式下“委托单条件判断”这个步骤可以基于开盘状态、收盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态进行执行,这个区别也正如它们的名称一样,前者是“[/font][font=inherit]bar[/font][font=宋体]边”,后者是“[/font][font=inherit]bar[/font][font=宋体]内”;当然非[/font][font=inherit]bar[/font][font=宋体]内模式和[/font][font=inherit]bar[/font][font=宋体]内模式下,“委托单触发”这个步骤都可以基于开盘状态、收盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态进行执行,而不能基于[/font][font=inherit]bar[/font][font=宋体]外状态进行执行。[/font][font=inherit]Bar[/font][font=宋体]外模式下,这两个步骤都可以基于[/font][font=inherit]bar[/font][font=宋体]的开盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态、[/font][font=inherit]bar[/font][font=宋体]的收盘状态、[/font][font=inherit]bar[/font][font=宋体]外状态进行执行,是否基于[/font][font=inherit]bar[/font][font=宋体]外状态进行这两个步骤的执行,是[/font][font=inherit]bar[/font][font=宋体]外模式与非[/font][font=inherit]bar[/font][font=宋体]内模式、[/font][font=inherit]bar[/font][font=宋体]内模式的区别。我们前面说过,[/font][font=inherit]bar[/font][font=宋体]有[/font][font=inherit]4[/font][font=宋体]个状态,[/font][font=inherit]bar[/font][font=宋体]的开盘状态、[/font][font=inherit]bar[/font][font=宋体]的收盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态、[/font][font=inherit]bar[/font][font=宋体]外状态,这里为了下面的叙述严谨,我两次强调一点,[/font][font=inherit]bar[/font][font=宋体]的开盘状态是以接收到开盘[/font][font=inherit]tick[/font][font=宋体]为基准,而且这只是一个瞬间,并不是一个持续的状态;[/font][font=inherit]bar[/font][font=宋体]的收盘状态是以接收到收盘[/font][font=inherit]tick[/font][font=宋体]为基准,这也只是一个瞬间[/font] [font=宋体],并不是一个持续的状态;[/font][font=inherit]bar[/font][font=宋体]内状态,是指在当根[/font][font=inherit]bar[/font][font=宋体]开盘之后并且在当根[/font][font=inherit]bar[/font][font=宋体]收盘之前,这个期间信号脚本执行的计算(对计算的驱动因素不限制);[/font][font=inherit]bar[/font][font=宋体]外状态,是指在当根[/font][font=inherit]bar[/font][font=宋体]收盘之后并且在下一根[/font][font=inherit]bar[/font][font=宋体]开盘之前,这个期间信号脚本执行的计算(对计算的驱动因素不限制);而信号脚本执行的计算,上面我们已经叙述了所有的信号脚本的计算驱动因素了。[/font][/p][p=22, 2, left][font=宋体]在非[/font][font=inherit]bar[/font][font=宋体]内模式下,信号脚本基于收盘[/font][font=inherit]tick[/font][font=宋体]执行一次计算,这里计算执行的是“委托单条件判断”这个步骤,然后下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体]执行“委托单触发”这个步骤,也许您可能会说,收盘状态之后并且在开盘状态之前,这中间还有[/font][font=inherit]bar[/font][font=宋体]外状态,那么[/font][font=inherit]bar[/font][font=宋体]外状态(也就是信号脚本在当根[/font][font=inherit]bar[/font][font=宋体]收盘之后,并且下一根[/font][font=inherit]bar[/font][font=宋体]开盘之前,这个期间信号脚本执行计算)是否可以执行“委托单触发”这个步骤,答案是不行,也就是[/font][font=inherit]bar[/font][font=宋体]外状态不会影响非[/font][font=inherit]bar[/font][font=宋体]内模式下委托单的两个步骤。[/font][/p][p=22, 2, left][font=宋体]在非[/font][font=inherit]bar[/font][font=宋体]内模式下,若信号脚本基于开盘[/font][font=inherit]tick[/font][font=宋体]执行计算(信号脚本中引用了下一根[/font][font=inherit]bar[/font][font=宋体]的数据,上文有说过),这时计算执行的是“委托单条件判断”这个步骤,因为开盘状态之后,只有两种可能的状态,即[/font][font=inherit]bar[/font][font=宋体]内状态和收盘状态,当然这两种状态都可以执行“委托单触发”这个步骤的执行,下面举例说明一下(这里最大[/font][font=inherit]bar[/font][font=宋体]设置为[/font][font=inherit]0[/font][font=宋体])。[/font][/p][p=22, 2, left][font=inherit]//[/font][font=宋体]信号代码[/font][/p][p=22, 2, left][font=&quot][[/font][font=&quot]ProcessMouseEvents[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][/p][p=22, 2, left][font=&quot]value1[/font][font=&quot]=[/font][font=&quot]getappinfo[/font][font=&quot]([/font][font=&quot]aicalcreason[/font][font=&quot]);[/font][/p][p=22, 2, left][font=&quot]open[/font] [font=&quot]next[/font] [font=&quot]bar[/font][font=&quot];[/font][/p][p=22, 2, left][font=&quot]if[/font] [font=&quot]currentbar[/font][font=&quot]=[/font][b][font=&quot]605[/font][/b] [font=&quot]then[/font][/p][p=22, 2, left]
[font=&quot]buy[/font] [font=&quot]next[/font] [font=&quot]bar[/font] [font=&quot]at[/font] [font=&quot]market[/font][font=&quot];[/font][/p][p=22, 2, left][font=&quot]print[/font][font=&quot]([/font][font=&quot]"currentbar="[/font][font=&quot],[/font][font=&quot]currentbar[/font][font=&quot],[/font][font=&quot]",time="[/font][font=&quot],[/font][font=&quot]time[/font][font=&quot],[/font][font=&quot]",barstatus="[/font][font=&quot],[/font][font=&quot]barstatus[/font][font=&quot],[/font][font=&quot]",value1="[/font][font=&quot],[/font][font=&quot]value1[/font][font=&quot]);[/font][/p][p=22, 2, left][font=inherit]//[/font][font=宋体]部分输出[/font][/p][p=22, 2, left][font=&quot]currentbar= 600.00,time=1427.00,barstatus=   0.00,value1=   0.00[/font][/p][p=22, 2, left][font=&quot]currentbar= 601.00,time=1437.00,barstatus=   0.00,value1=   0.00[/font][/p][p=22, 2, left][font=&quot]currentbar= 602.00,time=1500.00,barstatus=   0.00,value1=   0.00[/font][/p][p=22, 2, left][font=&quot]currentbar= 603.00,time=1501.00,barstatus=   0.00,value1=   0.00[/font][/p][p=22, 2, left][font=&quot]currentbar= 604.00,time=1504.00,barstatus=   0.00,value1=   0.00[/font][/p][p=22, 2, left][attach]11789[/attach]
[/p][p=22, 2, center][font=宋体]图[/font][font=inherit]4. [/font][font=宋体]开盘[/font][font=inherit]tick[/font][/p][p=22, 2, left][font=宋体]图[/font][font=inherit]4[/font][font=宋体]中,最大[/font][font=inherit]bar[/font][font=宋体]设置为[/font][font=inherit]0[/font][font=宋体],此时[/font][font=inherit]bar[/font][font=宋体]的绝对编号等于相对编号,图表中最后一根[/font][font=inherit]bar[/font][font=宋体]的编号为[/font][font=inherit]605[/font][font=宋体],而公式编译器中输出栏位中最后一根[/font][font=inherit]bar[/font][font=宋体]的编号是[/font][font=inherit]604[/font][font=宋体],这里需要简单解释一下,信号脚本基于开盘[/font][font=inherit]tick[/font][font=宋体]执行计算,是指当接收到下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体]时,信号脚本会基于当根[/font][font=inherit]bar[/font][font=宋体]执行计算信号脚本中的关键字[/font][font=inherit]currentbar[/font][font=宋体]、[/font][font=inherit]close[/font][font=宋体]等返回的信息都是当根[/font][font=inherit]bar[/font][font=宋体]的信息,而不是下一根[/font][font=inherit]bar[/font][font=宋体]的信息;在非[/font][font=inherit]bar[/font][font=宋体]内模式下,基于下一根[/font][font=inherit]bar[/font][font=宋体]开盘[/font][font=inherit]tick[/font][font=宋体]的计算,除了[/font][font=&quot]Open next bar[/font][font=宋体]、[/font][font=&quot]Date next bar[/font][font=宋体]、[/font][font=&quot]Time next bar[/font][font=宋体]、[/font][font=&quot]DateTime next bar[/font][font=宋体]、[/font][font=&quot]Time_s next bar[/font][font=宋体]返回的是下一根[/font][font=inherit]bar[/font][font=宋体]的信息(这[/font][font=inherit]5[/font][font=宋体]个关键字的信息可以通过下一根[/font][font=inherit]bar[/font][font=宋体]的第一笔[/font][font=inherit]tick[/font][font=宋体]直接可以获取到),其它关键字(例如,[/font][font=inherit]currentbar[/font][font=宋体]、[/font][font=inherit]close[/font][font=宋体]等等)返回的都是当根[/font][font=inherit]bar[/font][font=宋体]的信息。[/font][/p][p=22, 2, left][font=宋体]这是一个非常不活跃的商品品种,图表上现在是[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]05[/font][font=宋体]分,当编号为[/font][font=inherit]606[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体]接收的时候(假设是在[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]09[/font][font=宋体]:[/font][font=inherit]30[/font][font=宋体]时,当根[/font][font=inherit]bar[/font][font=宋体]的收盘时间为[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]10[/font][font=宋体]分),信号脚本会执行一次,此时信号脚本中关键字[/font][font=inherit]currentbar[/font][font=宋体]返回的是[/font][font=inherit]605[/font][font=宋体],那么“委托单条件判断”这个步骤被执行了;接下来,我们会采用几种可能的措施,以此来阐述不同的效果:[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]若在[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]15[/font][font=宋体]分之前,没有接收到[/font][font=inherit]tick[/font][font=宋体]数据,因为我们在信号脚本中使用了语句[/font][font=&quot][[/font][font=&quot]ProcessMouseEvents[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][font=宋体],所以当我们在图表上点击一下鼠标时,信号脚本会执行一次计算,也就是在编号为[/font][font=&quot]606[/font][font=宋体]的[/font][font=&quot]bar[/font][font=宋体]收盘之前执行一次计算,于是[/font][font=&quot]bar[/font][font=宋体]内状态执行了“委托单触发”这个动作,委托单被触发发送到交易所。[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]若在[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]15[/font][font=宋体]分之前,没有执行鼠标点击动作,但是在[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]09[/font][font=宋体]:[/font][font=inherit]50[/font][font=宋体]时接收到一笔[/font][font=inherit]tick[/font][font=宋体],尽管信号脚本不会基于该笔[/font][font=inherit]bar[/font][font=宋体]内[/font][font=inherit]tick[/font][font=宋体]执行计算,但是仍然是[/font][font=inherit]bar[/font][font=宋体]内状态,即[/font][font=inherit]bar[/font][font=宋体]内状态执行了“委托单触发”这个动作,委托单被触发发送到交易所。[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]若在[/font][font=inherit]15[/font][font=宋体]:[/font][font=inherit]15[/font][font=宋体]分之前,没有执行鼠标点击动作,也没有接收到交易所的[/font][font=inherit]tick[/font][font=宋体],底层产生一笔收盘[/font][font=inherit]tick[/font][font=宋体],尽管信号脚本也不会执行计算,但是[/font][font=inherit]bar[/font][font=宋体]的收盘状态执行了“委托单触发”这个动作,委托单被发送到交易所了。[/font][/p][p=22, 2, left][font=宋体]2.2 [/font][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]内模式[/font][/p][p=22, 2, left][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]内模式,也就是信号代码中使用语句[/font][font=&quot][[/font][font=&quot]IntrabarOrderGeneration[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][font=宋体],在[/font][font=&quot]bar[/font][font=宋体]内模式下,信号脚本的计算是每接收到一笔[/font][font=&quot]tick[/font][font=宋体]信号脚本都会执行一次计算(开盘[/font][font=&quot]tick[/font][font=宋体]、[/font][font=&quot]bar[/font][font=宋体]内[/font][font=&quot]tick[/font][font=宋体]、收盘[/font][font=&quot]tick[/font][font=宋体]),当然也可以使用上文中叙述的其它的计算驱动因素。对于委托单的两个步骤,用一句话来概括就是:信号脚本基于[/font][font=&quot]bar[/font][font=宋体]的开盘状态、收盘状态、[/font][font=&quot]bar[/font][font=宋体]内状态进行“委托单条件判断”,紧接着基于开盘状态、收盘状态、[/font][font=&quot]bar[/font][font=宋体]内状态进行“委托单触发”这个步骤。这个部分我不准备对于这一句话概括进行举例,因为很好理解,但是需要举例说明一下一直困扰和模糊的一个说法:条件单,条件满足就发单,条件不满足就撤单,价格变化就重发[/font][font=宋体]。下面的例子为叙述简单起见,除了[/font][font=inherit]tick[/font][font=宋体]行情驱动的信号脚本计算,不考虑其它计算的驱动因素[/font][/p][p=22, 2, left][font=宋体]案例[/font][font=&quot]1[/font][/p][p=22, 2, left][font=&quot]//[/font][font=宋体]信号代码[/font][/p][p=22, 2, left][font=&quot][[/font][font=&quot]intrabarordergeneration[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][/p][p=22, 2, left][font=&quot]if[/font] [font=&quot]time[/font][font=&quot]>=[/font][b][font=&quot]1400[/font][/b] [font=&quot]and[/font] [font=&quot]barstatus[/font][font=&quot]=[/font][b][font=&quot]0[/font][/b] [font=&quot]then[/font][/p][p=22, 2, left]
[font=&quot]buy[/font][font=&quot]([/font][font=&quot]"first"[/font][font=&quot])[/font] [font=&quot]next[/font] [font=&quot]bar[/font] [font=&quot]at[/font] [font=&quot]close[/font][font=&quot]-[/font][b][font=&quot]10[/font][/b] [font=&quot]limit[/font][font=&quot];[/font][/p][p=22, 2, left][font=&quot]if[/font] [font=&quot]time[/font][font=&quot]>=[/font][b][font=&quot]1400[/font][/b] [font=&quot]then[/font][/p][p=22, 2, left]
[font=&quot]buy[/font][font=&quot]([/font][font=&quot]"second"[/font][font=&quot])[/font] [font=&quot]next[/font] [font=&quot]bar[/font] [font=&quot]at[/font] [font=&quot]close[/font][font=&quot]-[/font][b][font=&quot]20[/font][/b] [font=&quot]limit[/font][font=&quot];[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]假设当前[/font][font=&quot]bar[/font][font=宋体]的收盘时间为[/font][font=&quot]13[/font][font=宋体]:[/font][font=&quot]58[/font][font=宋体],然后开启自动交易[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]接着在[/font][font=&quot]14[/font][font=宋体]:[/font][font=&quot]00[/font][font=宋体]:[/font][font=&quot]00[/font][font=宋体]时接收到收盘时间为[/font][font=&quot]1400[/font][font=宋体]的[/font][font=&quot]bar[/font][font=宋体]的开盘[/font][font=&quot]tick[/font][font=宋体](即[/font][font=&quot]barstatus=0[/font][font=宋体]),开盘[/font][font=&quot]tick[/font][font=宋体]的价格是[/font][font=&quot]3710[/font][font=宋体](假设商品合约是螺纹,周期为[/font][font=&quot]1[/font][font=宋体]分钟),信号脚本基于开盘[/font][font=&quot]tick[/font][font=宋体]执行计算,显然条件“[/font][font=&quot]time[/font][font=&quot]>=[/font][b][font=&quot]1400[/font][/b] [font=&quot]and[/font] [font=&quot]barstatus[/font][font=&quot]=[/font][b][font=&quot]0[/font][/b][font=宋体]”是成立的,并且条件“[/font][font=&quot]time[/font][font=&quot]>=[/font][b][font=&quot]1400[/font][/b][font=宋体]”也是成立的,也就是这两笔条件委托的“委托单条件判断”被执行了,并且都成立,就等待下一笔[/font][font=&quot]tick[/font][font=宋体]的触发[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]接着在[/font][font=&quot]14[/font][font=宋体]:[/font][font=&quot]00[/font][font=宋体]:[/font][font=&quot]30[/font][font=宋体]时接收到第一笔[/font][font=&quot]bar[/font][font=宋体]内[/font][font=&quot]tick[/font][font=宋体](即[/font][font=&quot]barstatus=1[/font][font=宋体]),[/font][font=&quot]tick[/font][font=宋体]的价格是[/font][font=&quot]3700[/font][font=宋体];经过前面的“委托单条件判断”这个步骤的执行,这笔[/font][font=&quot]bar[/font][font=宋体]内[/font][font=&quot]tick[/font][font=宋体]执行了“委托单触发”这个步骤,于是两个条件单都发送到交易所了;现在的问题是,两笔发送到交易所的价格分别是多少呢?[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]条件单的价格是在“委托单条件判断”这个步骤确定的,并不是在“委托单触发”这个步骤确定的,所以“[/font][font=&quot]first[/font][font=宋体]”条件单的限价是[/font][font=&quot]3710-10[/font][font=宋体],即[/font][font=&quot]3700[/font][font=宋体];“[/font][font=&quot]second[/font][font=宋体]”条件单的限价是[/font][font=&quot]3710-20[/font][font=宋体],即[/font][font=&quot]3690[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]条件单的价格确定了,但是条件的问题又来了;因为[/font][font=&quot]14:00:30[/font][font=宋体]的这一笔[/font][font=&quot]tick[/font][font=宋体]的接收,导致信号脚本又执行一次计算,但是条件“[/font][font=&quot]time[/font][font=&quot]>=[/font][b][font=&quot]1400[/font][/b] [font=&quot]and[/font] [font=&quot]barstatus[/font][font=&quot]=[/font][b][font=&quot]0[/font][/b][font=宋体]”不再成立,这样“[/font][font=&quot]first[/font][font=宋体]”委托单也会发送到交易所吗?答案是肯定的。但是信号仍然基于该笔[/font][font=&quot]tick[/font][font=宋体]执行了一次“委托单条件判断”这个步骤。[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]接着在[/font][font=&quot]14[/font][font=宋体]:[/font][font=&quot]00[/font][font=宋体]:[/font][font=&quot]50[/font][font=宋体]时接收到第二笔[/font][font=&quot]bar[/font][font=宋体]内[/font][font=&quot]tick[/font][font=宋体](即[/font][font=&quot]barstatus=1[/font][font=宋体]),[/font][font=&quot]tick[/font][font=宋体]的价格是[/font][font=&quot]3670[/font][font=宋体],此时这笔[/font][font=&quot]tick[/font][font=宋体]执行了“委托单触发”这个步骤,因为信号脚本基于上一笔[/font][font=&quot]tick[/font][font=宋体](即[/font][font=&quot]14[/font][font=宋体]:[/font][font=&quot]00[/font][font=宋体]:[/font][font=&quot]30[/font][font=宋体]这笔[/font][font=&quot]tick[/font][font=宋体])执行了“委托单条件判断)这个步骤,但是条件不再成交,所以这笔[/font][font=&quot]tick[/font][font=宋体](即[/font][font=&quot]14[/font][font=宋体]:[/font][font=&quot]00[/font][font=宋体]:[/font][font=&quot]50[/font][font=宋体]这笔[/font][font=&quot]tick[/font][font=宋体])触发了[/font][font=&quot]”first”[/font][font=宋体]条件单的撤单;另外,上一笔[/font][font=&quot]tick[/font][font=宋体]在执行“委托单条件判断”的同时也判断了条件单的价格的变化,所以这笔[/font][font=&quot]tick[/font][font=宋体]触发了条件单重发,也就是将[/font][font=&quot]”second”[/font][font=宋体]的条件单从交易所撤单,然后发送[/font][font=&quot]3700-10[/font][font=宋体],即[/font][font=&quot]3680[/font][/p][p=22, 2, left][font=Wingdings]l
[/font][font=宋体]通过上面的慢步骤的分析,进行小结一下:“委托单条件判断”这个步骤会判断委托单条件是否满足,以及确定条件单的价格,“委托单触发”这个步骤直接触发委托单;若条件满足,则第二个步骤触发之后,直接发送到交易所;若当前已经发送了条件单,当条件不再满足,则第二个步骤触发之后,将条件单撤单;若当前已经发送了条件单,当第一个步骤中确定价格变化了,则第二个步骤触发之后,将条件单撤单然后重发,重发的条件单的价格以第一个步骤中确定的价格为委托价格。[/font][/p][p=22, 2, left][font=宋体]2.3 [/font][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]外模式[/font][/p][p=22, 2, left][font=inherit]Bar[/font][font=宋体]外模式的开启,信号脚本中需要使用[/font][font=&quot][[/font][font=&quot]AllowSendOrdersAlways[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][font=宋体],但是同时需要在信号脚本中使用[/font][font=&quot][[/font][font=&quot]IntrabarOrderGeneration[/font][font=&quot]=[/font][font=&quot]true[/font][font=&quot]][/font][font=宋体],也就是说[/font][font=&quot]bar[/font][font=宋体]外模式需要在开启[/font][font=&quot]bar[/font][font=宋体]内模式下才能开启。那么委托单的两个步骤在[/font][font=&quot]bar[/font][font=宋体]外模式下又是如何进行的呢?用一句话来概括就是:[/font][font=宋体]信号脚本中委托可以基于[/font][font=inherit]bar[/font][font=宋体]外状态进行“委托单条件判断”这个步骤,然后通过[/font][font=inherit]bar[/font][font=宋体]的开盘状态、收盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态、[/font][font=inherit]bar[/font][font=宋体]外状态进行“委托单触发”这个步骤;信号脚本中委托单基于[/font][font=inherit]bar[/font][font=宋体]的收盘状态进行“委托单条件判断”,委托单直接触发,也就是说在收盘状态“委托单条件判断”和“委托单触发”这两个步骤同时执行;信号脚本中委托单基于[/font][font=inherit]bar[/font][font=宋体]的开盘状态、[/font][font=inherit]bar[/font][font=宋体]内状态进行“委托单条件判断”,然后通过[/font][font=inherit]bar[/font][font=宋体]内状态、[/font][font=inherit]bar[/font][font=宋体]的收盘状态进行“委托单触发”,不是两个步骤同时进行。[/font][/p][p=22, 2, left][font=宋体]3. [/font][font=宋体]开启自动交易的瞬间[/font][/p][p=22, 2, left][font=宋体]3.1 [/font][font=宋体]未开启[/font][font=inherit]bar[/font][font=宋体]内模式[/font][/p][p=22, 2, left][font=宋体]未开启[/font][font=inherit]bar[/font][font=宋体]内模式,基于收盘[/font][font=inherit]tick[/font][font=宋体]进行信号计算,假设图表周期为[/font][font=inherit]1[/font][font=宋体]分钟,前一根[/font][font=inherit]bar[/font][font=宋体]的收盘时间为[/font][font=inherit]13[/font][font=宋体]:[/font][font=inherit]30[/font][font=宋体],当根[/font][font=inherit]bar[/font][font=宋体]的收盘时间为[/font][font=inherit]13:31[/font][font=宋体](图表上最后一根[/font][font=inherit]bar[/font][font=宋体],最新的[/font][font=inherit]bar[/font][font=宋体]),而且还没有走完(即[/font][font=inherit]barstatus=0[/font][font=宋体]或[/font][font=inherit]1[/font][font=宋体]),那么此时开启自动交易之后,条件单基于收盘时间为[/font][font=inherit]13:30[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体]进行“委托单条件判断”,然后直接触发委托,也就是“委托单条件判断”和“委托单触发”这两个步骤同时进行,也就是开启自动交易之后条件单直接发送到交易所(但是市价单不会基于历史行情进行“委托单条件判断”,也不会基于历史行情进行“委托单触发”这两个步骤,市价单需要在开启自动交易之后执行“委托单条件判断”和“委托单触发”这两个步骤,请参考“自动交易进行中”这一节内容);[/font][/p][p=22, 2, left][font=宋体]若当根[/font][font=inherit]bar[/font][font=宋体](收盘时间为[/font][font=inherit]13[/font][font=宋体]:[/font][font=inherit]31[/font][font=宋体])已经收盘,并且下一根[/font][font=inherit]bar[/font][font=宋体]还没有开盘,那些此时开启自动交易,条件单基于收盘时间为[/font][font=inherit]13[/font][font=宋体]:[/font][font=inherit]31[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体]执行“委托单条件判断”,需要等到下一根[/font][font=inherit]bar[/font][font=宋体]第一笔[/font][font=inherit]tick[/font][font=宋体](开盘[/font][font=inherit]tick[/font][font=宋体])执行“委托单触发”这个步骤(市价单也会基于[/font][font=inherit]13[/font][font=宋体]:[/font][font=inherit]31[/font][font=宋体]的收盘[/font][font=inherit]bar[/font][font=宋体]执行“委托单条件判断”,需要等到下一根[/font][font=inherit]bar[/font][font=宋体]第一笔[/font][font=inherit]tick[/font][font=宋体](开盘[/font][font=inherit]tick[/font][font=宋体])执行“委托单触发”这个步骤)。[/font][/p][p=22, 2, left][font=宋体]未开启[/font][font=inherit]bar[/font][font=宋体]内模式,基于下一根[/font][font=inherit]bar[/font][font=宋体]第一笔[/font][font=inherit]tick[/font][font=宋体]进行信号计算,当前[/font][font=inherit]bar[/font][font=宋体]的收盘时间为[/font][font=inherit]14[/font][font=宋体]:[/font][font=inherit]00[/font][font=宋体](图表上最后一根[/font][font=inherit]bar[/font][font=宋体],最新的[/font][font=inherit]bar[/font][font=宋体]),还没有收盘(即[/font][font=inherit]barstatus=0[/font][font=宋体]或[/font][font=inherit]1[/font][font=宋体]时),那么此时开启自动交易,条件单直接基于[/font][font=inherit]14[/font][font=宋体]:[/font][font=inherit]00[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体](即[/font][font=inherit]barstatus=0[/font][font=宋体])进行“委托单条件判断”这个步骤,然后直接触发委托,也就是“委托单条件判断”和“委托单触发”这两个步骤同时进行,不需要等待最新的一笔[/font][font=inherit]tick[/font][font=宋体]的触发委托(市价单需要在开启自动交易之后进行“委托单条件判断”和“委托单触发”这个步骤,请参考“自动交易进行中”这一节);当前[/font][font=inherit]bar[/font][font=宋体]的收盘时间为[/font][font=inherit]14[/font][font=宋体]:[/font][font=inherit]00[/font][font=宋体](图表上最后一根[/font][font=inherit]bar[/font][font=宋体],最新的[/font][font=inherit]bar[/font][font=宋体]),已经收盘(即[/font][font=inherit]barstatus=2[/font][font=宋体]),并且还没有接收到下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体],那么此时开启自动交易,条件单需要等到下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体],基于下一根[/font][font=inherit]bar[/font][font=宋体]的[/font][font=inherit]barstatus=0[/font][font=宋体]进行“委托单条件判断”这个步骤,然后等待接下来[/font][font=inherit]bar[/font][font=宋体]内状态、[/font][font=inherit]bar[/font][font=宋体]的收盘状态、[/font][font=inherit]bar[/font][font=宋体]的开盘状态进行“委托单触发”这个步骤(市价单需要在开启自动交易之后,基于实时的开盘[/font][font=inherit]tick[/font][font=宋体]进行“委托单条件判断”,然后等待接下来[/font][font=inherit]bar[/font][font=宋体]内状态、[/font][font=inherit]bar[/font][font=宋体]的收盘状态、[/font][font=inherit]bar[/font][font=宋体]的开盘状态进行“委托单触发”这个步骤)。[/font][/p][p=22, 2, left][font=宋体]3.2 [/font][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]内模式[/font][/p][p=22, 2, left][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]内模式,图表上最新的[/font][font=inherit]bar[/font][font=宋体](假设是相对编号为[/font][font=inherit]14[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体])已经开盘,但是还没有收盘,那么此时开启自动交易,此时条件单基于开启自动交易之前最后一笔历史[/font][font=inherit]tick[/font][font=宋体]同时进行“委托单条件判断”和“委托单触发”这两个步骤,也就是说当“委托单条件判断”条件成立就直接发送到交易所(市价单在开启自动交易之后进行“委托单条件判断”和“委托单触发”这两个步骤);开启[/font][font=inherit]bar[/font][font=宋体]内模式,图表上最新的[/font][font=inherit]bar[/font][font=宋体](假设是相对编号为[/font][font=inherit]14[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体])已经收盘,然后此时开启自动交易,此时条件单和市价单基于编号为[/font][font=inherit]14[/font][font=宋体]的[/font][font=inherit]bar[/font][font=宋体]的收盘[/font][font=inherit]tick[/font][font=宋体]进行“委托单条件判断”,然后等待下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体]进行“委托单触发”这个步骤。[/font][/p][p=22, 2, left][font=宋体]3.3 [/font][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]外模式[/font][/p][p=22, 2, left][font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]外模式,当前图表上新一根[/font][font=inherit]bar[/font][font=宋体](假设相对编号为[/font][font=inherit]14[/font][font=宋体]),已经收盘,并且下一根[/font][font=inherit]bar[/font][font=宋体]还没有开盘,那么此时开启自动交易,条件单会基于开启自动交易前最后一笔[/font][font=inherit]tick[/font][font=宋体]进行“委托单条件判断”,然后直接发送到交易所,也就是说此时“委托单条件判断”和“委托单触发”这两个步骤同时进行(市价单会基于开启自动交易之前最后一笔[/font][font=inherit]tick[/font][font=宋体]进行“委托单条件判断,然后等待下一根[/font][font=inherit]bar[/font][font=宋体]的开盘[/font][font=inherit]tick[/font][font=宋体]进行“委托单触发”这个步骤,但是并不会基于[/font][font=inherit]bar[/font][font=宋体]外状态进行“委托单触发”这个步骤)。[/font][/p][p=22, 2, left]
[font=宋体]开启[/font][font=inherit]bar[/font][font=宋体]外模式,当前图表上最新一根[/font][font=inherit]bar[/font][font=宋体](假设相对编号为[/font][font=inherit]14[/font][font=宋体]),已经开盘,还没有收盘,那么此时开启自动交易,之后条件单和市价单的情况请参考上一节[/font][font=inherit]3.2[/font][font=宋体]的阐述。[/font][/p]

页: [1]