contact@digquant.com.cn
400-1860-552
官方群:463071731

开平仓设置

1. 考虑当前仓位的开平仓指令

l   函数名称:traderBuy

l   函数说明:买入下单,若初始有空头持仓,则先平仓,再买入。

l   语法:      

orderID = traderBuy(Handle,Market,Code,Contracts,Price,PriceType,OrderTag)

l   用法

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如'IF0000'

Contracts :下单数量

Price:下单价格,为0时为市价单

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划买开5手,

1.     无持仓,直接买开5手多单,最后持仓是:5手多单

2.     原有3手空单,则市价平3手空单,再买开5手多单,最后持仓是:5手多单

3.     原有2手多单,再买开5手多单,最后持仓是:2+5=7手多单

l   示例:

市价买入股指期货主力合约10手(若初始有空头持仓,则先将空头持仓全部平仓,再买入10手),并将此买入操作标记为'buy'

>> orderID = traderBuy (Handle, CFFEX , IF0000, 10 ,0,'market','buy');

如果原仓位为1,此下单指令会将仓位调整为5,即在原有仓位的基础上下单。 下单指令中的仓位必须大于原仓位

>>traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,5,0,'market','buy');



l   函数名称:traderBuyV2

l   函数说明:买入下单,若初始有空头持仓,则先平仓,再买入。

l   语法:      

