0
点赞
收藏
分享

微信扫一扫

量化交易之One Piece篇 - OnePieceCore.h


#pragma once

#include <onepiece/models/AccountModel.h>
#include <onepiece/traderctp/TraderCTP.h>
#include <onepiece/marketctp/MarketCTP.h>

#include <onepiece/templates/ITraderApi.h>
#include <onepiece/templates/IMarketApi.h>

#include <onepiece/templates/ICoreListener.h>
#include <onepiece/templates/IPluginContext.h>
#include <memory>
#include <unordered_map>

#include <boost/asio.hpp>
#include <rapidjson/document.h>

using namespace rapidjson;
using namespace std;

class OnePieceCore: public ICoreListener {

public:
    OnePieceCore() = delete;

    OnePieceCore(string configPath);

    virtual ~OnePieceCore();


public:
    virtual void OnTraderReady(StatusInfoFieldSPtr statusInfoFieldSPtr);

    virtual void OnMarketReady(StatusInfoFieldSPtr statusInfoFieldSPtr);

    virtual void OnTickReceived(TickSPtr tickSPtr);

    virtual void OnOrderReceived(OrderSPtr orderSPtr);

    virtual void OnErrorOrderReceived(OrderSPtr orderSPtr);

    virtual void OnTradeReceived(TradeSPtr tradeSPtr);

    virtual void Run();

    virtual const shared_ptr<vector<string>> SysInstruments();


private:
    virtual bool InsertOrder(const OrderSPtr orderSPtr);

    virtual string GetOrderStatusString(OPOrderStatus orderStatus);

    virtual OrderSPtr SyncContextsPosAndRealPos(ContractSPtr contractSPtr, TickSPtr tickSPtr, int contractContextsPos);

    virtual OrderSPtr SyncStockIndexContextsPosAndRealPos(ContractSPtr contractSPtr, TickSPtr tickSPtr, int contractContextsPos);

    virtual bool LoadExchangeSettingJson(const string& exchangeSettingJson);

    virtual bool LoadTradingTimeJson(const string& tradingTimeJson);

    virtual bool LoadSessionsTimeJson(const string& sessionsTimeJson);

    virtual bool LoadStrategiesSettingJson(const string& strategiesSettingJson);

    virtual bool InitExchangeRiskControl(ContractSPtr contractSPtr);

    virtual bool InitTradingTime(ContractSPtr contractSPtr);

    virtual bool InitSessionsTime(ContractSPtr contractSPtr);

    virtual bool InitContexts(ContractSPtr contractSPtr);

    virtual bool InitCoreDetailLogger();

    virtual bool WakeUpSysContractSPtrContexts();


private:
    AccountSPtr m_accountPtr;

    shared_ptr<unordered_map<string, OrderSPtr>> m_contractOrderSPtrMap; // <- eg: {"SHFE.rb2310": OrderSPtr(), "DCE.i2309": OrderSPtr()}

    shared_ptr<vector<string>> m_sysInstruments; // <- ["rb2310", "i2309"], make with config file in one piece core.

    shared_ptr<thread> m_traderThread;

    Document m_strategiesSettingDocument;

    Document m_exchangeSettingDocument;

    Document m_tradingTimeDocument;

    Document m_contextsSettingDocument;

    Document m_sessionsTimeDocument;
};

举报

相关推荐

0 条评论