public static Boolean IsSame(POrder a, POrder b) { if (a.IsDone() || b.IsDone()) { return false; } if (a.ContractedCount > 0 || b.ContractedCount > 0) { return false; } if (a.IsCancelRemains() || b.IsCancelRemains()) { return false; } if (a.Code.CompareTo(b.Code) == 0 && a.ReqCount == b.ReqCount && a.ReqPrice == b.ReqPrice && a.LongShort == b.LongShort && a.TargetAccount == b.TargetAccount) { return true; } return false; }
public void CancelRemainsTest() { long reqCount = 3; double reqPrice = 220.0; Account account = AccountManager.Ins().CreateSimFOAccount(); IOrderLimit orderLimit = new DefaultOrderLimit(account); orderLimit = new CountBidAskRangeOrderLimit(orderLimit); orderLimit = new PriceBidAskRangeOrderLimit(orderLimit); orderLimit = new LimOrderLimit(orderLimit); account.SetOrderLimit(orderLimit); SimHTS target = account.Hts as SimHTS; string code = KospiFutureUtil.Ins().KFI.Code; string price = reqPrice.ToString("n0"); string quantity = Convert.ToString(reqCount); RawMarketData rmd = RmdManager.Ins().GetData(KospiFutureUtil.Ins().KFI.Code); rmd.BidPrice1 = 220; rmd.AskPrice1 = 225; rmd.BidCount1 = 100; rmd.AskCount1 = 101; { POrder o = new POrder(TradingDirection.Long, code, reqCount, reqPrice, account, rmd); Assert.AreEqual(o.IsInputValidated, true); bool expected = true; bool actual; actual = account.RequestOrder(o); Assert.AreEqual(expected, actual); SimPOrder simOrder = new SimPOrder(o, 1500); simOrder.Execute(); StringPacket inOrderPacket = simOrder.GetContractPacket(SimPOrder.접수); target.ReceiveDTRealEventHandler(inOrderPacket.GetStream()); account.HandleCallBackData(); o.CancelRemains(); StringPacket cancelPacket = simOrder.GetCancelPacket(); target.ReceiveDTRealEventHandler(cancelPacket.GetStream()); account.HandleCallBackData(); Assert.AreEqual(o.IsDone(), true); Assert.AreEqual(o.CanceledCount, o.ReqCount); POrderLegalManager.Ins().Remove(o); POrderBidAskCountManager.Ins().Unregister(o); } { POrder o = new POrder(TradingDirection.Long, code, reqCount, reqPrice, account, rmd); Assert.AreEqual(o.IsInputValidated, true); bool expected = true; bool actual; actual = account.RequestOrder(o); Assert.AreEqual(expected, actual); SimPOrder simOrder = new SimPOrder(o, 1500); simOrder.Execute(); StringPacket inOrderPacket = simOrder.GetContractPacket(SimPOrder.접수); target.ReceiveDTRealEventHandler(inOrderPacket.GetStream()); simOrder.CurTotalContractedCount = reqCount; StringPacket contractCompletePacket = simOrder.GetContractPacket(SimPOrder.전량체결); target.ReceiveDTRealEventHandler(contractCompletePacket.GetStream()); o.CancelRemains(); account.HandleCallBackData(); Assert.AreEqual(o.IsDone(), true); Assert.AreEqual(o.CanceledCount, 0); Assert.AreEqual(o.ContractedCount, o.ReqCount); POrderLegalManager.Ins().Remove(o); POrderBidAskCountManager.Ins().Unregister(o); } }
public static long GetSignedMaxPossibleExposureCount(POrder o) { long count = 0; long tmp = o.ReqCount; if (o.IsDone()) { tmp = o.ContractedCount; } if (o.LongShort == TradingDirection.Short) { tmp = tmp * (-1); } count += tmp; return count; }