示例#1
0
 internal double ProfitInPosition(TransactionPairBinary binary, double price)
 {
     if (binary.Completed)
     {
         price = binary.ExitPrice;
     }
     return(profitLossCalculation.CalculateProfit(binary.Direction, binary.EntryPrice, price));
 }
示例#2
0
        public void ExitComboTrade(LogicalFill fill)
        {
            TransactionPairBinary comboTrade = comboTradesBinary.Tail;

            comboTrade.Exit(fill.Price, fill.Time, fill.PostedTime, model.Chart.ChartBars.BarCount, fill.OrderId, fill.OrderSerialNumber);
            comboTradesBinary.Tail = comboTrade;
            double pnl = profitLoss.CalculateProfit(comboTrade.Direction, comboTrade.EntryPrice, comboTrade.ExitPrice);

            pnl = Math.Round(pnl, 2);
            Equity.OnChangeClosedEquity(pnl);
            if (trace)
            {
                log.Trace("Exit Trade: " + comboTrade);
            }
            if (tradeDebug && !model.QuietMode)
            {
                tradeLog.Debug(model.Name + "," + Equity.ClosedEquity + "," + pnl + "," + comboTrade);
            }
            if (model is Strategy)
            {
                Strategy     strategy = (Strategy)model;
                LogicalOrder filledOrder;
                if (!strategy.TryGetOrderById(fill.OrderId, out filledOrder))
                {
                    throw new ApplicationException("A fill for order id: " + fill.OrderId + " was incorrectly routed to: " + strategy.Name);
                }
                strategy.OnExitTrade(fill, filledOrder);
            }
            if (model is Portfolio)
            {
                var portfolio = (Portfolio)model;
                portfolio.OnExitTrade();
            }
        }
示例#3
0
        private double CalcProfitLoss(TransactionPairBinary binary)
        {
            double result;

            if (profitLoss2Calculation == null)
            {
                result = profitLossCalculation.CalculateProfit(binary.Direction, binary.EntryPrice, binary.ExitPrice);
            }
            else
            {
                double profitLoss;
                double costs;
                profitLoss2Calculation.CalculateProfit(binary, out profitLoss, out costs);
                result = profitLoss - costs;
            }
            return(result.Round());
        }