同花顺Python策略编辑器帮助文档

同花顺Python策略编辑器帮助文档


如何实现拆单和延时报单

<h4><strong>简要说明</strong></h4> <ul> <li>拆单是指将一笔大单拆分成多笔小单,多笔小单同时提交委托,即批量下单。延时报单指在拆分大单后,每笔小单间隔一定时间后再分别提交委托。</li> </ul> <hr /> <h4><strong>1.采用区间随机方式进行拆单</strong>:</h4> <p>典型的拆单方法有:固定数量、区间随机、数量递减等方法。下面以区间随机的拆单方法为示例进行说明,其它方法类似。</p> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- #例:采用区间随机方式进行拆单,除最后一单外,每单的委托数量大于等于单笔下限数量,小于单笔上限数量,最后一单委托余下的数量(不一定在单笔上限数量内)。 from ths_api import HQ as hq import xiadan as xd import numpy as np bors = 'buy' code = '000001' wtjg = 'zxjg' zwtsl = 2000 dbsx = 500 #单笔上限数量 dbxx = 100 #单笔下限数量,应小于单笔上限数量 ymsl = 0 #记录程序的已买数量 list_wtsl = [] while ymsl &lt; zwtsl: if zwtsl - ymsl &gt;= dbsx: wtsl0 = np.random.randint(dbxx/100, dbsx/100)*100 else: wtsl0 = zwtsl - ymsl list_wtsl.append(wtsl0) ymsl = ymsl + wtsl0 ret = xd.cmd('%s %s %s %s' % (bors, code, wtjg, str(wtsl0))) print(ret) print(bors, code, wtjg, str(wtsl0)) print('拆单后每单的委托数量列表:', list_wtsl) </code></pre> <p><strong>运行结果</strong></p> <p>程序的输出及部分日志如下所示,并且触发10次相应的委托确认弹窗。</p> <pre><code>{'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244679353。', 'htbh':'1244679353'} buy 000001 zxjg 300 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244746777。', 'htbh':'1244746777'} buy 000001 zxjg 100 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244774870。', 'htbh':'1244774870'} buy 000001 zxjg 200 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244683698。', 'htbh':'1244683698'} buy 000001 zxjg 100 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244864954。', 'htbh':'1244864954'} buy 000001 zxjg 100 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244851160。', 'htbh':'1244851160'} buy 000001 zxjg 300 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244857005。', 'htbh':'1244857005'} buy 000001 zxjg 300 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244714839。', 'htbh':'1244714839'} buy 000001 zxjg 100 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244796420。', 'htbh':'1244796420'} buy 000001 zxjg 300 {'retCode':'0', 'retMsg':'您的买入委托已成功提交,合同编号:1244758828。', 'htbh':'1244758828'} buy 000001 zxjg 200 拆单后每单的委托数量列表: [300, 100, 200, 100, 100, 300, 300, 100, 300, 200]</code></pre> <hr /> <h4><strong>2.采用区间随机方式进行拆单,并且延时报单</strong>:</h4> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- #例:采用区间随机方式进行拆单,除最后一单外,每单的委托数量大于等于单笔下限数量,小于单笔上限数量,最后一单委托余下的数量(不一定在单笔上限数量内)。并且延时报单。 from ths_api import * import numpy as np import time bors = 'buy' code = '000001' wtjg = 'zxjg' zwtsl = 2000 dbsx = 500 #单笔上限数量 dbxx = 100 #单笔下限数量,应小于单笔上限数量 ymsl = 0 #记录程序的已买数量 list_wtsl = [] while ymsl &lt; zwtsl: if zwtsl - ymsl &gt;= dbsx: wtsl0 = np.random.randint(dbxx/100, dbsx/100)*100 else: wtsl0 = zwtsl - ymsl list_wtsl.append(wtsl0) ymsl = ymsl + wtsl0 ret = xd.cmd('%s %s %s %s' % (bors, code, wtjg, str(wtsl0))) print(ret) print(bors, code, wtjg, str(wtsl0)) time.sleep(10 + np.random.randint(0, 10)) #延时10~20s内的某一随机时间后,继续下一笔子单的委托 print('拆单后每单的委托数量列表:', list_wtsl)</code></pre> <p><strong>运行结果</strong></p> <p>运行结果和上一示例的结果类似,但是每笔子单之间有10~20s的随机延时。</p>

页面列表

ITEM_HTML