/// <summary> /// Gets stockpricesdata and index of specified ts. Returns true if index found. /// </summary> /// <param name="dataLoader"></param> /// <param name="stockName"></param> /// <param name="dataRange"></param> /// <param name="ts"></param> /// <param name="spData"></param> /// <param name="dataIndex"></param> /// <returns></returns> public static bool GetWithIndex(this ISystemDataLoader dataLoader, string stockName, StockDataRange dataRange, DateTime ts, out StockPricesData spData, out int dataIndex) { spData = dataLoader.Get(stockName, dataRange, 0, ts, ts); dataIndex = spData.FindByTS(ts); return(dataIndex >= 0); }
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() { _dataProvider = StockDataProviderUtils.CreateSubstitute(DateTime.MinValue); _dataLoader = SystemDataLoaderUtils.CreateSubstitute(2 * BackBufRange, BackBufRange, DateTime.Now.Date); TestObj = new StocksDataPreloader(_dataProvider, _dataLoader); _stat = new StockStatMock("", BackBufRange); }
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 SignalsBBTrendFunds(ISystemDataLoader dataLoader, IStockDataProvider dataProvider, ISystemExecutionLogger systemExecutionLogger) { _dataLoader = dataLoader; _systemExecutionLogger = systemExecutionLogger; _dataRange = StockDataRange.Monthly; _fundsData = new BBTrendFundsData(_fundsNames.Length); BBTrendFundsDataCalculator.Initialize(_fundsData, _fundsNames, BBPeriod, BBSigmaWidth, HLPeriod, dataProvider); _rebalanceSignal = new ModNCounter(RebalanceInterval); }
private float CalcActive(SystemState system, DateTime ts, ISystemDataLoader dataLoader) { return(system.PositionsActive.Sum(p => { StockPricesData prices = dataLoader.Get(p.Stock.FullName, p.DataRange, p.IntradayInterval, ts, ts); int ix = prices.FindByTS(ts); return p.DirectionMultiplier() * prices.C[ix] * p.Volume; })); }
/// <summary> /// Gets stockpricesdata and index of specified ts. Returns true if index found, and has required length of back buffer. /// </summary> /// <param name="dataLoader"></param> /// <param name="stockName"></param> /// <param name="dataRange"></param> /// <param name="ts"></param> /// <param name="requiredBackBufferLength"></param> /// <param name="spData"></param> /// <param name="dataIndex"></param> /// <returns></returns> public static bool GetWithIndex(this ISystemDataLoader dataLoader, string stockName, StockDataRange dataRange, DateTime ts, int requiredBackBufferLength, out StockPricesData spData, out int dataIndex) { if (GetWithIndex(dataLoader, stockName, dataRange, ts, out spData, out dataIndex)) { return(dataIndex >= requiredBackBufferLength); } return(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); }
//private readonly ModNCounter _rebalanceSignal; public SignalsBBTrendMultiFunds(ISystemDataLoader dataLoader, IStockDataProvider dataProvider, ISystemExecutionLogger systemExecutionLogger) { _aggressiveFunds = _fundsNames.Select((_, i) => i > 0).ToArray(); if (_fundsNames.Length != _aggressiveFunds.Length) { throw new Exception("_fundsNames != _aggressiveFunds"); } _dataLoader = dataLoader; _systemExecutionLogger = systemExecutionLogger; _dataRange = StockDataRange.Monthly; _fundsData = new BBTrendFundsData(_fundsNames.Length); BBTrendFundsDataCalculator.Initialize(_fundsData, _fundsNames, BBPeriod, BBSigmaWidth, HLPeriod, dataProvider); //_rebalanceSignal = new ModNCounter(RebalanceInterval); }
public SignalsPriceCrossingSMA(string stockName, StockDataRange dataRange, int smaPeriod, ISystemDataLoader dataLoader, IStockDataProvider dataProvider, IMMSignalVolume signalVolumeCalculator) { _dataRange = dataRange; _smaPeriod = smaPeriod; _dataLoader = dataLoader; _dataProvider = dataProvider; _signalVolumeCalculator = signalVolumeCalculator; _stock = _dataProvider.GetStockDefinition(stockName); _statSMA = new StatSMA("") .SetParam(StatSMAParams.Period, new MOParamInt() { Value = _smaPeriod }); }
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() { _dataLoader = Substitute.For <ISystemDataLoader>(); _testSys = new SystemState() { Cash = CashValue }; _stockPrices = new StockPricesData(1); _testObj = new SystemValueCalculator(); _stockPrices.TS[0] = CurrentTS; _stockPrices.C[0] = PriceL; _dataLoader .Get(Arg.Compat.Any <string>(), Arg.Compat.Any <StockDataRange>(), Arg.Compat.Any <int>(), Arg.Compat.Any <DateTime>(), Arg.Compat.Any <DateTime>()) .Returns(_stockPrices); }
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 FormMain() { InitializeComponent(); _msgDisplay = new MsgDisplay(this, "MarketOps"); _dataProvider = DataProvidersFactory.GetStockDataProvider(); _systemDataLoader = SystemDataLoaderFactory.Get(_dataProvider); _systemExecutionLogger = new SystemExecutionLoggerToTextBox(edtSimDataLog); _configSystemDefinitions = ConfigSystemDefsLoader.Load(); _systemDefinitionFactory = new SystemDefinitionFactory(_dataProvider, _systemDataLoader, new SlippageNone(), new CommissionNone(), _systemExecutionLogger); StatsFactories.Initialize(); dbgPositions.OnPositionClick += dbgPositions_OnPositionClick; this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); tcCharts.TabPages.Clear(); PrepareStockDataRangeSource(); InitializeSim(); LoadConfig(); }
public SignalsBBTrend(string stockName, StockDataRange dataRange, int bbPeriod, float bbSigmaWidth, ISystemDataLoader dataLoader, IStockDataProvider dataProvider, IMMSignalVolume signalVolumeCalculator) { _dataRange = dataRange; _bbPeriod = bbPeriod; _bbSigmaWidth = bbSigmaWidth; _dataLoader = dataLoader; _dataProvider = dataProvider; _signalVolumeCalculator = signalVolumeCalculator; _stock = _dataProvider.GetStockDefinition(stockName); _statBB = new StatBB("") .SetParam(StatBBParams.Period, new MOParamInt() { Value = _bbPeriod }) .SetParam(StatBBParams.SigmaWidth, new MOParamFloat() { Value = bbSigmaWidth }); }
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 SignalsSimplexMultiFunds(ISystemDataLoader dataLoader, IStockDataProvider dataProvider, ISystemExecutionLogger systemExecutionLogger, MOParams systemParams) { _avgProfitRange = systemParams.Get(SimplexMultiFundsParams.AvgProfitRange).As <int>(); _avgChangeRange = systemParams.Get(SimplexMultiFundsParams.AvgChangeRange).As <int>(); _acceptableSingleDD = systemParams.Get(SimplexMultiFundsParams.AcceptableSingleDD).As <double>(); _riskSigmaMultiplier = systemParams.Get(SimplexMultiFundsParams.RiskSigmaMultiplier).As <double>(); _maxSinglePositionSize = systemParams.Get(SimplexMultiFundsParams.MaxSinglePositionSize).As <double>(); _maxPortfolioRisk = systemParams.Get(SimplexMultiFundsParams.MaxPortfolioRisk).As <double>(); _truncateBalanceToNthPlace = systemParams.Get(SimplexMultiFundsParams.TruncateBalanceToNthPlace).As <int>(); _aggressiveFunds = _fundsNames.Select((_, i) => i > 0).ToArray(); if (_fundsNames.Length != _aggressiveFunds.Length) { throw new Exception("_fundsNames != _aggressiveFunds"); } _dataLoader = dataLoader; _systemExecutionLogger = systemExecutionLogger; _dataRange = StockDataRange.Monthly; _fundsData = new SimplexFundsData(_fundsNames.Length); SimplexFundsDataCalculator.Initialize(_fundsData, _fundsNames, dataProvider); }
public static void CalcCurrentValue(this SystemState systemState, DateTime ts, ISystemDataLoader dataLoader) { systemState.Equity.Add(new SystemValue() { Value = new SystemValueCalculator().Calc(systemState, ts, dataLoader), TS = ts }); }
public static void CalculateTrendsAndExpectations(BBTrendFundsData data, DateTime ts, StockDataRange dataRange, ISystemDataLoader dataLoader) { for (int i = 0; i < data.Stocks.Length; i++) { if (!dataLoader.GetWithIndex(data.Stocks[i].FullName, dataRange, ts, data.StatsBB[i].BackBufferLength, out StockPricesData spData, out int dataIndex)) { continue; } BBTrendType lastTrend = data.CurrentTrends[i]; data.CurrentTrends[i] = BBTrendRecognizer.BBTrendRecognizer.RecognizeTrend(spData, data.StatsBB[i], dataIndex, data.CurrentTrends[i], out float trendStartLevel); if (lastTrend != data.CurrentTrends[i]) { data.UpTrendStartValues[i] = trendStartLevel;// spData.H[dataIndex]; data.TrendLength[i] = 0; } data.TrendLength[i]++; BBTrendExpectation lastExpectation = data.CurrentExpectations[i]; data.CurrentExpectations[i] = BBTrendRecognizer.BBTrendRecognizer.GetExpectation(spData, data.StatsBB[i], dataIndex, data.CurrentTrends[i]); data.ExpectationChanged[i] = (lastExpectation != data.CurrentExpectations[i]); } }
public float Calc(SystemState system, DateTime ts, ISystemDataLoader dataLoader) { return(CalcActive(system, ts, dataLoader) + system.Cash); }
public static void CalculateMaxValuesAndStops(BBTrendFundsData data, float stopWidth, DateTime ts, StockDataRange dataRange, ISystemDataLoader dataLoader) { for (int i = 0; i < data.Stocks.Length; i++) { if (data.CurrentTrends[i] != BBTrendType.Up) { data.UpTrendMaxValues[i] = float.MinValue; data.UpTrendStopValues[i] = float.MinValue; continue; } if (!dataLoader.GetWithIndex(data.Stocks[i].FullName, dataRange, ts, out StockPricesData spData, out int dataIndex)) { continue; } //data.UpTrendMaxValues[i] = Math.Max(spData.H[dataIndex], data.UpTrendMaxValues[i]); data.UpTrendMaxValues[i] = Math.Max(spData.C[dataIndex], data.UpTrendMaxValues[i]); data.UpTrendStopValues[i] = data.UpTrendMaxValues[i] * (1f - stopWidth); } }
public static (StockPricesData pricesData, int pricesDataIndex) GetPricesDataAndIndex(this ISystemDataLoader dataLoader, string stockName, StockDataRange dataRange, int intradayInterval, DateTime ts) { StockPricesData data = dataLoader.Get(stockName, dataRange, intradayInterval, ts, ts); return(data, data.FindByTS(ts)); }
public static void CheckStops(BBTrendFundsData data, DateTime ts, StockDataRange dataRange, ISystemDataLoader dataLoader) { for (int i = 0; i < data.Stocks.Length; i++) { if (data.CurrentTrends[i] != BBTrendType.Up) { data.StoppedOut[i] = false; continue; } if (!dataLoader.GetWithIndex(data.Stocks[i].FullName, dataRange, ts, out StockPricesData spData, out int dataIndex)) { continue; } if (data.StoppedOut[i]) { data.StoppedOut[i] = (spData.C[dataIndex] <= data.StoppedOutValues[i]) || !PriceAbovePrevMaxH(data, i, dataIndex, spData.C[dataIndex]); } else { data.StoppedOut[i] = (spData.C[dataIndex] <= data.UpTrendStopValues[i]); } } }
public StocksDataPreloader(IStockDataProvider dataProvider, ISystemDataLoader dataLoader) { _dataProvider = dataProvider; _dataLoader = dataLoader; }
public SystemRunner(IStockDataProvider dataProvider, ISystemDataLoader dataLoader) { _dataProvider = dataProvider; _dataLoader = dataLoader; }