コード例 #1
0
ファイル: StrategyMgr.cs プロジェクト: voicevon/OkexTrader
 public void update()
 {
     foreach (var keyVal in m_strategies)
     {
         OkexStrategy s = keyVal.Value;
         if (s != null)
         {
             s.update();
         }
     }
 }
コード例 #2
0
ファイル: StrategyMgr.cs プロジェクト: voicevon/OkexTrader
        public void runStrategy(string strategyFile)
        {
            string       str  = System.IO.File.ReadAllText(strategyFile);
            JObject      jo   = (JObject)JsonConvert.DeserializeObject(str);
            string       type = (string)jo["StrategyType"];
            string       info = jo["StrategyInfo"].ToString();
            OkexStrategy s    = generateStrategy(type, info);

            if (s != null)
            {
                m_strategies.Add(strategyFile, s);
            }
        }
コード例 #3
0
ファイル: StrategyMgr.cs プロジェクト: voicevon/OkexTrader
        public OkexStrategy generateStrategy(string type, string info)
        {
            OkexStrategy s = null;

            if (type == "TPByBasis")
            {
                JObject jo                       = (JObject)JsonConvert.DeserializeObject(info);
                string  strInst                  = (string)jo["Instrument"];
                OkexFutureInstrumentType fi      = strInstrumentMap[strInst];
                string strSC                     = (string)jo["SpotContract"];
                OkexFutureContractType sc        = strContractMap[strSC];
                string strFC                     = (string)jo["ForwardContract"];
                OkexFutureContractType fc        = strContractMap[strFC];
                string strDir                    = (string)jo["Direction"];
                OkexFutureTradeDirectionType dir = OkexFutureTradeDirectionType.FTD_Sell;
                if (strDir.Equals("buy", StringComparison.OrdinalIgnoreCase))
                {
                    dir = OkexFutureTradeDirectionType.FTD_Buy;
                }
                else if (strDir.Equals("sell", StringComparison.OrdinalIgnoreCase))
                {
                    dir = OkexFutureTradeDirectionType.FTD_Sell;
                }
                OkexBasisCalcType bc      = OkexBasisCalcType.BC_Ratio;
                string            strType = (string)jo["Type"];
                if (strType.Equals("ratio", StringComparison.OrdinalIgnoreCase))
                {
                    bc = OkexBasisCalcType.BC_Ratio;
                }
                else if (strType.Equals("diff", StringComparison.OrdinalIgnoreCase))
                {
                    bc = OkexBasisCalcType.BC_Diff;
                }

                s = new OkexTransferPositionByBasis(fi, sc, fc, bc, dir);

                //double boardLot = (double)jo["BoardLot"];
                double basis = (double)jo["Basis"];
                double safe  = (double)jo["Safe"];
                double limit = (double)jo["Limit"];
                uint   count = (uint)jo["Count"];
                double param = (double)jo["Param"];
                ((OkexTransferPositionByBasis)s).init(basis, safe, limit, count, param);
            }

            return(s);
        }