public ElwArbEach( KospiOptionInfo koi, List<ElwInfo> elwData, double strike, Account optionAccount, Account elwAccount, long maxOptionCountPerOnce, long maxOptionValuePerOnce, STR_ElwArb parent) { _KospiOptionInfo = koi; _elwData = elwData; _strike = strike; _optionAccount = optionAccount; _elwAccount = elwAccount; MaxOptionCountPerOnce = maxOptionCountPerOnce; _maxOptionValuePerOnce = maxOptionValuePerOnce; _parent = parent; Boolean bEnableReverse = true; _eaer = new ElwArbEachReverse(this, bEnableReverse); _eaecc = new ElwArbEachConditionChecker(this, _eaer, maxOptionCountPerOnce); }
public ElwArbSweepUnit( KospiOptionInfo koi, ElwInfo elwInfo, long optionCount, POrder optionOrder, POrder elwOrder, STR_ElwArb parent) { try { // 이 생성자는 인수인계를 받을 때만 사용하도록 한다. // 주의한다. _state = State._5_Done; if (optionOrder.LongShort == elwOrder.LongShort) { logger.Error("OptionOrder, ElwOrder same trading direction"); Util.KillWithNotice("OptionOrder, ElwOrder same trading direction"); throw new Exception(); } OptionAccount = null; ElwAccount = null; long elwCount = ElwOptionUtil.ConvertOptionCountToElwCount(elwInfo, optionCount); OptionOrderGoal = new POrder( TradingDirection.Short, optionOrder.Code, optionCount, optionOrder.ReqPrice, optionOrder.TargetAccount, optionOrder.RMDClone, MarketType._3_Default, true); OptionOrderGoal.AddComment("ElwOptionSweeper.TakeOver.OptionOrderGoal"); OptionOrderGoal.UpdateForRemain(OptionOrderGoal.ReqCount, OptionOrderGoal.InitReqPrice); ElwOrderGoal = new POrder( TradingDirection.Long, elwOrder.Code, elwCount, elwOrder.ReqPrice, elwOrder.TargetAccount, elwOrder.RMDClone, MarketType._3_Default, true); ElwOrderGoal.AddComment("ElwOptionSweeper.TakeOver.ElwOrderGoal"); ElwOrderGoal.UpdateForRemain(ElwOrderGoal.ReqCount, ElwOrderGoal.InitReqPrice); ElwOrdersReal = new List<POrder>(); OptionOrdersReal = new List<POrder>(); POrder elwOrderReal = new POrder(ElwOrderGoal); elwOrderReal.AddComment("ElwOptionSweeper.TakeOver.elwOrderReal"); elwOrderReal.UpdateForRemain(elwOrderReal.ReqCount, elwOrderReal.InitReqPrice); ElwOrdersReal.Add(elwOrderReal); POrder optionOrderReal = new POrder(OptionOrderGoal); optionOrderReal.AddComment("ElwOptionSweeper.TakeOver.optionOrderReal"); optionOrderReal.UpdateForRemain(optionOrderReal.ReqCount, optionOrderReal.InitReqPrice); OptionOrdersReal.Add(optionOrderReal); _parent = parent; KOI = koi; Key = String.Format("{0};{1}", OptionOrderGoal.Code, ElwOrderGoal.Code); IsBodySweepQuickly = false; } catch (System.Exception ex) { logger.Error(ex.ToString()); Util.KillWithNotice(ex.ToString()); } }
public ElwArbSweepUnit( KospiOptionInfo koi, ElwInfo elwInfo, Account optionAccount, POrder optionOrder, Account elwAccount, POrder elwOrder, STR_ElwArb parent, DateTime dtEnd) { try { KOI = koi; CurID = ++ID_GENERATOR; OptionAccount = optionAccount; OptionOrderGoal = optionOrder; OptionOrderGoal.AddComment("EOS Constructor"); ElwAccount = elwAccount; ElwOrderGoal = elwOrder; ElwOrderGoal.AddComment("EOS Constructor"); _elwInfo = elwInfo; OptionOrdersReal = new List<POrder>(); ElwOrdersReal = new List<POrder>(); _state = State._1_MuteFewSecs; Key = String.Format("{0};{1}", OptionOrderGoal.Code, ElwOrderGoal.Code); ShowState(); _mute = new Timer(ENTER_POSITION_MUTE, ""); RequestInitOrder(ElwOrderGoal, ElwOrdersReal); _parent = parent; _parent.IncreaseEnteredArbCount(KOI.Code, OptionOrderGoal.ReqCount); _dtEnd = dtEnd; IsBodySweepQuickly = false; } catch (System.Exception ex) { logger.Error(ex.ToString()); Util.KillWithNotice(ex.ToString()); } finally { ElwAccount.DiffFastExactPossibleShortCount(ElwOrderGoal.Code, "ElwOptionSweeper 생성자"); OptionOrderGoal.Free(); optionOrder.Free(); ElwOrderGoal.Free(); elwOrder.Free(); } }