orderID = traderBuyV2(HandleIdx,TargetIdx,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Contracts:下单数量,当为 ’all’ 时将现有持仓全部平仓

Price:价格,此处为下单价格

PriceType:下单价格类型,字符串格式,允许值如下:

market’:市价

limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划买开5手,

1. 无持仓,直接买开5手多单,最后持仓是:5手多单

2. 原有3手空单,则市价平3手空单,再买开5手多单,最后持仓是:5手多单

3. 原有2手多单,再买开5手多单,最后持仓是:2+5=7手多单

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={‘StockSimAcc’}, TargetList(1).code={600001},TargetList(2).code ={‘IF0000’}

市价买入股指期货IF0000  10手(若初始有空头持仓,则先将空头持仓全部平仓,再买入10手),并将此买入操作标记为'buy'

>> orderID = traderBuy V2(1, 2, 10 ,0,'market','buy');



l   函数名称:traderBuyToCover

l   函数说明:买入平仓下单。

l   语法:      

orderID =traderBuyToCover(Handle,Market,Code,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如'IF0000'

Contracts :平仓数量,为 ’all’ 时将现有持仓全部平仓

Price:平仓价格,为0时为市价

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划买开5手,

1.     账号无持仓,最后无持仓

2.     6手空单,计划买平5手后,账号最后持仓为:max(6-5,0)=1,即最后要么还有1手空单,要么无持仓

3.     2手多单,最后持仓:2手多单

l   示例:

将股指期货主力合约IF0000全部平仓

>> orderID = traderBuyToCover(Handle, CFFEX , IF0000,'all',0,'market','1');

2681的价格平仓期货IF0000:若初始为多头持仓,不操作;若初始空头持仓小于1000,买入平仓,使当前持仓为0;若初始空头持仓大于1000,则买入1000平仓

>> orderID = traderBuyToCover(Handle, CFFEX , IF0000, 1000, 2681, 'limit', '1');

 


l   函数名称:traderBuyToCoverV2

l   函数说明:买入平仓,前提是有空仓,否则操作无效。

l   语法:      

orderID = traderBuyToCoverV2(HandleIdx,TargetIdx,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Contracts:下单数量,当为 ’all’ 时将现有持仓全部平仓

Price:价格,此处为下单价格

PriceType:下单价格类型,字符串格式,允许值如下:

market’:市价

limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划买开5手,

1.     账号无持仓,最后无持仓

2.     6手空单,计划买平5手后,账号最后持仓为:max(6-5,0)=1,即最后要么还有1手空单,要么无持仓

3.     2手多单,最后持仓:2手多单

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={‘StockSimAcc’}, TargetList(1)={600001},TargetList(2)={‘IF0000’}

将账户FutureSimAcc中股指期货主力合约IF00000全部以市价平仓

>> orderID = traderBuyToCoverV2(1, 2, 'all',0,'market','1');

2681的价格平仓FutureSimAcc账户中的期货IF0000:若初始为多头持仓,不操作;若初始空头持仓小于1000,买入平仓,使当前持仓为0;若初始空头持仓大于1000,则买入1000平仓

>> orderID = traderBuyToCoverV2(1, 2, 1000, 2681, 'limit', '1');

 


l   函数名称:traderSell

l   函数说明:卖出平仓下单。

l   语法:      

orderID = traderSell(Handle,Market,Code,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如'IF0000'

Contracts :平仓数量,为 ’all’ 时将现有持仓全部平仓

Price:下单价格,为0时为市价单

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划卖平5手,

1.     无持仓,此次卖平无效,最后无持仓

2.     原有2手空单,此次卖平无效,维持卖平前的一切状态,最后持仓是:2手空单

3.     若有7手多单,计划卖平5手后,账号最后持仓为:max(7-5,0)=2,即要么还有7-5=2手多单,要么无持仓

l   示例:

将股票代码为600009的股票全部平仓,并将此操作标记为‘sell’。

>> orderID = traderSell (Handle, SSE, 600009, 'all',0,'market','1');

2685的价格平仓期货IF0000:若初始为空头持仓,不操作;若初始多头持仓小于500,卖出平仓,使当前持仓为0;若初始多头持仓大于500,则卖出500平仓。

>> orderID = traderSell (Handle, CFFEX , IF0000, 500, 2685, 'limit', '1');



l   函数名称:traderSellV2

l   函数说明:多单的平仓下单,即卖出平仓下单。

l   语法:      

orderID = traderSellV2(HandleIdx,TargetIdx,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Contracts:平仓数量

Price:价格,此处为下单价格

PriceType:下单价格类型,字符串格式,允许值如下:

market’:市价

limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划卖平5手,

1.     无持仓,此次卖平无效,最后无持仓

2.     原有2手空单,此次卖平无效,维持卖平前的一切状态,最后持仓是:2手空单

3.     若有7手多单,计划卖平5手后,账号最后持仓为:max(7-5,0)=2,即要么还有7-5=2手多单,要么无持仓

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={‘StockSimAcc’}, TargetList(1).code={600001},TargetList(2).code ={‘IF0000’}

StockSimAcc中股票代码为600001的股票全部平仓,并将此操作标记为‘sell’。

>> orderID = traderSellV2(2, 1, 'all',0,'market','1');

2685的价格平仓期货IF0000:若初始为空头持仓,不操作;若初始多头持仓小于500,卖出平仓,使当前持仓为0;若初始多头持仓大于500,则卖出平仓数量500手。

>> orderID = traderSellV2(1, 2, 500, 2685, 'limit', '1');

 


l   函数名称:traderSellShort

l   函数说明:卖出下单,若初始有多头持仓,则先平仓,再卖出。

l   语法:      

orderID = traderSellShort(Handle,Market,Code,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如‘000002

Contracts :下单数量

Price:下单价格,为0时为市价单

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划卖开5手,

1.     账号无持仓,直接卖开5手空单,最后持仓:5手空单

2.     3手多单,先市价平3手多单,在卖开5手空单,最后持仓:5手空单

3.     2手空单,再卖开5手空单,最后持仓:2+5=7手空单

l   示例:

市价卖出股指期货主力合约100(若初始有多头持仓,则先全部平仓,再卖出100),并将此操作标记为 ‘sell’。

>> orderID = traderSellShort (Handle, CFFEX , IF0000,100 ,0,'market','sell');



l   函数名称:traderSellShortV2

l   函数说明:卖出下单,若初始有多头持仓,则先平仓,再卖出。

l   语法:      

orderID = traderSellShortV2(HandleIdx,TargetIdx,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Contracts:下单数量

Price:价格,此处为下单价格

PriceType:下单价格类型,字符串格式,允许值如下:

market’:市价

limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划卖开5手,

1.       账号无持仓,直接卖开5手空单,最后持仓:5手空单

2.       3手多单,先市价平3手多单,在卖开5手空单,最后持仓:5手空单

3.       2手空单,再卖开5手空单,最后持仓:2+5=7手空单

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={‘StockSimAcc’}, TargetList(1).code={600001},TargetList(2).code ={‘IF0000’}

市价卖出FutureSimAcc中股指期货主力合约100(若初始有多头持仓,则先全部平仓,再卖出100),并将此操作标记为 ‘sell’。

>> orderID = traderSellShortV2 (1, 2,100 ,0,'market','sell');

 

2. 不考虑当前仓位的开平仓指令


l   函数名称:traderCloseAll

l   函数说明:平指定账户所有持仓(不包含冻结部分),回测中不支持使用此接口。

l   语法:      

traderCloseAll(Handle)

l   用法:

输入参数:

Handle:账户句柄

输出参数:

l   示例:

平指定账号FutureSimAcc下所有持仓,取得FutureSimAcc的账户句柄

>> Handle = atgettradeaccounthandle(‘FutureSimAcc’)

>> traderCloseAll (Handle);

 



l   函数名称:traderDirectBuy

l   函数说明:买入下单,初始持仓无影响。

l   语法:      

orderID = traderDirectBuy(Handle,Market,Code,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如'IF0000'

Contracts :下单买入数量

Price:下单买入价格,为0时为市价

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划买开5手,

1.     无持仓,直接买开5手,最后持仓为:5手多单

2.     账号已有空单,

  如果空单数量大,例如空单7手,则最后仓位为:7-5=2手空单

  如果买开数量大,例如空单3手,则最后仓位为:5-3=2手多单

3.     账号已有3手买开,再买开5手,最后持仓是3+5=8手多单

l   示例:

21.3/股的价格买入1000股代码为000001的股票,并将此买入操作标记为’1

>> orderID =  traderDirectBuy (Handle, SZSE , 000001,1000,21.3,'limit','1');

如果原仓位为1,此下单指令会将仓位调整至6

>>traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,5,0,'market','buy')

 



l   函数名称:traderDirectBuyV2

l   函数说明:买入下单,初始持仓无影响。

l   语法:      

orderID = traderDirectBuyV2 (HandleIdx,TargetIdx,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Contracts:下单买入数量

Price:价格,此处为下单价格

PriceType:下单价格类型,字符串格式,允许值如下:

market’:市价

limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划买开5手,

1.     无持仓,直接买开5手,最后持仓为:5手多单

2.     账号已有空单,

  如果空单数量大,例如空单7手,则最后仓位为:7-5=2手空单

  如果买开数量大,例如空单3手,则最后仓位为:5-3=2手多单

3.     账号已有3手买开,再买开5手,最后持仓是3+5=8手多单

l   示例:

21.3/股的价格买入1000股代码为000001的股票,并将此买入操作标记为’1

>> orderID =  traderDirectBuy (Handle, SZSE , 000001,1000,21.3,'limit','1');

如果原仓位为1,此下单指令会将仓位调整至6

>>traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,5,0,'market','buy');

 



l   函数名称:traderDirectSell

l   函数说明:卖出下单,初始持仓无影响。

l   语法:      

orderID = traderDirectSell(Handle,Market,Code,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如'IF0000'

Contracts :下单数量

Price:下单价格,为0时为市价单

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划卖开5手,

1.     账号无持仓,直接卖开5手空单

2.     账号已有多单,

  如果卖开数量大,例如空单3手,则先平3手多单,再卖开5-3=2手空单.最后持仓是:2手空单

  如果多单数量大,例如空单8手,则最后仓位为:8-5=3手多单[即多单被平了5]

3.     若账号已有2手空单,再卖开5,最后持仓的数量是:2+5=7手空单

l   示例:

市价卖出股指期货主力合约IF0000  10手,并将此操作标记为 ‘sell’。

>> orderID = traderDirectSell (Handle, CFFEX , IF0000, 10 ,0,'market','sell');




l   函数名称:traderDirectSellV2

l   函数说明:卖出下单,初始持仓无影响。

l   语法:      

orderID = traderDirectSellV2(HandleIdx,TargetIdx,Contracts,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Contracts:下单数量

Price:价格,此处为下单价格

PriceType:下单价格类型,字符串格式,允许值如下:

market’:市价

limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

若计划卖开5手,

1.     账号无持仓,直接卖开5手空单

2.     账号已有多单,

  如果卖开数量大,例如空单3手,则先平3手多单,再卖开5-3=2手空单.最后持仓是:2手空单

  如果多单数量大,例如空单8手,则最后仓位为:8-5=3手多单[即多单被平了5]

3.     若账号已有2手空单,再卖开5,最后持仓的数量是:2+5=7手空单

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={‘StockSimAcc’}, TargetList(1).code={600001},TargetList(2).code ={‘IF0000’}

市价卖出账户FutureSimAcc中股指期货主力合约IF0000  10手,并将此操作标记为 ‘sell’。

>> orderID = traderDirectSellV2 (1, 2, 10 ,0,'market','sell');



3. 以仓位为目标,可双向调整直接达到目标仓位

l   函数名称:traderPositionTo

l   函数说明:调仓到指定仓位

l   语法:      

orderID = traderPositionTo(Handle,Market,Code,Position,Price,PriceType,OrderTag);

l   用法:

输入参数:

Handle:账户句柄

Market :市场类型,字符串格式,允许值如下:

ØSZSE’:深圳股票

Ø SSE’:上海股票

Ø SHFE’:上海期货

Ø DCE’ :大连商品

Ø CZCE’:郑州商品

Ø CFFEX’:中金所

Code:交易品种代码,字符串格式,如'IF0000'

Position:目标仓位

Price:下单价格,为0时为市价单

PriceType:下单价格类型,字符串格式,允许值如下:

Ømarket’:市价成交

Ø limit’:限价成交

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

计划调整为指定仓位:5

1.     账号无持仓:则相应开多或者开空5

2.     初始持仓为3手多单,

2.1计划调整为5手空单,3手多单,5手空单,最后持仓:5手空单

2.2计划调整为5手多单,最后持仓:5手多单

         3.    初始持仓为2手空单,

3.1计划调整为5手多单,则平2手空单,再开5手多单,最后持仓:5手多单

3.2计划调整为5手空单,最后持仓:5手空单

l   示例:

将代码为000001的股票仓位以市价调整到500,并将此操作标记为‘111

>> orderID = traderPositionTo(HandleList, SZSE , 000001,500 ,0,'market','111');

如果原仓位为6,此下单指令会将仓位调整为5

>>traderPositionTo(HandleList(1),targetList(1).Market,targetList(1).Code,5,0,'market','buy')




l   函数名称:traderConfigTo

l   函数说明:对账户进行配置。配置型回测专用,与traderBuy等交易函数不能混用。

l   语法:      

traderConfigTo(HandleIdx,TargetIdx,Config);

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Configdouble数值型,当-1时,数值表示配资百分比;当config>=1,或config<=-1时,表示数量基本单位。

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={‘StockSimAcc’}, TargetList(1).code={600001’},TargetList(2).code={IF0000’}

FutureSimAcc中账户权益的57%用于标的IF0000开空仓

>> traderConfigTo(1,2,-0.57);

StockSimAcc账户买入400600001

>> traderConfigTo(2,1,400);

 



l   函数名称:traderPositionToV2

l   函数说明:调仓到指定仓位。

l   语法:      

orderID = traderPositionToV2(HandleIdx,TargetIdx,Position,Price,PriceType,OrderTag)

l   用法:

输入参数:

HandleIdx:账户句柄索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

TargetIdx:交易标的索引序列号,可以为单个数字或一个序列。如3表示序列中第三个,(2,10)表示第二个和第十个,(3:7)表示从第三个到第七个。

Position:目标仓位,如-5表示调整至5手空单。

Price:价格,此处为下单价格,0时表示市价。

PriceType:下单价格类型,字符串格式,允许值如下:

’market’:市价

 ‘limit’:限价

OrderTag:订单标记,字符串类型

输出参数:

orderID:订单号

l   功能描述:

计划调整为指定仓位:5,(多单或者空单)

1.       账号无持仓:则相应开多或者开空5

2.      初始持仓为3手多单,

2.1计划调整为5手空单,3手多单,5手空单,最后持仓:5手空单

2.2计划调整为5手多单,最后持仓:5手多单

3.    初始持仓为2手空单,

3.1计划调整为5手多单,则平2手空单,再开5手多单,最后持仓:5手多单

3.2计划调整为5手空单,最后持仓:5手空单

l   示例:

HandleList(1)={FutureSimAcc},HandleList(2)={StockSimAcc}, TargetList(1).code={600001},TargetList(2).code ={IF0000}

StockSimAcc中代码为600001的股票仓位以市价调整到500,并将此操作标记为‘111

>> orderID = traderPositionToV2(2, 1,500 ,0,'market','111');

如果原仓位为6,此下单指令会将仓位调整为5

>>traderPositionToV2(HandleIdx,TargetIdx,5,0,'market','buy')