public void SetEnterPrices(RawMarketData spotStartRmd, RawMarketData futureStartRmd, TradingDirection spotDirection) { if (spotDirection == TradingDirection.Long) { LongEnterPrice = spotStartRmd.AskPrice1; ShortEnterPrice = futureStartRmd.BidPrice1; } else { LongEnterPrice = futureStartRmd.AskPrice1; ShortEnterPrice = spotStartRmd.BidPrice1; } }
public void UpdateExitNowPnL(RawMarketData spotRmd, RawMarketData futureRmd, TradingDirection spotDirection) { double longExitPrice = 0; double shortExitPrice = 0; if (spotDirection == TradingDirection.Long) { longExitPrice = spotRmd.BidPrice1; shortExitPrice = futureRmd.AskPrice1; } else { longExitPrice = futureRmd.BidPrice1; shortExitPrice = spotRmd.AskPrice1; } double exitNowPnL = ExitNowPnL(longExitPrice, shortExitPrice); if (exitNowPnL > this.MaxPnL) { this.MaxPnL = exitNowPnL; this.MaxDateTime = spotRmd.LastUpdatedTime; } if (exitNowPnL < this.MinPnL) { this.MinPnL = exitNowPnL; } }
Boolean IsOverSpotBidAskSpread(RawMarketData rmd) { const double spotBidAskSpreadMax = 6; double spread = (rmd.AskPrice1 - rmd.BidPrice1); if (spread > spotBidAskSpreadMax) { return true; } return false; }