커뮤니티

주식선물 종가청산 로직 검토부탁드립니다.

프로필 이미지
영원한자유
2019-05-20 21:21:08
3616
글번호 224874
답변완료
주식선물의 경우 장종료후 시장가가 없습니다. 장종료후 종가청산을 어떻게 해야할까요? 3시 36분에 지정가로 청산 가능한지 궁금합니다.
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2019-05-22 16:44:51

안녕하세요 예스스탁입니다. 현재가로 주문을 집행하면 별도로 종목객체는 필요가 없습니다. 현재가에 +-N틱으로 주문을 내기위해서는 가격별로 호가단위가 필요한데 코스피주식선물과 코스닥주식선물의 호가가격단위가 다르므로 종목객체를 생성해 이용해야 합니다. 종목객체의 GetTickSize함수가 자동으로 가격에 맞는 틱수를 리턴합니다. 지정한 시간이 되면 보유종목에 따라 종목객체를 생성하고 주식선물이면 현재가+-N틱으로 지정해 지정가 주문을 내고 주식선물이 아니면 시장가로 주문을 집행합니다. 주문가격은 매수주문은 현재가+3틱, 매도 주문은 현재가-3틱으로 작성되었으므로 의도하시는 가격으로 변경하시면 됩니다. var num; function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 150000) { Main.KillTimer(1); num = Account1.GetTheNumberOfBalances(); Main.MessageList("보유종목수:",num); if (num >= 1) { req = num-1; Account1.SetBalance(req); if (Account1.Balance.count > 0) { Main.ReqMarketData(Account1.Balance.code); Main.MessageList("종목객체요청:",Account1.Balance.code); } } } } function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체생성완료:",MarketData.code); if (MarketData.code == Account1.Balance.code) { //주식선물이면 지정가 if (MarketData.categoryEx == 23) { //매도포지션이면 if (Account1.Balance.position == 1) { var BuyPrice = MarketData1.current; //루프 3번 돌면서 1틱씩 증가 for (var i = 1; i <= 3; i++) { BuyPrice = BuyPrice+MarketData1.GetTickSize(BuyPrice); } Main.MessageList("OrderBuy :",MarketData.code,Account1.Balance.count,BuyPrice); Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,BuyPrice,0); } //매수포지션이면 if (Account1.Balance.position == 2) { var SellPrice = MarketData1.current; //루프 3번 돌면서 1틱씩 감소 for (var i = 1; i <= 3; i++) { t1 = MarketData1.GetTickSize(SellPrice); t2 = MarketData1.GetTickSize(SellPrice-t1); if (t1 == t2) SellPrice = SellPrice-t1; else SellPrice = SellPrice-t2; } Main.MessageList("OrderSell :",MarketData.code,Account1.Balance.count,SellPrice); Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,SellPrice,0); } } else //주식선물이 아니면 시장가 { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } req = req-1 if (req >= 0) { Account1.SetBalance(req); if (Account1.Balance.count > 0) { Main.ReqMarketData(Account1.Balance.code); } } else { Main.MessageList("끝"); } } } 즐거운 하루되세요 > 영원한자유 님이 쓴 글입니다. > 제목 : 주식선물 종가청산 로직 검토부탁드립니다. > 주식선물의 경우 장종료후 시장가가 없습니다. 장종료후 종가청산을 어떻게 해야할까요? 3시 36분에 지정가로 청산 가능한지 궁금합니다.
프로필 이미지

영원한자유

2019-05-27 21:41:19

categoryEx == 23 이 메뉴얼에는 FUTURE_SPOT 라고 되어있는데요. 명확한 의미가 무엇인가요? 주식선물인가요? 미니선물도 포함이 되는지 궁금합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 주식선물 종가청산 로직 검토부탁드립니다. > 안녕하세요 예스스탁입니다. 현재가로 주문을 집행하면 별도로 종목객체는 필요가 없습니다. 현재가에 +-N틱으로 주문을 내기위해서는 가격별로 호가단위가 필요한데 코스피주식선물과 코스닥주식선물의 호가가격단위가 다르므로 종목객체를 생성해 이용해야 합니다. 종목객체의 GetTickSize함수가 자동으로 가격에 맞는 틱수를 리턴합니다. 지정한 시간이 되면 보유종목에 따라 종목객체를 생성하고 주식선물이면 현재가+-N틱으로 지정해 지정가 주문을 내고 주식선물이 아니면 시장가로 주문을 집행합니다. 주문가격은 매수주문은 현재가+3틱, 매도 주문은 현재가-3틱으로 작성되었으므로 의도하시는 가격으로 변경하시면 됩니다. var num; function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 150000) { Main.KillTimer(1); num = Account1.GetTheNumberOfBalances(); Main.MessageList("보유종목수:",num); if (num >= 1) { req = num-1; Account1.SetBalance(req); if (Account1.Balance.count > 0) { Main.ReqMarketData(Account1.Balance.code); Main.MessageList("종목객체요청:",Account1.Balance.code); } } } } function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체생성완료:",MarketData.code); if (MarketData.code == Account1.Balance.code) { //주식선물이면 지정가 if (MarketData.categoryEx == 23) { //매도포지션이면 if (Account1.Balance.position == 1) { var BuyPrice = MarketData1.current; //루프 3번 돌면서 1틱씩 증가 for (var i = 1; i <= 3; i++) { BuyPrice = BuyPrice+MarketData1.GetTickSize(BuyPrice); } Main.MessageList("OrderBuy :",MarketData.code,Account1.Balance.count,BuyPrice); Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,BuyPrice,0); } //매수포지션이면 if (Account1.Balance.position == 2) { var SellPrice = MarketData1.current; //루프 3번 돌면서 1틱씩 감소 for (var i = 1; i <= 3; i++) { t1 = MarketData1.GetTickSize(SellPrice); t2 = MarketData1.GetTickSize(SellPrice-t1); if (t1 == t2) SellPrice = SellPrice-t1; else SellPrice = SellPrice-t2; } Main.MessageList("OrderSell :",MarketData.code,Account1.Balance.count,SellPrice); Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,SellPrice,0); } } else //주식선물이 아니면 시장가 { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } req = req-1 if (req >= 0) { Account1.SetBalance(req); if (Account1.Balance.count > 0) { Main.ReqMarketData(Account1.Balance.code); } } else { Main.MessageList("끝"); } } } 즐거운 하루되세요 > 영원한자유 님이 쓴 글입니다. > 제목 : 주식선물 종가청산 로직 검토부탁드립니다. > 주식선물의 경우 장종료후 시장가가 없습니다. 장종료후 종가청산을 어떻게 해야할까요? 3시 36분에 지정가로 청산 가능한지 궁금합니다.
프로필 이미지

