#pragma once
#include <onepiece/models/TickData.h>
#include <onepiece/models/OrderData.h>
#include <onepiece/models/TradeData.h>
#include <onepiece/models/StatusInfoFieldData.h>
#include <memory>
#include <onepiece/templates/IMarketApi.h>
#include <onepiece/templates/ITraderApi.h>
class ICoreListener {
public:
virtual void OnTraderReady(StatusInfoFieldSPtr statusInfoFieldDataSPtr) = 0;
virtual void OnMarketReady(StatusInfoFieldSPtr statusInfoFieldDataSPtr) = 0;
virtual void OnTickReceived(TickSPtr tickSPtr) = 0;
virtual void OnOrderReceived(OrderSPtr orderSPtr) = 0;
virtual void OnErrorOrderReceived(OrderSPtr orderSPtr) = 0;
virtual void OnTradeReceived(TradeSPtr tradeSPtr) = 0;
virtual void Run() = 0;
virtual const shared_ptr<vector<string>> SysInstruments() = 0;
virtual OrderSPtr EnterLong(const shared_ptr<string> instrumentID, double price, int lots) {
ContractSPtr contractSPtr = this->m_traderApi->GetSysContractSPtr(instrumentID->data());
if (!contractSPtr) // error log: 系统外部 的 合约
return nullptr;
OrderSPtr orderSPtr = this->MakeOrderSPtr(contractSPtr, lots, OPDirection::LONG, price, OPOpenClose::OPEN);
if (!orderSPtr) // error log: make order failed.
return nullptr;
bool ret = this->m_traderApi->InsertOrder(orderSPtr);
if (!ret) // error log: insert order failed.
return nullptr;
return orderSPtr;
};
virtual OrderSPtr EnterShort(const shared_ptr<string> instrumentID, double price, int lots) {
ContractSPtr contractSPtr = this->m_traderApi->GetSysContractSPtr(instrumentID->data());
if (!contractSPtr) // error log: 系统外部 的 合约
return nullptr;
OrderSPtr orderSPtr = this->MakeOrderSPtr(contractSPtr, lots, OPDirection::SHORT, price, OPOpenClose::OPEN);
if (!orderSPtr) // error log: make order failed.
return nullptr;
bool ret = this->m_traderApi->InsertOrder(orderSPtr);
if (!ret) // error log: insert order failed.
return nullptr;
return orderSPtr;
};
virtual OrderSPtr ExitLong(const shared_ptr<string> instrumentID, double price, int lots, OPOpenClose closeType = OPOpenClose::CLOSE) {
ContractSPtr contractSPtr = this->m_traderApi->GetSysContractSPtr(instrumentID->data());
if (!contractSPtr) // error log: 系统外部 的 合约
return nullptr;
OrderSPtr orderSPtr = this->MakeOrderSPtr(contractSPtr, lots, OPDirection::SHORT, price, closeType);
if (!orderSPtr) // error log: make order error.
return nullptr;
bool ret = this->m_traderApi->InsertOrder(orderSPtr);
if (!ret) // error log: insert order error.
return nullptr;
return orderSPtr;
};
virtual OrderSPtr ExitShort(const shared_ptr<string> instrumentID, double price, int lots, OPOpenClose closeType = OPOpenClose::CLOSE) {
ContractSPtr contractSPtr = this->m_traderApi->GetSysContractSPtr(instrumentID->data());
if (!contractSPtr) // error log: 系统外部 的 合约.
return nullptr;
OrderSPtr orderSPtr = this->MakeOrderSPtr(contractSPtr, lots, OPDirection::LONG, price, closeType);
if (!orderSPtr) // error log: make order failed.
return nullptr;
bool ret = this->m_traderApi->InsertOrder(orderSPtr);
if (!ret) // error log: insert order error.
return nullptr;
return orderSPtr;
};
virtual bool CancelOrder(const OrderSPtr orderSPtr) {
return this->m_traderApi->CancelOrder(orderSPtr);
}
private:
virtual OrderSPtr MakeOrderSPtr(ContractSPtr contractSPtr, int lots, OPDirection direction, double price, OPOpenClose combOffsetFlag) {
OrderSPtr orderSPtr = make_shared<OrderData>();
orderSPtr->setCompletedOrderLots(0);
orderSPtr->setCompletedTradeLots(0);
orderSPtr->setLots(lots);
orderSPtr->setDirection(direction);
orderSPtr->setLimitPrice(price);
orderSPtr->setCombOffsetFlag(combOffsetFlag);
orderSPtr->setOrderStatus(OPOrderStatus::UN_KNOWN);
orderSPtr->setInstrumentID(contractSPtr->InstrumentID());
orderSPtr->setExchangeID(contractSPtr->ExchangeID());
orderSPtr->setExchangeInstrument(contractSPtr->ExchangeInstrument());
return orderSPtr;
}
public:
TraderUPtr m_traderApi;
MarketUPtr m_marketApi;
};
量化交易之One Piece篇 - 模板 - ICoreListener.h
原创-
量化交易开发之基本语法(三)
本教程则是以量化的情景从零讲解python编程,所以将更适合想学做量化策略的人。
数据 变量名 python -
量化交易开发之函数API(四)
我们讲解一下python中的函数知识
API 数据 python -
量化交易开发之初识量化(一)
本系列课程将开启手把手保姆级实战课程,开发属于你自己的量化策略!!!
量化交易 策略因子 实战教学 -
量化交易之One Piece篇 - 模板 - ITraderApi.h
【代码】量化交易之One Piece篇 - 模板 - ITraderApi.h。
one piece c++ #include #pragma Data -
量化交易之One Piece篇 - 模板 - IPluginContext.h
【代码】量化交易之One Piece篇 - 模板 - IPluginContext.h。
c++ one piece #include ios #pragma -
量化交易之One Piece篇 - 模板 - IMarketApi.h
【代码】量化交易之One Piece篇 - 模板 - IMarketApi.h。
c++ one piece #pragma #include -
量化交易之One Piece篇 - ICoreListener.h - 封装线程安全消息队列&交易所风控容器
【代码】量化交易之One Piece篇 - ICoreListener.h - 封装线程安全消息队列&交易所风控容器。
one piece c++ #include ide #pragma -
量化交易之One Piece篇 - OnePieceEnum.h
【代码】量化交易之One Piece篇 - OnePieceEnum.h。
one piece #pragma -
量化交易之One Piece篇 - MarketCTP.h
【代码】量化交易之One Piece篇 - MarketCTP.h。
c++ linux one piece #include ios -
量化交易之One Piece篇 - CTA策略模板(父类)
【代码】量化交易之One Piece篇 - CTA策略模板(父类)
python 开发语言 ide bc -
量化交易之One Piece篇 - one_piece_server.py(stable版)
【代码】量化交易之One Piece篇 - one_piece_server.py(stable版)
python 开发语言 GAP json 启动脚本 -
量化交易之One Piece篇 - 生成主力合约文件(.h文件)
【代码】量化交易之One Piece篇 - 生成主力合约文件。
onepiece #include ios #pragma -
量化交易之One Piece篇 - spdlog - 示例demo
【代码】量化交易之One Piece篇 - spdlog - 示例demo。
c++ 算法 开发语言 #include -
量化交易之One Piece篇 - OrderData.h - 订单模型
【代码】量化交易之One Piece篇 - OrderData.h - 订单模型。
算法 模型 #include ios #pragma -
量化交易之One Piece篇 - TradeData.h - 成交回报模型
【代码】量化交易之One Piece篇 - TradeData - 成交回报模型。
c++ #include #pragma -
量化交易之One Piece篇 - TickData.h & TickData.cc
【代码】量化交易之One Piece篇 - TickData.h & TickData.cc。
c++ 模型 #include ios #pragma