策略基类
基类原型
策略类简介
策略类集成了行情、交易和事件的接口,用户的策略都从此类继承实现自己的业务逻辑。每个进程只能实例化一个策略类对象。
策略类定义
public class Strategy
{
    //策略基类构造函数
    //token:
    //strategy_id:策略ID
    //mode:运行模式
    public Strategy(string token, string strategyId, int mode);
//=====================================策略参数类函数=====================================
    //添加参数
    public int AddParameters(Parameter param);
    //删除参数
    public int DelParameters(string keys);
    //获取标的
    public GMDataList<string> GetSymbols();
    //设置标的
    public int SetSymbols(string symbols);
    //设置回测参数
       public int SetBacktestConfig(string startTime, string endTime, double initialCash = 1000000, double transactionRatio = 1, double commissionRatio = 0, double slippageRatio = 0, int adjust = 0, int checkCache = 1);
    //设置参数
    public int SetParameters(List<Parameter> parameters);
//=======================================交易函数================================================
    //查询交易账号
    public GMDataList<Account> GetAccounts();
    //查询资金
    public GMDataList<Cash> GetCash(string account = null);
    //查询成交
    public GMDataList<ExecRpt> GetExecutionReports(string account = null);
    //查询委托
    public GMDataList<Order> GetOrders(string account = null);
    //查询持仓
    public GMDataList<Position> GetPosition(string account = null);
    //查询未结委托
    public GMDataList<Order> GetUnfinishedOrders(string account = null);
    //委托撤单, 
    public int OrderCancel(string clOrdIds);
    //撤销所有委托
    public void OrderCancelAll();
    //平当前所有可平持仓
    public GMDataList<Order> OrderCloseAll();
    //按总资产指定比例委托
    public GMData<Order> OrderPercent(string symbol, double percent, int side, int orderType, int positionEffect, double price = 0, string account = null);
    //调仓到目标持仓比例(总资产的比例)
    public GMData<Order> OrderTargetPercent(string symbol, double percent, int positionSide, int orderType, double price = 0, string account = null);
    //调仓到目标持仓额
    public GMData<Order> OrderTargetValue(string symbol, double value, int positionSide, int orderType, double price = 0, string account = null);
    //调仓到目标持仓量
    public GMData<Order> OrderTargetVolume(string symbol, int volume, int positionSide, int orderType, double price = 0, string account = null);
    //按指定价值委托
    public GMData<Order> OrderValue(string symbol, double value, int side, int orderType, int positionEffect, double price = 0, string account = null);
    //按指定量委托
    public GMData<Order> OrderVolume(string symbol, int volume, OrderSide side, OrderType orderType, PositionEffect positionEffect, double price = 0, string account = null);
//=====================================基础函数=================================
    //运行策略
    public int Run();
    //定时任务
    public int Schedule(string dataRule, string timeRule);
    //停止策略
    public int Stop();
    //当前事件
    public long Now();
    //设置token
    public int SetToken(string token);
    //设置运行模式
    public int SetMode(StrategyMode mode);
    //设置策略ID
    public int SetStrategyId(string strategyId);
    //查询指定账户状态
    public AccountStatus GetAccountStatus(string accountId);
    //查询所有账户状态
    public List<AccountStatus> GetAccountStatus()
//====================================数据函数=============================================
    //订阅行情
    public int Subscribe(string symbols, string frequency, bool unsubscribePrevious = false);
    //退订行情
    public int Unsubscribe(string symbols, string frequency);
//========================================事件函数==============================================
    //初始化完成
    public virtual void OnInit();
    //实盘账号状态变化
    public virtual void OnAccountStatus(AccountStatus accountStatus);
    //收到bar行情
    public virtual void OnBar(Bar bar);
    //cash发生变化
    public virtual void OnCashStatus(Cash order);
    //错误事件
    public virtual void OnError(int errorCode, string errorMsg);
    //执行回报
    public virtual void OnExecutionReport(ExecRpt rpt);
    //回测结束
    public virtual void OnBacktestFinished(Indicator indicator);
    //数据库已连接
    public virtual void OnMarketDataConnected();
    //数据库断开
    public virtual void OnMarketDataDisconnected();
    //委托发生变化
    public virtual void OnOrderStatus(Order order);
    //运行时参数发生变化
    public virtual void OnParameter(List<Parameter> param);
    //position发生变化
    public virtual void OnPosition(Position position);
    //定时任务触发
    public virtual void OnSchedule(string dataRule, string timeRule);
    //策略结束
    public virtual void OnStop();
    //收到tick行情
    public virtual void OnTick(Tick tick);
    //交易已连接
    public virtual void OnTradeDataConnected();
    //交易断开
    public virtual void OnTradeDataDisconnected();
}