跳至主要內容

XTP报单接口示例代码文档

xtp_master大约 21 分钟

XTP报单接口示例代码文档

XTP各种业务报单

1.普通股票交易下单示例

/*XTP::API::TraderApi* pUserApi ;//交易api的创建示例在此忽略
uint64_t session_id_ ;//登录成功后得到的会话
*/
void ordinaryInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";//需要交易的股票代码,用户自行更改
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_CASH;//XTP_BUSINESS_TYPE_CASH为普通股票下单业务类型
    order_info.side = XTP_SIDE_BUY;//买,根据买卖方向进行修改
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型,可修改为其他类型,具体参考头文件注释
    order_info.price = 12.51;//价格,可参考行情修改
    order_info.quantity = 200;//买卖股票的委托数量,需参考交易规则
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//=0说明下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }

}

2.新股申购交易下单代码示例

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/

void iposInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "303001";//新股申购的新股代码,可参考QueryIPOInfoList()查询结果
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_IPOS;//XTP_BUSINESS_TYPE_IPOS为新股申购的业务类型
    order_info.side = XTP_SIDE_BUY;//买
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型,仅能使用限价
    order_info.quantity = 500;//申购数量,用户可根据实际可申购数量来填写,可参考QueryIPOQuotaInfo()查询结果,对于申购单位:深证500股,上证1000股,科创板500,委托数量必须是这些单位的整数倍
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//=0说明下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }

}

3.配股或者配债下单代码示例

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/

void allotmentInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "380033";//配股或者配债代码,可参考QueryPosition()查询结果
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_ALLOTMENT;//XTP_BUSINESS_TYPE_ALLOTMENT为配股业务类型
    order_info.side = XTP_SIDE_BUY;//买卖类型必须是买
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型,仅能使用限价
    order_info.quantity = 80;//配售股票或者债券的委托数量,单位是股或者张,用户可根据QueryPosition()接口查询的结果来填写
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

4.国债逆回购下单代码示例

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/

void repoInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "131810";//需要交易的股票代码,用户自行更改
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_REPO;//XTP_BUSINESS_TYPE_REPO为国债逆回购业务类型
    order_info.side = XTP_SIDE_SELL;//卖
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型,仅能使用限价
    order_info.price = 1.995;//价格,可参考行情修改
    order_info.quantity = 50;//国债逆回购的委托数量,单位为张,1手=10张,需参考交易所规则,上交所和深交所都是10张的整数倍,单笔最大申报数量不得超过1亿张。
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

5.ETF申赎下单代码示例

(1) 申购

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/

void ETFInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SH_A;//市场类型:上证(跟证券代码所属的交易所相一致)
    std::string ticker = "515880";//ETF买卖代码,XTP内统一使用买卖代码,不使用申赎代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_ETF;//XTP_BUSINESS_TYPE_ETF为ETF申赎业务类型
    order_info.side = XTP_SIDE_PURCHASE;//申购
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.quantity = 1000000;//委托数量为最小申赎单位的倍数,可以参考QueryETF()的查询结果填写
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(2) 赎回

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/

void ETFInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SH_A;//市场类型:上证(跟证券代码所属的交易所相一致)
    std::string ticker = "515880";//ETF买卖代码,XTP内统一使用买卖代码,不使用申赎代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_ETF;//XTP_BUSINESS_TYPE_ETF为ETF申赎业务类型
    order_info.side = XTP_SIDE_REDEMPTION;//赎回
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.quantity = 1000000;//委托数量为最小申赎单位的倍数,可以参考QueryETF()的查询结果填写
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

6.信用业务交易示例代码

(1) 融资买入

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/
void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";//需要交易的股票代码,用户自行更改
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_MARGIN_TRADE;//融资买入
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价,可修改为其他类型,具体参考头文件注释
    order_info.price = 19.05;//价格,可参考行情修改
    order_info.quantity = 200;//数量,具体参考交易所规则,融资买入的最大数量需满足维持担保品比例,可参考QueryCreditFundInfo查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(2) 融券卖出

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";//需要交易的股票代码,用户自行更改,可参考QueryCreditTickerAssignInfo()查询结果
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_SHORT_SELL;//融券卖出
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.price = 19.05;//价格不得低于最新价
    order_info.quantity = 200;//数量,请参照交易规则,不可为零散股,剩余可融券数量可参考QueryCreditTickerAssignInfo()查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(3) 卖券还款

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";//需要交易的股票代码,用户自行更改
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_REPAY_MARGIN;//卖券还款
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型:限价,可修改为其他类型,具体参考头文件注释
    order_info.price = 19.05;//价格,可参考行情修改
    order_info.quantity = 200;//委托数量,具体参考交易所规则,最大数量可参考QueryPosition()查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(4) 买券还券

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_REPAY_STOCK;//买券还券
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价,可修改为其他类型,具体参考头文件注释
    order_info.price = 19.05;//价格,可参考行情修改
    order_info.quantity = 200;//委托数量,具体参考交易所规则
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(5) 现券还券

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";//需要还券的股票代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_STOCK_REPAY_STOCK;//现券还券
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.quantity = 100;//数量,可以零散股。融券负债可还券数量,不包含今天融券卖出的数量,可参考QueryCreditTickerDebtInfo()查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(6) 余券划转

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "000001";//需要划转的余券代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_SURSTK_TRANS;//余券划转
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.quantity = 99;//可划转数量,可参考QueryMulCreditExcessStock()查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(7) 担保品转入

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "300860";//需要转入的股票代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_GRTSTK_TRANSIN;//担保品转入
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.quantity = 20;//数量,需用户自行查询现货账户内的持仓数量
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(8) 担保品转出

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "300860";//持仓里的证券代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_GRTSTK_TRANSOUT;//担保品转出
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.quantity = 20;//数量,不可超过可卖持仓的数量,可参考QueryPosition()查询结果填写
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
} 

