我刚才思索着,在 9:25 - 9:29 这个时间段内,保守点说,9:27 左右就能够执行撤单操作。目前规划的撤单方式是人工进行,但我又想到,其实也可以通过程序实现自动撤单。就拿
同花顺上使用银河证券的交易来说,在委托界面里,只需双击想要撤单的那条记录,就会弹出一个窗口,点击确认即可完成撤单操作,而且界面上会显示 “仅显示可撤的单子”。
考虑到在集合竞价期间,当天委托数量通常较少,所以采用程序撤单是可行的。整体思路是这样的:将证券代码、成交状态以及成交价或委托价格这几列信息截图下来,通过这些信息来判断未成交单子的情况。比如,观察单子对应的价格处于第几档,就能知晓挂单时间。要是买单的价位在正二、正三、正四档,或者是负二、负三、负四档,那就表明这是通过程序化挂的单,而非银河证券的网格单,对于这类上下各一档的单子,是可以撤销的。通过判断这些单子在列表中所处的行数,进而计算出其对应的坐标轴位置,届时用鼠标双击相应位置就能实现撤单。这种方式不仅比人工判断更为准确,还能实现自动化操作。
同时,我还想到另一种更为简便的策略,不过判断依据有所不同。这种策略需要截取证券代码、委托时间以及成交(或委托)状态这几列信息。对于委托状态显示为未成交,且委托时间在 9:15 之前的单子,就可以确定是自己挂的且未成交的单子,可直接进行撤单。在撤单过程中需要注意,每撤掉一单后,整个逻辑最好重新执行一遍。因为撤单后,页面上尤其是仅显示可撤单记录时,可能会少一行记录,所以重新扫描一遍逻辑更为稳妥。
我认为按照第二种基于时间和状态判断的策略更为简单。因为我挂单一般在 9:15 之前,而银河证券挂单多在 9:15:59 左右,时间上的差异能够识别出来。当然,为保险起见,除了时间和状态,还可以把价格列纳入判断依据,进一步严格区分。鉴于目前 OCR 识别功能应用较为广泛,将价格列纳入判断依据相对容易实现,确实可以考虑完善这一功能。若这部分功能得以完善,那么在盘前挂单,即 9:30 之前的操作基本就能接近全自动了。
只不过,获取基准价时,需要在当天收盘后执行更
新基准价的操作。或者也可以在第二天开盘前 9:15 之前,手动开启一个 Python 窗口,在窗口中手动更新昨天的基准价,如此一来,所有相关工作都能在第二天开盘前完成。