커뮤니티

수식 부탁드립니다.

프로필 이미지
spek
2015-05-18 18:45:25
233
글번호 86167
답변완료
만기 롤오버 불가능하다고 하셨는데, 예스스팟에 과거 문답에 보면 답변이 있는데, 예스스팟으로는 가능한건가요? 아래는 과거 글내용 따온 것입니다. 그리고 해외선물 롤오버의 경우, 스스로 특정 날짜를 정해서 하려고 하는데, 어쨌든 불가능한건가요? 작성자 : 예스스탁 작성일 : 2014-11-17 오후 4:15:26 조회수 : 53 Re : Re : 문의드립니다. 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. MarketData1을 보유중인 근월물 주식선물 데이터 MarketData2를 차월물 주식선물 데이터로 지정하시면 됩니다. 수식에 게시판 금칙어가 있습니다. 영문업데이트가 Up*date로 되어 있으므로 *삭제하시기 바랍니다. var RollOver = false; var Pst = 0; var ID = 0; var Num = 0; var vol = 0; function Main_OnStart() { RollOver = false; pst = 0; vol = 0; } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*삭제 { if (lUp*dateID == 20001)//*삭제 { var d = new Date(); var Month = d.getMonth()+1;//월(1월이 0으로 리턴되므로 1을 더함) var ndate = d.getDate();//날짜 var week = d.getDay();//요일 //RollOver가 false이고 //3,6,9,12월이고 2번째주 목요일 //14시40분이후이면 if (RollOver == false && Month == 0 && week == 4 && ndate >= 8 && ndate <= 14 && MarketData1.time >= 1440000000) { //RollOver는 true(한번만 동작하기 위한 변수) RollOver = true; //MarketData1 종목잔고 셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code),0); //잔고가 매도포지션이면 if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { // 최종 포지션 저장 pst = Account1.Balance.position; // 수량저장 vol = Account1.Balance.count; //매도5호가로 잔고수량만큼 매수주문 ID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Ask(5), 0); } //잔고가 매수포지션이면 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { // 최종 포지션 저장 pst = Account1.Balance.position; // 수량저장 vol = Account1.Balance.count; //매수5호가로 잔고수량만큼 매도주문 ID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Bid(5), 0); } } } } //주무응답 수신 function Main_OnOrderResponse(OrderResponse) { //RollOver가 true //저장한 주문아이디와 동일 주문응답이 들어오면 //주문번호 저장 if (RollOver == true && OrderResponse.orderID == ID) { Num = OrderResponse.orderNum; } } //체결응답 수신 function Main_OnNotifyFill(NotifyFill) { //RollOver가 true //저장한 주문번호와 동일한 체결응답이 수신되면 if (RollOver == true && num > 0 && NotifyFill.orderNum == num) { //MarketData1청산주문이 분할로 체결될수도 있으므로 //MarketData1 잔고수량 세팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code),0); //MarketData1잔고가 없고 if (Account1.Balance.count == 0) { //MarketData1 최종 포지션이 매도였으면 if (pst == 1) { //MarketData2를 MarketData1 최종수량만큼 매도주문 Account1.OrderSell(Main.GetOrderCode(MarketData2.code),vol, MarketData1.Bid(5), 0); } //MarketData1 최종 포지션이 매수였으면 if (pst == 2) { //MarketData2를 MarketData1 최종수량만큼 매수주문 Account1.OrderBuy(Main.GetOrderCode(MarketData2.code),vol, MarketData1.Ask(5), 0); } } } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 문의하신 내용 가능하지 않습니다. 자동으로 롤오버를 하기 위해서는 보유한 종목들의 차월물 종목코드를 알아야 합니다. 하지만 잔고 종목의 종목코드를 보고 차월물의 종목코드를 알수가 없습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 착한이 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하세요. Yestrader로 주식선물일봉을 이용한 포지션 전략에서 보유중인 전종목을 만기일날 롤오버하는 YesSpot수식좀 부탁드립니다. Yestrader의 경우 만기일 전종목 청산하고 익일 재진입하는 전략을 쓰고 있는데요, 이럴경우 손익에 왜곡이 있어서 만기일날 전종목교체하는 방법을 사용하고 싶습니다. 보유종목의 개수에 맞춰서 만기일 특정시간에 전종목을 다음물로 롤오버하되, 시간은 시스템의 부하를 방지하기 위해 종목마다 다르게 가져가고자 합니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-05-19 08:37:00

안녕하세요 예스스탁입니다. 예 예스랭귀지로는 가능하지 않고 처리하신 다면 예스스팟으로 처리하셔야 합니다. 올리신 스팟식은 국내선물 기준 단순 3/6/9/12월 두번째 목요일에 다음월물로 롤오버를 하는 내용입니다. 해외선물의 경우 최종거래일이 예를들어 유로fx의 경우 세째 수요일의 2영업일전 크루드오일의 경우 만기월 전월 25일의 3영업일전 으로 날짜가 유동적이라 말씀하신 것과 같이 종목에 맞게 날짜를 지정해서 조건을 주셔서 처리를 하셔야 합니다. 즐거운 하루되세요 > spek 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 만기 롤오버 불가능하다고 하셨는데, 예스스팟에 과거 문답에 보면 답변이 있는데, 예스스팟으로는 가능한건가요? 아래는 과거 글내용 따온 것입니다. 그리고 해외선물 롤오버의 경우, 스스로 특정 날짜를 정해서 하려고 하는데, 어쨌든 불가능한건가요? 작성자 : 예스스탁 작성일 : 2014-11-17 오후 4:15:26 조회수 : 53 Re : Re : 문의드립니다. 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. MarketData1을 보유중인 근월물 주식선물 데이터 MarketData2를 차월물 주식선물 데이터로 지정하시면 됩니다. 수식에 게시판 금칙어가 있습니다. 영문업데이트가 Up*date로 되어 있으므로 *삭제하시기 바랍니다. var RollOver = false; var Pst = 0; var ID = 0; var Num = 0; var vol = 0; function Main_OnStart() { RollOver = false; pst = 0; vol = 0; } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*삭제 { if (lUp*dateID == 20001)//*삭제 { var d = new Date(); var Month = d.getMonth()+1;//월(1월이 0으로 리턴되므로 1을 더함) var ndate = d.getDate();//날짜 var week = d.getDay();//요일 //RollOver가 false이고 //3,6,9,12월이고 2번째주 목요일 //14시40분이후이면 if (RollOver == false && Month == 0 && week == 4 && ndate >= 8 && ndate <= 14 && MarketData1.time >= 1440000000) { //RollOver는 true(한번만 동작하기 위한 변수) RollOver = true; //MarketData1 종목잔고 셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code),0); //잔고가 매도포지션이면 if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { // 최종 포지션 저장 pst = Account1.Balance.position; // 수량저장 vol = Account1.Balance.count; //매도5호가로 잔고수량만큼 매수주문 ID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Ask(5), 0); } //잔고가 매수포지션이면 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { // 최종 포지션 저장 pst = Account1.Balance.position; // 수량저장 vol = Account1.Balance.count; //매수5호가로 잔고수량만큼 매도주문 ID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Bid(5), 0); } } } } //주무응답 수신 function Main_OnOrderResponse(OrderResponse) { //RollOver가 true //저장한 주문아이디와 동일 주문응답이 들어오면 //주문번호 저장 if (RollOver == true && OrderResponse.orderID == ID) { Num = OrderResponse.orderNum; } } //체결응답 수신 function Main_OnNotifyFill(NotifyFill) { //RollOver가 true //저장한 주문번호와 동일한 체결응답이 수신되면 if (RollOver == true && num > 0 && NotifyFill.orderNum == num) { //MarketData1청산주문이 분할로 체결될수도 있으므로 //MarketData1 잔고수량 세팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code),0); //MarketData1잔고가 없고 if (Account1.Balance.count == 0) { //MarketData1 최종 포지션이 매도였으면 if (pst == 1) { //MarketData2를 MarketData1 최종수량만큼 매도주문 Account1.OrderSell(Main.GetOrderCode(MarketData2.code),vol, MarketData1.Bid(5), 0); } //MarketData1 최종 포지션이 매수였으면 if (pst == 2) { //MarketData2를 MarketData1 최종수량만큼 매수주문 Account1.OrderBuy(Main.GetOrderCode(MarketData2.code),vol, MarketData1.Ask(5), 0); } } } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 문의하신 내용 가능하지 않습니다. 자동으로 롤오버를 하기 위해서는 보유한 종목들의 차월물 종목코드를 알아야 합니다. 하지만 잔고 종목의 종목코드를 보고 차월물의 종목코드를 알수가 없습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 착한이 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하세요. Yestrader로 주식선물일봉을 이용한 포지션 전략에서 보유중인 전종목을 만기일날 롤오버하는 YesSpot수식좀 부탁드립니다. Yestrader의 경우 만기일 전종목 청산하고 익일 재진입하는 전략을 쓰고 있는데요, 이럴경우 손익에 왜곡이 있어서 만기일날 전종목교체하는 방법을 사용하고 싶습니다. 보유종목의 개수에 맞춰서 만기일 특정시간에 전종목을 다음물로 롤오버하되, 시간은 시스템의 부하를 방지하기 위해 종목마다 다르게 가져가고자 합니다. 감사합니다.