Ejemplo n.º 1
0
        public void Test_Strat_DefAggr()
        {
            IStockTrader trader = StFac.CreateDefBuyAggrSell("(Def , Aggr)", InitStocks, InitQuote, InitCash);

            trader.Act(SqGen.Quotes);

            Assert.AreEqual(1307721.8, trader.Assets, 1.0);
        }
Ejemplo n.º 2
0
        public void Test_Strat_DefDef()
        {
            IStockTrader trader = StFac.CreateDefBuyDefSell("(Def , Def )", InitStocks, InitQuote, InitCash);

            trader.Act(SqGen.Quotes);

            Assert.AreEqual(1273003.9, trader.Assets, 1.0);
        }
Ejemplo n.º 3
0
        public void Test_Strat_AggrAggr()
        {
            IStockTrader trader = StFac.CreateAggrBuyAggrSell("(Aggr, Aggr)", InitStocks, InitQuote, InitCash);

            trader.Act(SqGen.Quotes);

            Assert.AreEqual(1285001.5, trader.Assets, 1.0);
        }
Ejemplo n.º 4
0
        public void Test_Strat_AggrDef()
        {
            IStockTrader trader = StFac.CreateAggrBuyDefSell("(Aggr, Def )", InitStocks, InitQuote, InitCash);

            trader.Act(SqGen.Quotes);

            Assert.AreEqual(1260124.6, trader.Assets, 1.0);
        }
Ejemplo n.º 5
0
 public IStockTrader GetStockTrader()
 {
     if (stockTrader == null)
     {
         stockTrader = DllUtils.CreateInstance<IStockTrader>(Configure.GetCurrentStock().Dll, Configure.GetCurrentStock().ClazzName);
         stockTrader.Init();
     }
     return stockTrader;
 }
Ejemplo n.º 6
0
 public IStockTrader GetStockTrader()
 {
     if (stockTrader == null)
     {
         stockTrader = DllUtils.CreateInstance <IStockTrader>(Configure.GetCurrentStock().Dll, Configure.GetCurrentStock().ClazzName);
         stockTrader.Init();
     }
     return(stockTrader);
 }
Ejemplo n.º 7
0
        /// <summary>
        /// General implementation of the "trade-if-condition" code idiom.
        /// </summary>
        private bool TradeConditional(IStockTrader trader, Func <bool> condition, Action <int, double> tradeFunc, double quote, int fraction)
        {
            if (!condition())
            {
                return(false);
            }

            tradeFunc(trader.NoOfStocks / fraction, quote);
            return(true);
        }
Ejemplo n.º 8
0
        // Aggressive buy:
        //  1) If three or more DECs in a row, buy 20 % extra
        //  2) If two or more DECs in a row, buy 10 % extra
        // Defensive sell:
        //  3) If four of last changes were INCs, sell 10 % of owned
        //  4) If three of last changes were INCs, sell 5 % of owned
        public void Trade(IStockTrader trader, int index, List <double> quotes)
        {
            double            quote  = quotes[index];
            StockQuoteHistory sqHist = StockQuoteAnalyser.Analyse(quotes, index, HistoryLength);

            if (StratsLib.TryBuyOnDecStreak(trader, sqHist, quote, 3, 5))
            {
                return;
            }
            if (StratsLib.TryBuyOnDecStreak(trader, sqHist, quote, 2, 10))
            {
                return;
            }
            if (StratsLib.TrySellOnMultiInc(trader, sqHist, quote, 4, 10))
            {
                return;
            }
            StratsLib.TrySellOnMultiInc(trader, sqHist, quote, 3, 20);
        }
Ejemplo n.º 9
0
        private static void TestTraders(IStockTraderFactory stFac, StockQuoteGenerator sqGen, string desc)
        {
            // Create a trade for each strategy.
            IStockTrader traderAA = stFac.CreateAggrBuyAggrSell("(Aggr, Aggr)", 1000, 200, 1000000);
            IStockTrader traderAD = stFac.CreateAggrBuyDefSell("(Aggr, Def )", 1000, 200, 1000000);
            IStockTrader traderDA = stFac.CreateDefBuyAggrSell("(Def , Aggr)", 1000, 200, 1000000);
            IStockTrader traderDD = stFac.CreateDefBuyDefSell("(Def , Def )", 1000, 200, 1000000);

            // Let each trader act out its trading strategy.
            List <IStockTrader> traders = new List <IStockTrader> {
                traderAA, traderDA, traderAD, traderDD
            };

            Console.WriteLine(desc);
            foreach (IStockTrader trader in traders)
            {
                trader.Act(sqGen.Quotes);
                Console.WriteLine(trader);
            }

            Console.WriteLine();
        }
Ejemplo n.º 10
0
 public bool TrySellOnMultiInc(IStockTrader trader, StockQuoteHistory sqHist, double quote, int noOfIncs, int fraction)
 {
     return(TradeConditional(trader, () => sqHist.Incs >= noOfIncs, trader.TryToSellStock, quote, fraction));
 }
Ejemplo n.º 11
0
 public bool TryBuyOnMultiDec(IStockTrader trader, StockQuoteHistory sqHist, double quote, int noOfDecs, int fraction)
 {
     return(TradeConditional(trader, () => sqHist.Decs >= noOfDecs, trader.TryToBuyStock, quote, fraction));
 }
Ejemplo n.º 12
0
 public bool TrySellOnIncStreak(IStockTrader trader, StockQuoteHistory sqHist, double quote, int streakLength, int fraction)
 {
     return(TradeConditional(trader, () => sqHist.IncStreak >= streakLength, trader.TryToSellStock, quote, fraction));
 }
 internal GameController(IStockTrader stockTrader, IPlayerRecordDAO playerRecordDAO)
 {
     this.stockTrader     = stockTrader;
     this.playerRecordDAO = playerRecordDAO;
 }
 public InvestmentAnalyzer(IStockTrader stockTrader)
 {
     this.stockTrader = stockTrader;
 }