Beispiel #1
0
        //public void SendOneOrderTest(string symbol,bool sell)
        //{
        //    IOrdersManager ordersManager = ((UNLManager) UNLManagerDic[symbol]).OrdersManager;
        //    ordersManager.TestTrading(true);
        //}
        public void SendOneOrderTest(TradeOrderData tradeOrderData)
        {
            //IOrdersManager ordersManager = ((UNLManager)UNLManagerDic[tradeOrderData.Symbol]).OrdersManager;
            //ordersManager.TestTrading(tradeOrderData);
            ITradingManager tradeManager = ((UNLManager)UNLManagerDic[tradeOrderData.Symbol]).TradingManager;

            tradeManager.TestTrading(tradeOrderData);
        }
 /// <summary>
 /// Add a execution to our statistic (e.g. for backtesting).
 /// </summary>
 /// <param name="tradingmanager"></param>
 /// <param name="nameofthestrategy"></param>
 /// <param name="execution"></param>
 public void Add(ITradingManager tradingmanager, string nameofthestrategy, IExecution execution)
 {
     //Statistic stat = new Statistic(tradingmanager, nameofthestrategy, execution);
     //if (stat.IsValid)
     //{
     //    this.List.Add(stat);
     //}
     this.List.Add(new Statistic(tradingmanager, nameofthestrategy, execution));
 }
        /// <summary>
        /// Standard constructor with finalised executions (all data from trade and order is available).
        /// You should use this when you create statistic data during a backtest.
        /// </summary>
        /// <param name="tradingmanager"></param>
        /// <param name="nameofthestrategy"></param>
        /// <param name="execution"></param>
        public Statistic(ITradingManager tradingmanager, string nameofthestrategy, IExecution execution)
        {
            //Logging only on flat transactions then we have all data available (entry & exit)
            if (execution.MarketPosition == PositionType.Flat)
            {
                //get the trade with all data
                int           tradeid = tradingmanager.GetTradeIdByExecutionId(execution.ExecutionId);
                ITradingTrade trade   = tradingmanager.GetTrade(tradeid);

                if (trade != null)
                {
                    //Log all data
                    this.NameOfTheStrategy = nameofthestrategy;
                    this.Instrument        = execution.Instrument.ToString();
                    this.TradeDirection    = trade.EntryOrder.IsLong ? PositionType.Long : PositionType.Short;
                    this.TimeFrame         = execution.Order.TimeFrame.ToString();
                    this.ProfitLoss        = trade.ProfitLoss;
                    this.ProfitLossPercent = trade.ProfitLossPercent;
                    this.ExitReason        = trade.ExitReason;
                    this.ExitPrice         = trade.ExitPrice;
                    this.ExitDateTime      = execution.Time;
                    this.ExitQuantity      = execution.Quantity;
                    this.ExitOrderType     = execution.Order.OrderType;
                    this.EntryDateTime     = trade.EntryOrder.CreationTime;
                    this.EntryPrice        = trade.EntryOrder.Price;
                    this.EntryQuantity     = trade.EntryOrder.Quantity;
                    this.EntryOrderType    = trade.EntryOrder.Type;
                    this.StopPrice         = execution.Order.StopPrice;

                    //everything is fine
                    this.IsValid = true;
                }

                //we do not have a target.
                //this.TargetPrice
            }
        }