public SignalsProcessor(ISystemDataLoader dataLoader, ICommission commission, ISlippage slippage) { _dataLoader = dataLoader; _commission = commission; _slippage = slippage; _rebalancer = new PositionsRebalancer(_dataLoader, _commission, _slippage); }
public SystemDefinitionFactory(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; }
public void SetUp() { _dataLoader = SystemDataLoaderUtils.CreateSubstitute(PricesCount, LastDate); _commission = CommissionUtils.CreateSubstitute(); _slippage = SlippageUtils.CreateSusbstitute(); TestObj = new PositionsRebalancer(_dataLoader, _commission, _slippage); _openPriceLevelCalled = false; }
public void SetUp() { _dataLoader = SystemDataLoaderUtils.CreateSubstitute(PricesCount, LastDate); _commission = CommissionUtils.CreateSubstitute(); _slippage = SlippageUtils.CreateSusbstitute(); TestObj = new SignalsProcessor(_dataLoader, _commission, _slippage); _signalSelectorCalled = false; _openPriceLevelCalled = false; }
public void SetUp() { _dataLoader = SystemDataLoaderUtils.CreateSubstitute(PricesCount, LastDate); _commission = CommissionUtils.CreateSubstitute(); _slippage = SlippageUtils.CreateSusbstitute(); TestObj = new PositionsCloser(_dataLoader, _commission, _slippage); _positionSelectorCalled = false; _closePriceSelectorCalled = false; }
public PriceCrossingSMA(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; SystemParams.Set(PriceCrossingSMAParams.StockName, ""); SystemParams.Set(PriceCrossingSMAParams.SMAPeriod, 20); }
public BBTrendFunds(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; //SystemParams.Set(BBTrendParams.StockName, ""); //SystemParams.Set(BBTrendParams.BBPeriod, 20); //SystemParams.Set(BBTrendParams.BBSigmaWidth, 2f); }
public void SetUp() { _dataProvider = StockDataProviderUtils.CreateSubstitute(DateTime.MinValue); _dataLoader = SystemDataLoaderUtils.CreateSubstituteWithConstantPriceInRange(PricesCount, StartingPrice, PriceRange, LastDate); _dataDefinitionProvider = Substitute.For <ISystemDataDefinitionProvider>(); _signalGeneratorOnOpen = Substitute.For <ISignalGeneratorOnOpen>(); _signalGeneratorOnClose = Substitute.For <ISignalGeneratorOnClose>(); _commission = CommissionUtils.CreateSubstitute(); _slippage = SlippageUtils.CreateSusbstitute(); _mmPositionCloseCalculator = Substitute.For <IMMPositionCloseCalculator>(); _systemState = new SystemState() { Cash = InitialCash }; _slippage.CalculateOpen(default, default, default, default).ReturnsForAnyArgs(args => args.ArgAt <float>(3));
public void SetUp() { _stock = new StockDefinition() { Type = StockType.Stock }; _stock2 = new StockDefinition(); _testObj = new SystemState() { Cash = CashValue }; _stockPrices = new StockPricesData(1); _dataLoader = SystemDataLoaderUtils.CreateSubstitute(_stockPrices); _commission = CommissionUtils.CreateSubstitute(Commission); _slippage = SlippageUtils.CreateSusbstitute(); EntrySignal.Stock = _stock; }
public SimplexMultiFunds(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; SystemParams.Set(SimplexMultiFundsParams.AvgProfitRange, 3); SystemParams.Set(SimplexMultiFundsParams.AvgChangeRange, 6); SystemParams.Set(SimplexMultiFundsParams.AcceptableSingleDD, 0.1); SystemParams.Set(SimplexMultiFundsParams.RiskSigmaMultiplier, 2.0); SystemParams.Set(SimplexMultiFundsParams.MaxSinglePositionSize, 0.8); SystemParams.Set(SimplexMultiFundsParams.MaxPortfolioRisk, 0.8); SystemParams.Set(SimplexMultiFundsParams.TruncateBalanceToNthPlace, 3); }
public SystemProcessor( IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISystemDataDefinitionProvider dataDefinitionProvider, ISignalGeneratorOnOpen signalGeneratorOnOpen, ISignalGeneratorOnClose signalGeneratorOnClose, ICommission commission, ISlippage slippage, IMMPositionCloseCalculator mmPositionCloseCalculator) { _dataProvider = dataProvider; _dataLoader = dataLoader; _dataDefinitionProvider = dataDefinitionProvider; _signalGeneratorOnOpen = signalGeneratorOnOpen; _signalGeneratorOnClose = signalGeneratorOnClose; _commission = commission; _slippage = slippage; _mmPositionCloseCalculator = mmPositionCloseCalculator; _signalsProcessor = new SignalsProcessor(_dataLoader, _commission, _slippage); _positionCloser = new PositionsCloser(_dataLoader, _commission, _slippage); }
public PositionsCloser(ISystemDataLoader dataLoader, ICommission commission, ISlippage slippage) { _dataLoader = dataLoader; _commission = commission; _slippage = slippage; }
public static void CloseAll(this SystemState systemState, DateTime ts, float price, ISlippage slippage, ICommission commission) { while (systemState.PositionsActive.Count > 0) { systemState.Close(0, ts, price, slippage, commission); } }
public static float CalculateSlippageOpen(this SystemState systemState, ISlippage slippage, DateTime ts, Signal signal, float price) { return(systemState.CalculateSlippageOpen(slippage, signal.Stock.Type, ts, signal.Direction, price)); }
public static ISlippage CreateSusbstitute() { ISlippage slippage = Substitute.For <ISlippage>(); slippage.CalculateClose(default, default, default, default).ReturnsForAnyArgs(x => x.ArgAt <float>(3));
public static float CalculateSlippageClose(this SystemState systemState, ISlippage slippage, DateTime ts, int positionIndex, float price) { return(systemState.CalculateSlippageClose(slippage, systemState.PositionsActive[positionIndex].Stock.Type, ts, systemState.PositionsActive[positionIndex].Direction, price)); }
public static float CalculateSlippageClose(this SystemState systemState, ISlippage slippage, StockType stockType, DateTime ts, PositionDir dir, float price) { return(slippage.CalculateClose(stockType, ts, dir, price)); }
public static void Open(this SystemState systemState, DateTime ts, PositionDir dir, float price, Signal signal, ISlippage slippage, ICommission commission) { systemState.Open(ts, dir, price, signal.Volume, signal, slippage, commission); }
public static void Open(this SystemState systemState, DateTime ts, PositionDir dir, float price, float volume, StockDefinition stock, Signal signal, ISlippage slippage, ICommission commission) { float openPrice = systemState.CalculateSlippageOpen(slippage, stock.Type, ts, signal.Direction, price); systemState.Open(stock, dir, ts, openPrice, volume, systemState.CalculateCommission(commission, stock.Type, signal.Volume, openPrice), signal.DataRange, signal.IntradayInterval, signal); }
public static void ReducePosition(this SystemState systemState, int positionIndex, DateTime ts, float price, float volume, Signal signal, ISlippage slippage, ICommission commission) { systemState.AddToPosition(positionIndex, ts, price, -volume, signal, slippage, commission); }
public static void AddToPosition(this SystemState systemState, int positionIndex, DateTime ts, float price, float volume, Signal signal, ISlippage slippage, ICommission commission) { Position pos = systemState.PositionsActive[positionIndex]; systemState.Close(positionIndex, ts, price, slippage, commission); if (pos.Volume + volume > 0) { float openPrice = systemState.CalculateSlippageOpen(slippage, ts, signal, price); systemState.Open(signal.Stock, pos.Direction, ts, openPrice, pos.Volume + volume, systemState.CalculateCommission(commission, signal, openPrice), signal.DataRange, signal.IntradayInterval, signal); } }
public static void Close(this SystemState systemState, int positionIndex, DateTime ts, float price, ISlippage slippage, ICommission commission) { float closePrice = systemState.CalculateSlippageClose(slippage, ts, positionIndex, price); systemState.Close(positionIndex, ts, closePrice, systemState.CalculateCommission(commission, positionIndex, closePrice)); }