(9) 担保品买

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "159919";//股票代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_BUY;//买
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价,可修改为其他类型,具体参考头文件注释
    order_info.price = 5.721;//价格,可参考行情修改
    order_info.quantity = 200;//委托数量,具体参考交易所规则
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(10) 担保品卖

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "159919";//持仓里的证券代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_SELL;//卖
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价,可修改为其他类型,具体参考头文件注释
    order_info.price = 5.721;//价格,可参考行情修改
    order_info.quantity = 200;//委托数量,具体参考交易所规则,不可超过可卖持仓的数量,可参考QueryPosition()查询结果填写
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(11) 指定卖券还息

void marginInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "159919";//持仓里的证券代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_MARGIN;//XTP_BUSINESS_TYPE_MARGIN为融资融券业务类型
    order_info.side = XTP_SIDE_REPAY_MARGIN;//卖券还款
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价
    order_info.price = 5.721;//价格,可参考行情修改
    order_info.quantity = 200;//数量,不可超过可卖持仓的数量,可参考QueryPosition()查询结果填写
    std::string str_debt_id = "202111020012000000015";//负债信息的合约编码,可自行修改
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->CreditSellStockRepayDebtInterestFee(&order_info, str_debt_id.c_str(), session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(12) 现金还款

void readyCreditCashRepay(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    double amount = 60000.0;//申请还款金额,待还资金可参考QueryCreditAssetDebtInfo()查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->CreditCashRepay(amount, session_id_);//现金直接还款请求
        if(xtp_id == 0)
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
    
}

(13) 指定现金还息

void readyCreditCashRepayDebtInterestFee(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    std::string debt_id = "201903110005100000175";//需要还息的负债合约编号
    double amount = 60000.0;//现金还息的金额,可参考QueryCreditDebtInfo()查询结果
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->CreditCashRepayDebtInterestFee(debt_id.c_str(), amount, session_id_);//现金还指定负债合约息费请求
        if(xtp_id == 0)
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

7. 期权业务交易相关示例代码

(1) 期权业务

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/
void optInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "91003521";//合约代码
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_OPTION;//XTP_BUSINESS_TYPE_OPTION为期权业务类型
    order_info.side = XTP_SIDE_BUY;//买
    order_info.position_effect = XTP_POSITION_EFFECT_OPEN;//开
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型为限价,可修改为其他类型,具体参考头文件注释
    order_info.price = 2.5093;//价格,可参考行情修改
    order_info.quantity = 3;//数量,具体参考交易所规则
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(2) 行权

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/
void optInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟证券代码所属的交易所相一致)
    std::string ticker = "91003521";//当日日期与该合约行权日一样,才能做行权
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_EXECUTE;//XTP_BUSINESS_TYPE_EXECUTE为行权业务类型
    order_info.quantity = 3;//数量,用户可自行修改
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}

(3) 组合策略的合并

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/
void optInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOptCombOrderInsertInfo order_info;//XTPOptCombOrderInsertInfo 为组合策略下单的结构体
    memset(&order_info, 0, sizeof(XTPOptCombOrderInsertInfo));
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟腿的合约代码所属的交易所相一致)
    order_info.quantity = 3;//合并的合约数目,用户自行修改
    order_info.business_type = XTP_BUSINESS_TYPE_OPTION_COMBINE;//组合策略业务类型
    order_info.side = XTP_SIDE_OPT_COMBINE;//合并
    std::string std_str_strategy_id = "CNSJC";//策略代码类型
    strcpy_s(order_info.opt_comb_info.strategy_id, XTP_STRATEGY_ID_LEN, std_str_strategy_id.c_str());//XTP_STRATEGY_ID_LEN策略代码的存放长度
    // 组合策略腿合约信息结构体,目前组合策略的合并只支持两条腿的合约代码合并
    order_info.opt_comb_info.num_legs = 2;//两个腿
    std::string std_str_ticker1 = "91003521";//腿1的合约代码,用户自行修改
    std::string std_str_ticker2 = "91003536";//腿2的合约代码,用户自行修改
    strcpy_s(order_info.opt_comb_info.leg_detail[0].leg_security_id, XTP_TICKER_LEN, std_str_ticker1.c_str());//XTP_TICKER_LEN:存放合约代码的字符串长度
    strcpy_s(order_info.opt_comb_info.leg_detail[1].leg_security_id, XTP_TICKER_LEN, std_str_ticker2.c_str());
    uint64_t xtp_id = pUserApi->InsertOptionCombinedOrder(&order_info, session_id_);//组合策略下单接口
	if(xtp_id == 0)//下单发送失败
    {
        XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
    }
}

