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);
     }
 }