public SignalsProcessor(ISystemDataLoader dataLoader, ICommission commission, ISlippage slippage) { _dataLoader = dataLoader; _commission = commission; _slippage = slippage; _rebalancer = new PositionsRebalancer(_dataLoader, _commission, _slippage); }
public bool HandleOrder() { bool isSuccess = false; try { IOrderProcessor orderProcessor = OrderProcessorFactory.CreateOrderProcessor(_productType, _orderProcessorModel); if (orderProcessor != null) { orderProcessor.ProcessOrder(); if (orderProcessor is ICommission) { ICommission commission = (ICommission)orderProcessor; commission.GenerateCommission(); } if (orderProcessor is IEmailSender) { IEmailSender emailSender = (IEmailSender)orderProcessor; emailSender.SendEmail(); } isSuccess = true; } return(isSuccess); } catch (Exception ex) { Console.WriteLine("Some exception occurred"); throw ex; } }
public void TestBookCommission() { payment = PaymentFactory.GetPayment(PaymentTypeEnum.Book); commission = payment as ICommission; returnMsg = commission.GenerateCommission(); Assert.AreEqual(returnMsg, "Book Commission"); }
public void SetUp() { _dataLoader = SystemDataLoaderUtils.CreateSubstitute(PricesCount, LastDate); _commission = CommissionUtils.CreateSubstitute(); _slippage = SlippageUtils.CreateSusbstitute(); TestObj = new PositionsRebalancer(_dataLoader, _commission, _slippage); _openPriceLevelCalled = false; }
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 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; }
static void Main(string[] args) { var serviceProvider = new ServiceCollection() .AddSingleton <ICommission, AgentCommission>() .AddSingleton <IMembership, CustomerMembership>() .BuildServiceProvider(); ICommission commission = serviceProvider.GetService <ICommission>(); IMembership membership = serviceProvider.GetService <IMembership>(); PaymentService paymentService = new PaymentService(commission, membership); PaymentResult result; Console.WriteLine("Books"); Product product = new Product() { Agent = 1, Amount = 1000.00, Category = 1, ProductId = 1, ProductType = "Books", ProductName = "Book 1" }; result = paymentService.MakePayment(product); Console.WriteLine("---------------------------------------------------------------------"); Console.WriteLine("Toys"); Product product2 = new Product() { Agent = 1, Amount = 1000.00, Category = 1, ProductId = 1, ProductType = "", ProductName = "Toy 1" }; paymentService.MakePayment(product2); Console.WriteLine("---------------------------------------------------------------------"); Console.WriteLine("Video"); Product product3 = new Product() { Agent = 1, Amount = 2000.00, Category = 2, ProductId = 1, ProductType = "", ProductName = "Learning To Ski" }; paymentService.MakePayment(product3); Console.WriteLine("---------------------------------------------------------------------"); Console.WriteLine("New Membership"); Product product4 = new Product() { Agent = 1, Amount = 2000.00, Category = 3, ProductId = 1, ProductType = "New", ProductName = "Video" }; paymentService.MakePayment(product4); Console.WriteLine("---------------------------------------------------------------------"); Console.WriteLine("Upgrade Membership"); Product product5 = new Product() { Agent = 1, Amount = 2000.00, Category = 3, ProductId = 1, ProductType = "Upgrade", ProductName = "Video" }; paymentService.MakePayment(product5); Console.ReadLine(); //Console.WriteLine("Hello World!"); }
private void btnOK_Click(object sender, EventArgs e) { int iIndex = comboRules.SelectedIndex; RuleBase cRule = new RuleBase(); cRule.ClassName = __cRules[iIndex].ClassName; __cCommission = __cOrderService.CreateCommission(cRule); this.DialogResult = DialogResult.OK; }
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); }
/// <summary> /// 計算所有傭金規則 /// </summary> /// <param name="order">ITradeOrder 介面</param> /// <returns>返回值: double[](0=佣金, 1=手續費)</returns> protected double[] CalculateCommissions(ITradeOrder order) { double[] dValues = new double[2]; if (__cCommissions != null) { int iCount = __cCommissions.Count; for (int i = 0; i < iCount; i++) { ICommission cCommission = __cCommissions[i]; int iIndex = ((int) cCommission.RuleType) - 128; //佣金起始為 128(減去 128 可得到陣列的索引值) dValues[iIndex] += cCommission.Calculate(order); } } return dValues; }
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 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 Book(ICommission commission) { this.commission = commission; }
public PaymentFactory(ICommission commissionPayment, IMembership membership, INotification notification) { _commission = commissionPayment; _membership = membership; _notification = notification; }
public static float CalculateCommission(this SystemState systemState, ICommission commission, StockType stockType, float volume, float price) { return(commission.Calculate(stockType, volume, price)); }
public PositionsCloser(ISystemDataLoader dataLoader, ICommission commission, ISlippage slippage) { _dataLoader = dataLoader; _commission = commission; _slippage = slippage; }
public static float CalculateCommission(this SystemState systemState, ICommission commission, Signal signal, float price) { return(systemState.CalculateCommission(commission, signal.Stock.Type, signal.Volume, price)); }
public static float CalculateCommission(this SystemState systemState, ICommission commission, int positionIndex, float price) { return(systemState.CalculateCommission(commission, systemState.PositionsActive[positionIndex].Stock.Type, systemState.PositionsActive[positionIndex].Volume, 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 BookRule() { _packingSlip = new Operations.Operations(); _commision = new Operations.Operations(); }
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 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 MMSignalVolumeForAllCash(ICommission commission) { _commission = commission; }
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)); }