(4) 组合策略的拆分

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/
void optInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOptCombOrderInsertInfo order_info;//XTPOptCombOrderInsertInfo 为组合策略下单的结构体
    memset(&order_info, 0, sizeof(XTPOptCombOrderInsertInfo));
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟腿的合约代码所属的交易所相一致)
    order_info.quantity = 3;//要拆分的合约数量,可自行修改
    order_info.business_type = XTP_BUSINESS_TYPE_OPTION_COMBINE;//组合策略业务类型
    order_info.side = XTP_SIDE_OPT_SPLIT;//拆分
    std::string std_str_comb_num = "00B0R4JJOA000026";//要拆分的组合编码
    strcpy_s(order_info.opt_comb_info.comb_num, XTP_SECONDARY_ORDER_ID_LEN, std_str_comb_num.c_str());//XTP_SECONDARY_ORDER_ID_LEN组合编码的字符串长度
    std::string std_str_strategy_id = "CNSJC";//该组合的策略代码类型
    strcpy_s(order_info.opt_comb_info.strategy_id, XTP_STRATEGY_ID_LEN, std_str_strategy_id.c_str());//XTP_STRATEGY_ID_LEN策略代码的存放长度
    uint64_t xtp_id = pUserApi->InsertOptionCombinedOrder(&order_info, session_id_);//组合策略下单接口
	if(xtp_id == 0)//下单发送失败
    {
        XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
    }
}

(5) 合并行权

void optInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOptCombOrderInsertInfo order_info;
    memset(&order_info, 0, sizeof(XTPOptCombOrderInsertInfo));
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟腿的合约代码所属的交易所相一致)
    order_info.quantity = 3;//要合并行权的合约数量,可自行修改
    order_info.business_type = XTP_BUSINESS_TYPE_EXECUTE_COMBINE;//行权合并的业务类型
    std::string std_str_strategy_id = "exec";
    strcpy_s(order_info.opt_comb_info.strategy_id, XTP_STRATEGY_ID_LEN, std_str_strategy_id.c_str());//XTP_STRATEGY_ID_LEN策略代码的存放长度
    order_info.opt_comb_info.num_legs = 2;//腿数目为2(目前最多只支持两条腿)
    std::string ticker1 = "91003536";//腿1的合约代码,用户自行修改
    std::string ticker2 = "91003521";//腿2的合约代码,用户自行修改
    strcpy_s(order_info.opt_comb_info.leg_detail[0].leg_security_id, XTP_TICKER_LEN, ticker1.c_str());//XTP_TICKER_LEN:存放合约代码的字符串长度
    strcpy_s(order_info.opt_comb_info.leg_detail[1].leg_security_id, XTP_TICKER_LEN, ticker2.c_str());
    uint64_t xtp_id = pUserApi->InsertOptionCombinedOrder(&order_info, session_id_);//组合策略下单接口
	if(xtp_id == 0)//下单发送失败
    {
        XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
    }
}

8.债转股下单代码示例

/*XTP::API::TraderApi* pUserApi //交易api的创建示例在此忽略
uint64_t session_id_ //登录成功后得到的会话
*/

void bondSwapStockInsertOrder(XTP::API::TraderApi* pUserApi, uint64_t session_id_)
{
    XTPOrderInsertInfo order_info;//XTPOrderInsertInfo 为下单参数结构体
    memset(&order_info, 0, sizeof(XTPOrderInsertInfo));//结构体初始化
    //参数赋值
    order_info.market = XTP_MKT_SZ_A;//市场类型:深证(跟可转债代码所属的交易所相一致)
    std::string ticker = "380033";//需要进行债转股操作的可转债代码,可参考QueryPosition()查询结果以及QueryBondSwapStockInfo()查询结果
    strcpy_s(order_info.ticker, XTP_TICKER_LEN, ticker.c_str());//XTP_TICKER_LEN:存放证券代码的字符串长度
    order_info.business_type = XTP_BUSINESS_TYPE_BOND_SWAP_STOCK;//XTP_BUSINESS_TYPE_BOND_SWAP_STOCK为债转股业务类型
    order_info.side = XTP_SIDE_SELL;//买卖类型必须是卖
    order_info.position_effect = XTP_POSITION_EFFECT_INIT;//position_effect开平标志,除期权以外,都使用该值
    order_info.price_type = XTP_PRICE_LIMIT;//价格类型使用限价
    order_info.quantity = 100;//进行债转股操作的可转债的委托数量,单位是张,用户可根据QueryPosition()接口查询的结果以及QueryBondSwapStockInfo()查询结果来填写
    if(pUserApi && session_id_ !=0 )
    {
        uint64_t xtp_id = pUserApi->InsertOrder(&order_info, session_id_);//下单接口
        if(xtp_id == 0)//下单发送失败
        {
            XTPRI * error = pUserApi->GetApiLastError();//获取下单发送失败的错误码
        }
    }
}