コード例 #1
0
        protected override void CloseLongPosition(OpenPositionInfo info)
        {
            TradingResult res = MarketSell(Ticker.OrderBook.Bids[0].Value, info.Amount);

            if (res != null)
            {
                double earned = res.Total - CalcFee(res.Total);
                MaxAllowedDeposit += earned;
                info.UpdateCurrentValue(DataProvider.CurrentTime, res.Value);
                info.Earned    += earned;
                info.Amount    -= res.Amount;
                info.Total     -= res.Total;
                info.CloseValue = res.Value;
                CombinedStrategyDataItem item = (CombinedStrategyDataItem)StrategyData.FirstOrDefault(i => ((CombinedStrategyDataItem)i).Time == info.CandlestickTime);
                if (item != null)
                {
                    item.Closed      = true;
                    item.CloseLength = ((CombinedStrategyDataItem)StrategyData.Last()).Index - item.Index;
                }
                CombinedStrategyDataItem last = (CombinedStrategyDataItem)StrategyData.Last();
                if (info.Amount < 0.000001)
                {
                    OpenedOrders.Remove(info);
                    last.ClosedPositions.Add(info);
                    info.CloseTime = DataProvider.CurrentTime;
                    Earned        += info.Earned - info.Spent;
                }
                last.ClosedOrder = true;
                last.Value       = Ticker.OrderBook.Bids[0].Value;
                if (item != null)
                {
                    item.Profit = earned - info.Spent;
                }
                last.AddMark("Close " + info.Mark);
            }
        }