private void OpenOrCloseOrders(string strategyName, IStrategyDecision decision, RateRecord rec) { decimal lastValue = rec.Value; if (decision.Direction == 0) { return; } Order openedOrder = _orderController.GetOpenedOrder(strategyName, rec.Name); if (openedOrder != null) { if (openedOrder.Direction * decision.Direction > 0) { openedOrder.TakeProfit = decision.TakeProfit; } else { _orderController.CloseOrder(openedOrder, rec); } } else { _orderController.OpenOrder(strategyName, lastValue, decision.StopLoss, decision.TakeProfit, rec.Name, rec.UpdateTime, decision.AdditionalInfo); } }
public void ProcessTick(RateRecord rateRecord) { foreach (IStrategyProvider provider in _strategyProviders) { //analize IStrategyDecision decision = provider.GetStrategyDecision(rateRecord); //make orders OpenOrCloseOrders(provider.GetName(), decision, rateRecord); } }
private void OpenOrCloseOrders(string strategyName, IStrategyDecision decision,RateRecord rec) { decimal lastValue = rec.Value; if (decision.Direction == 0) return; Order openedOrder = _orderController.GetOpenedOrder(strategyName,rec.Name); if (openedOrder!=null) { if (openedOrder.Direction * decision.Direction > 0) openedOrder.TakeProfit = decision.TakeProfit; else { _orderController.CloseOrder(openedOrder,rec); } } else { _orderController.OpenOrder(strategyName,lastValue,decision.StopLoss,decision.TakeProfit,rec.Name,rec.UpdateTime,decision.AdditionalInfo); } }