예스스탁 예스스탁 답변

2019-05-28 16:15:11

안녕하세요 예스스탁입니다. FUTURE_SPOT은 주식 선물입니다. 코스피200미니선물은 24번입니다. 즐거운 하루되세요 > 영원한자유 님이 쓴 글입니다. > 제목 : Re : Re : 주식선물 종가청산 로직 검토부탁드립니다. > categoryEx == 23 이 메뉴얼에는 FUTURE_SPOT 라고 되어있는데요. 명확한 의미가 무엇인가요? 주식선물인가요? 미니선물도 포함이 되는지 궁금합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 주식선물 종가청산 로직 검토부탁드립니다. > 안녕하세요 예스스탁입니다. 현재가로 주문을 집행하면 별도로 종목객체는 필요가 없습니다. 현재가에 +-N틱으로 주문을 내기위해서는 가격별로 호가단위가 필요한데 코스피주식선물과 코스닥주식선물의 호가가격단위가 다르므로 종목객체를 생성해 이용해야 합니다. 종목객체의 GetTickSize함수가 자동으로 가격에 맞는 틱수를 리턴합니다. 지정한 시간이 되면 보유종목에 따라 종목객체를 생성하고 주식선물이면 현재가+-N틱으로 지정해 지정가 주문을 내고 주식선물이 아니면 시장가로 주문을 집행합니다. 주문가격은 매수주문은 현재가+3틱, 매도 주문은 현재가-3틱으로 작성되었으므로 의도하시는 가격으로 변경하시면 됩니다. var num; function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 150000) { Main.KillTimer(1); num = Account1.GetTheNumberOfBalances(); Main.MessageList("보유종목수:",num); if (num >= 1) { req = num-1; Account1.SetBalance(req); if (Account1.Balance.count > 0) { Main.ReqMarketData(Account1.Balance.code); Main.MessageList("종목객체요청:",Account1.Balance.code); } } } } function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체생성완료:",MarketData.code); if (MarketData.code == Account1.Balance.code) { //주식선물이면 지정가 if (MarketData.categoryEx == 23) { //매도포지션이면 if (Account1.Balance.position == 1) { var BuyPrice = MarketData1.current; //루프 3번 돌면서 1틱씩 증가 for (var i = 1; i <= 3; i++) { BuyPrice = BuyPrice+MarketData1.GetTickSize(BuyPrice); } Main.MessageList("OrderBuy :",MarketData.code,Account1.Balance.count,BuyPrice); Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,BuyPrice,0); } //매수포지션이면 if (Account1.Balance.position == 2) { var SellPrice = MarketData1.current; //루프 3번 돌면서 1틱씩 감소 for (var i = 1; i <= 3; i++) { t1 = MarketData1.GetTickSize(SellPrice); t2 = MarketData1.GetTickSize(SellPrice-t1); if (t1 == t2) SellPrice = SellPrice-t1; else SellPrice = SellPrice-t2; } Main.MessageList("OrderSell :",MarketData.code,Account1.Balance.count,SellPrice); Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,SellPrice,0); } } else //주식선물이 아니면 시장가 { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } req = req-1 if (req >= 0) { Account1.SetBalance(req); if (Account1.Balance.count > 0) { Main.ReqMarketData(Account1.Balance.code); } } else { Main.MessageList("끝"); } } } 즐거운 하루되세요 > 영원한자유 님이 쓴 글입니다. > 제목 : 주식선물 종가청산 로직 검토부탁드립니다. > 주식선물의 경우 장종료후 시장가가 없습니다. 장종료후 종가청산을 어떻게 해야할까요? 3시 36분에 지정가로 청산 가능한지 궁금합니다.