国外期货程序化交易之报单流程讲解

       本国期货和约的组成顺序,这两个开展也鉴于易胜,郑州的SDK。,经过易胜行业API应验买卖定单。。说到底,它们都是一家公司排放的SDK。,从此,买卖API的设计风骨与预备根本俱。,呼叫逻辑根本俱。。编辑编码时,需求处置两个方面。,第一是召集者。,那就是提名第一恳求。,另第一是回调。,相配恳求,在这一点上缺少更多的特殊情况。。合奏上讲,事务开拓一道菜短时间有趣。,仍然更多的事实要处置。。首要应用的头纵列是:、、及,静态库为:。下面是流程图和许多的编码示例。:

       1. 安排Yi Sheng TapAPI示例:

IEsunnyTradeApi *pTradeApi = CreateEsunnyForeignTradeApi(szCertInfo, &result, szLogFilePath, szAppId);
if (pTradeApi == 空)
{
    LOG_INFO << "安排trade api范例失败,错误码:" << result;
    return;
}
       经过命令CreateEsunnyForeignTradeApi()安排api范例——pTradeApi,后来地命令范例来启动各式各样的恳求。,比如,衔接服役。、用户登录、报单、撤单、查询仓库栈、查询资产等。。

       2. 安排TabAPI回调范例:

EsunnyTradeSpi *pTradeSpi = new EsunnyTradeSpi(pTradeApi, 很)

       这需求编辑相配的引起类。,该类需发扬光大易盛预备的IEsunnyTradeSpi类。重写该类正中鹄的办法,处置Yisheng服役发送的各式各样的从科学实验中提取的代价。。

       3. 吃或喝下面的两个实例。,启动衔接服役和用户登录。:

pTradeApi->SetSpi(pTradeSpi);
pTradeSpi->connect(serverAddr, port, username, 密电码)

       衔接服役部件编码:

void EsunnyTradeSpi:衔接(字母串) serverAddr, uint16_t port, string username, string 密电码)
{
    // 蜜饯登录通信
    serverAddr_ = serverAddr;
    port_ = port;
    username_ = username;
    password_ = password;

    // 设置服役IP、港口, 并启动衔接。
    TEsAddressField addrField;
    strcpy(addrField.Ip, serverAddr_.c_str());
    addrField.Port = port_;
    bool ret = (pTradeApi_ != 空) ? pTradeApi_->Open(addrField) : false;
    if (!RET)
    {
        LOG_INFO << username_ << " 恳求: 衔接服役出错" << Err_Unknown;
    }
}
       恳求收回后,OnOpen()将回调以相配前述的恳求。,可以在OnOPEN()功用中写信反映用户登录逻辑。,命令pTraceAPI(>登录)来启动登录。,OnLogin()及OnInitFinished()会先后相配前述的恳求,主要成分重现的通信,您可以验明假设已应验登录。,和API假设被设定初值。。一旦出错,将有相配的错误编码重现。,轻易见的成绩。
void __cdecl EsunnyTradeSpi::OnOpen()
{
}

void __cdecl EsunnyTradeSpi::OnLogin(const TEsLoginRspField *rsp, int errCode, const int iReqID)
{
}

void __cdecl EsunnyTradeSpi::OnInitFinished(int errCode)
{
}
       4. sunbet:

      述说逻辑应是全体定量买卖系统的中心部件。述说首要关涉以下功用,从ON开端的功用是从iESunnTrutsPPI类发扬光大的。,开拓人员需求重写:

       (1)OrderInsert():报单恳求

TEsOrderInsertReqField reqField;
memset(&reqField, 0, sizeof(TEsOrderInsertReqField));
......
......
pTradeApi_->OrderInsert(reqField, ReqID)
       述说有很多决定因素。,需求马上填写事情/揭发。、开/闭投资、市价/价钱限度局限、付托定量、佣钱价钱等。。这需求查询文档和易胜的示例演示。,OrderInsert()述说可在应验后命令。。

       (2)OnRspOrderInsert():报单恳求应对

