// code parsing or 어쩌구. public static Kospi200Index_option CreateKOSPI200_Option(DateTime tradeDate, string krxCode, int quantity, double tradeIndex) { // 장내 이므로 불러옴. clsTRADABLE_KRX_INDEXOPTION_TB clstb = new clsTRADABLE_KRX_INDEXOPTION_TB(); clstb.INST_KRX_CD = krxCode; clstb.SelectOwn(); Kospi200Index_option inst = new Kospi200Index_option(); string inst_ID = IDGenerator.getNewInstrumentID(inst.InstrumentType_, tradeDate, inst); inst.baseDAO_.INSTRUMENT_ID = inst_ID; inst.baseDAO_.INSTRUMENT_NM = clstb.INST_NM; //inst.baseDAO_.FP_MASTER_TYP = Convert.ToInt32(inst.InstrumentType_); // 아직 구분 못했음. 우선 그냥 instType으로 넣음. inst.baseDAO_.FP_MASTER_TYP = IDGenerator.KRXCodetoFP_MASTER_TYP(krxCode); inst.baseDAO_.NOTIONAL = clstb.INDEX_MULTIPLIER; inst.baseDAO_.PRICE = tradeIndex; inst.baseDAO_.QUANTITY = quantity; inst.baseDAO_.CURR = "KRW"; inst.baseDAO_.FX_RATE = 1.0; //inst.baseDAO_.NOTIONAL = Math.Abs(quantity * clstb.STRIKE * clstb.INDEX_MULTIPLIER); //inst.baseDAO_.CURR = "KRW"; //inst.baseDAO_.BUY_SELL = (quantity > 0) ? (int)clsMAST_FP_INSTRUMENT_TB.BUY_SELL_Type.Buy : // (int)clsMAST_FP_INSTRUMENT_TB.BUY_SELL_Type.Sell; //inst.baseDAO_.QUANTITY = Math.Abs(quantity); inst.baseDAO_.EFFECTIVE_DT = tradeDate.ToString("yyyyMMdd"); inst.baseDAO_.MATURITY_DT = clstb.MATURITY_DT; inst.baseDAO_.BOOKED_DT = tradeDate.ToString("yyyyMMdd"); inst.baseDAO_.CLOSED_DT = "20991231"; clsTRADABLE_KRX_INDEXOPTION_TB clstb_tradable = new clsTRADABLE_KRX_INDEXOPTION_TB(); clstb_tradable.INST_KRX_CD = krxCode; clstb_tradable.SelectOwn(); inst.indexOptionDAO_.INSTRUMENT_ID = inst_ID; inst.indexOptionDAO_.INSTRUMENT_TYP = Convert.ToInt32(inst.InstrumentType_); // 내부 타입인데.. inst.indexOptionDAO_.NOTIONAL = Math.Abs(quantity * clstb.STRIKE * clstb.INDEX_MULTIPLIER); inst.indexOptionDAO_.QUANTITY = quantity; inst.indexOptionDAO_.INDEX_MULTIPLIER = clstb_tradable.INDEX_MULTIPLIER; inst.indexOptionDAO_.UNDERLYING_INDEX_CD = clstb.UNDERLYING_CD; inst.indexOptionDAO_.OPTION_TYP = 0; inst.indexOptionDAO_.STRIKE = clstb_tradable.STRIKE; inst.indexOptionDAO_.CURR = "KRW"; inst.indexOptionDAO_.EFFECTIVE_DT = tradeDate.ToString("yyyyMMdd"); inst.indexOptionDAO_.MATURITY_DT = clstb.MATURITY_DT; return inst; }
public override void loadAvailableInst() { this.AvailableInstList_.Clear(); clsTRADABLE_KRX_INDEXOPTION_TB clstb = new clsTRADABLE_KRX_INDEXOPTION_TB(); DataTable dt = clstb.Select(); foreach (DataRow dr in dt.Select()) { this.AvailableInstList_.Add(clsTRADABLE_KRX_INDEXOPTION_TB.Create(dr)); } }
public clsTRADABLE_KRX_INDEXOPTION_TB Clone() { try { clsTRADABLE_KRX_INDEXOPTION_TB cloneTB = new clsTRADABLE_KRX_INDEXOPTION_TB(); cloneTB._INST_KRX_CD = this._INST_KRX_CD; cloneTB._INST_NM = this._INST_NM; cloneTB._INST_BROKER_CD = this._INST_BROKER_CD; cloneTB._MATURITY_DT = this._MATURITY_DT; cloneTB._UNDERLYING_CD = this._UNDERLYING_CD; cloneTB._OPTION_TYP = this._OPTION_TYP; cloneTB._STRIKE = this._STRIKE; cloneTB._INDEX_MULTIPLIER = this._INDEX_MULTIPLIER; cloneTB._BROKER_CD = this._BROKER_CD; return cloneTB; } catch(Exception ex) { throw new Exception(ex.Message); } }
public static clsTRADABLE_KRX_INDEXOPTION_TB Create(DataRow dr) { try { clsTRADABLE_KRX_INDEXOPTION_TB tb = new clsTRADABLE_KRX_INDEXOPTION_TB(); tb._INST_KRX_CD = Convert.ToString(dr[0]); tb._INST_NM = Convert.ToString(dr[1]); tb._INST_BROKER_CD = Convert.ToString(dr[2]); tb._MATURITY_DT = Convert.ToString(dr[3]); tb._UNDERLYING_CD = Convert.ToString(dr[4]); tb._OPTION_TYP = Convert.ToInt32(dr[5]); tb._STRIKE = Convert.ToDouble(dr[6]); tb._INDEX_MULTIPLIER = Convert.ToInt32(dr[7]); tb._BROKER_CD = Convert.ToString(dr[8]); return tb; } catch(Exception ex) { throw new Exception(ex.Message); } }
public static void inserKRX_kospi200Option(string inst_name,string krx_krCode) { // kr 코드 파싱함. clsTRADABLE_KRX_INDEXOPTION_TB clstb = new clsTRADABLE_KRX_INDEXOPTION_TB(); clstb.INST_KRX_CD = krx_krCode; if ( clstb.SelectOwn() == 0 ) { clstb.INST_NM = inst_name; clstb.INST_BROKER_CD = ""; // 둘째 주 목요일 구하는 거. int year = Convert.ToInt32(inst_name.Substring(9, 4)); int month = Convert.ToInt32(inst_name.Substring(13, 2)); DateTime maturity = CalendarManager.monthlyOptionMaturiry(year, month, DayOfWeek.Thursday, 2); clstb.MATURITY_DT = maturity.ToString("yyyyMMdd"); clstb.UNDERLYING_CD = "KOSPI200"; int type = Convert.ToInt32(krx_krCode.Substring(2, 3)); clstb.OPTION_TYP = type; double strike = Convert.ToDouble(inst_name.Substring(inst_name.Length - 5, 5)); clstb.STRIKE = strike; clstb.INDEX_MULTIPLIER = 500000; clstb.BROKER_CD = ""; clstb.Insert(); } // }
public static Kospi200OptionTradeInfo makeKospi200f_tradeInfo(DateTime tradeDate, string availableTradeCD, int quantity, double tradeIndex) { Kospi200OptionTradeInfo ifti = new Kospi200OptionTradeInfo(); Kospi200Index_option index_option = Kospi200Index_option.CreateKOSPI200_Option(tradeDate, availableTradeCD, quantity, tradeIndex); index_option.Index_ = tradeIndex; ifti.Financial_instrument_ = index_option; // index multiplier clsTRADABLE_KRX_INDEXOPTION_TB clstb = new clsTRADABLE_KRX_INDEXOPTION_TB(); clstb.INST_KRX_CD = availableTradeCD; clstb.SelectOwn(); double indexMultiplier = clstb.INDEX_MULTIPLIER; // trade fee //clsITEM_FP_TRADE_FEE_TB clstb_tradeFee = new clsITEM_FP_TRADE_FEE_TB(); //clstb_tradeFee.TRADE_CD = availableTradeCD; //clstb_tradeFee.SelectOwn(); //double tradeFeeRate = clstb_tradeFee.TRADE_FEE; double tradeFeeRate = 0.0015; // 키움꺼임. double strike = index_option.indexOptionDAO_.STRIKE; ifti.DAO_ = new clsHITM_TRADEINFO_TB(); ifti.DAO_.TRADE_ID = IDGenerator.getNewTradeID(TradeInfo.TradeType.Dynamic_Hedge, index_option.InstrumentType_, tradeDate); ifti.DAO_.INSTRUMENT_ID = index_option.indexOptionDAO_.INSTRUMENT_ID; ifti.DAO_.TRADE_DT = tradeDate.ToString("yyyyMMdd"); ifti.DAO_.TRADE_TM = DateTime.Now.ToString("HHmmss"); ifti.DAO_.TRADE_SEQ = IDGenerator.getTradeSeq(tradeDate); ifti.DAO_.TRADE_TYP = Convert.ToInt32(TradeInfo.TradeType.Dynamic_Hedge); ifti.DAO_.FP_MASTER_TYP = index_option.baseDAO_.FP_MASTER_TYP; ifti.DAO_.TRADE_UNIT = Convert.ToInt32(tradeIndex * indexMultiplier); ifti.DAO_.TRADE_MULTIPLIER = indexMultiplier; ifti.DAO_.TRADE_CURR = "KRW"; ifti.DAO_.CURR_RATE = 1.0; ifti.DAO_.TRADE_INDEX = tradeIndex; ifti.DAO_.TRADE_INDEXUNIT = 1.0; ifti.DAO_.TRADE_QNT = quantity; ifti.DAO_.TRADE_NOTIONAL_AMT = Math.Round(Math.Abs(Convert.ToDouble(quantity * strike * indexMultiplier))); //ifti.DAO_.ACCOUNT_AMT = tradeIndex * quantity * indexMultiplier; ifti.DAO_.ACCOUNT_AMT = 0.0; ifti.DAO_.TRADE_FEE = Math.Round(Math.Abs(ifti.DAO_.ACCOUNT_AMT * tradeFeeRate)); ifti.DAO_.TRADE_PL = 0.0; ifti.DAO_.TRADE_FEE_PAYMENT_DT = tradeDate.ToString("yyyyMMdd"); ifti.DAO_.COUNTER_ID = "KRX"; ifti.DAO_.BOOKED_FLAG = 0; return ifti; }