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); }
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); }
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); }
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); }
public IStockTrader GetStockTrader() { if (stockTrader == null) { stockTrader = DllUtils.CreateInstance<IStockTrader>(Configure.GetCurrentStock().Dll, Configure.GetCurrentStock().ClazzName); stockTrader.Init(); } return stockTrader; }
public IStockTrader GetStockTrader() { if (stockTrader == null) { stockTrader = DllUtils.CreateInstance <IStockTrader>(Configure.GetCurrentStock().Dll, Configure.GetCurrentStock().ClazzName); stockTrader.Init(); } return(stockTrader); }
/// <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); }
// 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); }
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(); }
public bool TrySellOnMultiInc(IStockTrader trader, StockQuoteHistory sqHist, double quote, int noOfIncs, int fraction) { return(TradeConditional(trader, () => sqHist.Incs >= noOfIncs, trader.TryToSellStock, quote, fraction)); }
public bool TryBuyOnMultiDec(IStockTrader trader, StockQuoteHistory sqHist, double quote, int noOfDecs, int fraction) { return(TradeConditional(trader, () => sqHist.Decs >= noOfDecs, trader.TryToBuyStock, quote, fraction)); }
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; }