public SignalsProcessor(ISystemDataLoader dataLoader, ICommission commission, ISlippage slippage)
 {
     _dataLoader = dataLoader;
     _commission = commission;
     _slippage   = slippage;
     _rebalancer = new PositionsRebalancer(_dataLoader, _commission, _slippage);
 }
示例#2
0
 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;
 }
示例#4
0
 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);
        }
示例#7
0
        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);
        }
示例#11
0
 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;
 }
示例#13
0
 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);
     }
 }
示例#14
0
 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));
 }
示例#15
0
        public static ISlippage CreateSusbstitute()
        {
            ISlippage slippage = Substitute.For <ISlippage>();

            slippage.CalculateClose(default, default, default, default).ReturnsForAnyArgs(x => x.ArgAt <float>(3));
示例#16
0
 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));
 }
示例#17
0
 public static float CalculateSlippageClose(this SystemState systemState, ISlippage slippage, StockType stockType, DateTime ts, PositionDir dir, float price)
 {
     return(slippage.CalculateClose(stockType, ts, dir, price));
 }
示例#18
0
 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);
 }
示例#19
0
        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);
        }
示例#20
0
 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);
 }
示例#21
0
        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);
            }
        }
示例#22
0
        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));
        }