void __cdecl EsunnyTradeSpi::OnRspOrderInsert(const TEsOrderInsertRspField *rsp, int errCode, const int iReqID)
{
}
       宣言成后,功用将回调。,它将神志清醒的地告语政务会假设成。,趋向开拓人员处置事情逻辑。

       (3)OnRtnOrderState():付托变动流通的

void __cdecl EsunnyTradeSpi::OnRtnOrderState(const TEsOrderStateNoticeField RSP)
{
}
       当付托身份变老时,将回调。大抵,付托的位置首要是:在排队、部件买卖、完整成交,一次报单,倘若有更多的定量,通常过错一次所大约买卖。,它将被划堕入丰盛的的买卖。,因而很功用将持续回调。。

       (4)OnRtnMatchState():买卖变动推进运动流通的

void __cdecl EsunnyTradeSpi::OnRtnMatchState(const TEsMatchStateNoticeField RSP)
{
}
       可以触摸很功用与(5)反复。,因而我在处置它。,在很功用中径直命令功用(5),不要写过度的逻辑。

       (5)OnRtnMatchInfo():买卖通信更改推进运动流通的

void __cdecl EsunnyTradeSpi::OnRtnMatchInfo(const TEsMatchInfoNoticeField RSP)
{
}

       很功用更要紧。,重现的每条款音讯都是事务通信。,它表现容积。、成交价、买卖费等。,这些是围攻者小心力的从科学实验中提取的代价。。总体来说,ONRSP开端时的功用都是,ONRTN的初始功用是服役的驱使推进运动通信功用。。需求小心的事项。,易胜限度局限了述说的频率。,普通期货账目,对账单的频率是10单/秒。,从此,在编辑CO时,需求编辑票据流把持逻辑。。

       5. 查询期货记述投资:

       查询仓库栈首要命令pTradeApi_->QryHold(),主要成分纵列填写应该的的决定因素。。查询仓库栈相配功用为:

void __cdecl EsunnyTradeSpi::OnQryHold(const TEsHoldQryRspField *rsp, TEsIsLastType islast, int errCode, const int iReqID)
{
}
       该功用需求由开拓人员本身重写。,讨厌的人的是,从科学实验中提取的代价不见得一起重现。,不过成总儿补偿。,你需求本身做第一汇总计算。。

       6. 查询期货记述资产:

      查询基金首要命令pTrimaPisi-> qRyBayes,主要成分纵列填写应该的的决定因素。。查询基金相配功用:

void __cdecl EsunnyTradeSpi::OnQryMoney(const TEsMoneyQryRspField *rsp, TEsIsLastType islast, int errCode, const int iReqID)
{
}
       异样,很功用需求开拓人员重写本身。,这是比拟复杂的。,它将可供使用的言归正传记述资产的相干通信。,如:使得资产、现钱、往昔的钱、经纪费、记述的义卖市场代价等。。
       编辑完编码,以少许方式测得结果顺序?那终止。,你可以去Yisheng官方网站(留下印象)买卖测得结果账号。,留下印象成后,有100万的记述。,因而咱们可以测得结果开闭投资。。这些仅仅许多的根本举动。,另外举动需求反省API文档并写信反映相配的。异样,实时买卖顺序必需无效和稳固。,因而你不克不及遗失少许义卖市场。,一旦买卖预兆呈现,适时应验开仓或结仓,进项极大值化。在这一点上,顺便一提说一下。,易胜的对外行业系统是套期保值。,比如,同时,单手、单手和单手空表,易买卖系统套期保值后,事实上的,不见得有少许述说。。从此,当多的同时应用同第一账目时,,事实上的,你可以在对冲预先阻止写出对冲池。,就是说,当相同的物种在期货记述下时,它将是DECL。,这将增进使萧条买卖费。。

       参考资料:

       

 

发表评论