1 如何接入CTP进行交易?
OpenOrder提供了策略框架,简单的策略只需要继承strat::Instance类,定义load(初始化策略、订阅行情),onData(处理行情数据)即可。对接CTP通道,只需要在json配置文件中添加配置项。
class Instance
{
public:
Instance(ContextPtr context) : context_(context){};
virtual std::string globalUniqueName() PURE;
virtual int load(const std::string& jsonContent = "") PURE;
virtual void onData(int32_t dataType, const char* data,
size_t datasiz) PURE;
virtual void onExecStarted(const trade::TransactionPtr& transaction){};
virtual void onExecSnapshot(const trade::TransactionPtr& transaction,
OROrderFieldPtr order){};
virtual void onExecSnapshot(const trade::TransactionPtr& transaction,
ORTradeFieldPtr trade){};
virtual void onExecFinished(const trade::TransactionPtr& transaction){};
virtual or_limitprice_f
updateOrderPrice(const trade::OrderPackInfoPtr& orderPack,
const trade::TransactionPtr& transaction,
bool clearCounter)
{
return orderPack->limitPrice();
}
virtual void onUnload(std::string& reason){};
protected:
/// 目前统一使用该对象直接访问Context。
ContextPtr context_;
};
使用OpenOrder,你只需要在json配置文件中添加如下内容即可在策略中使用:
{
"is_active": 1,
"channel_id": 10001,
"channel_type": "2",
"type_info": "CTP",
"type_name": "CTP_SE",