public void AddToPosition_NewVolPositive__ClosesCurrent_CreatesNewWithNewVolume(PositionDir dir, float open, float vol, float addPrice, float addVol)
        {
            Position pos = CreatePosition(dir, open, vol);

            _testObj.PositionsActive.Add(pos);
            _testObj.AddToPosition(0, CurrentTS, addPrice, addVol, EntrySignal, _slippage, _commission);
            _testObj.Cash.ShouldBe(CashValue - pos.DirectionMultiplier() * (addPrice * addVol) - 2 * Commission);
            _testObj.PositionsClosed.Count.ShouldBe(1);
            _testObj.ClosedPositionsEquity.Count.ShouldBe(1);
            CheckClosedPosition(0, dir, open, addPrice, vol, Commission, CurrentTS, 0);
            _testObj.PositionsActive.Count.ShouldBe(1);
            CheckOpenedPosition(_testObj.PositionsActive[0], _stock, dir, addPrice, vol + addVol, Commission, CurrentTS, StockDataRange.Daily, 0);
        }
Ejemplo n.º 2
0
 public static void ReducePosition(this SystemState systemState, int positionIndex, DateTime ts, float price, float volume, Signal signal, ISlippage slippage, ICommission commission)
 {
     systemState.AddToPosition(positionIndex, ts, price, -volume, signal, slippage, commission);
 }