public void TestGetKline()
        {
            ThreeMarketsDataProviderModel model = env.CurrentKline;

            Assert.AreEqual(10, model.Coin12CoinKline.Close);
            Assert.AreEqual(0.3M, model.Coin22CoinKline.Close);
            Assert.AreEqual((0.3M / 10) + 0.001M, model.Coin22Coin1Kline.Close);

            env.MoveNextTime(out model);
            Assert.AreEqual(11, model.Coin12CoinKline.Close);
            Assert.AreEqual(0.4M, model.Coin22CoinKline.Close);
            Assert.AreEqual((0.4M / 11) - 0.002M, model.Coin22Coin1Kline.Close);
        }
Пример #2
0
        /// <summary>
        /// 運行策略
        ///
        /// 那個貨幣漲最多就持有那個貨幣,如果都是跌,就平倉
        /// </summary>
        /// <param name="model"> 當下的市場資訊 </param>
        /// <returns></returns>
        public override StrategyAction PolicyDecision(ThreeMarketsDataProviderModel model)
        {
            buffer.Enqueue(model);

            if (buffer.Count < ObservationTime || !CanTrading())
            {
                return(StrategyAction.WaitBuffer);
            }

            if (Coin1ToCoinChange < 0 && Coin2ToCoinChange < 0)
            {
                return(StrategyAction.Coin);
            }
            if (Coin1ToCoinChange > Coin2ToCoinChange)
            {
                return(StrategyAction.Coin1);
            }
            else
            {
                return(StrategyAction.Coin2);
            }
        }