커뮤니티

확장차트 문의

프로필 이미지
lucky93
2014-01-08 19:29:52
909
글번호 222770
답변완료
안녕하세요? 아래 기능을 수행할 수 있는 예제 부탁 드립니다. 1. 9시 5분에 옵션종목을 가격이 1에 가장 가까운 콜/풋 옵션 종목 선정 2. 해당 옵션 종목으로 확장차트 생성 3. 확장 차트에 설정한 시스템에 의해서 매수 신호가 발생하면 매수주문 4. 청산 신호 발생하면 매도 주문 5. 오후 3시 5분 시각에 잔고에 미체결 주문 남아있으면 모두 취소 만약 상기 1번과 2번 구현이 확장차트 개체를 추가하는 방식으로 힘들면 확장차트를 수식으로 생성하는 예제로 부탁 드립니다.
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2014-01-15 19:28:28

안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 스크립트 객체화면에서 설정은 아래와 같습니다. 계좌객체 추가-- 속성에서 계좌명을 Account1로 지정하고 계좌번호 지정 옵션객체 추가 var Start; var SK; var EntryVol; var Start; var vol1; var vol2; var CallStart; var PutStart; function Main_OnStart() { Start = 0; vol1 = 0; vol2 = 0; Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //9시 5분에 if (Start == 0 && nEventID == 1 && HHMMSS >= 90500) { Start = 1; UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1); CallCode[i+LNum] = Option.GetATMCallRecent(i); } CC = 99999999; CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } for (var i = -UNum; i <= LNum; i++) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-1); PutCode[i+UNum] = Option.GetATMPutRecent(i); } PP = 99999999; PutOrderCode = -1; for (var i = -UNum; i < LNum; i++) { if (PutPrice[i+UNum] <= PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } Main.MessageList("콜",CallOrderCode,"풋",PutOrderCode); //확장 차트객체 요청 //콜차트,5분봉,5000개,수정주가 갭보정 미설정 var ChartSet1 = new ReqChartItem(CallOrderCode,5, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //풋차트,5분봉,5000개,수정주가 갭보정 미설정 var ChartSet2 = new ReqChartItem(PutOrderCode,5, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); Main.ReqChartEx(ChartSet1,SystemInfo("콜차트에 적용할 시스템명")); Main.ReqChartEx(ChartSet2,SystemInfo("풋차트에 적용할 시스템명")); } //15시 5분에 미체결 주문 모두 취소 if (nEventID == 1 && HHMMSS >= 150500) { Main.KillTimer(1); var num = Account1.GetTheNumberOfUnfills(); for(var i = 0; i < num; i++) { Account1.SetUnfillIndex(nIndex); Account1.OrderCancel(Account1.Unfill.orderNum); } } } //요청한 차트객체 생성이 완료되면 function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == CallOrderCode) { CallStart = 1; } if (ChartEx.GetCode(1) == PutOrderCode) { PutStart = 1; } } //확장차트에서 신호나오면 주문 function Main_OnRiseSignal(ChartEx, Signal) { //콜차트 if (CallStart == 1 && ChartEx.GetCode(1) == CallOrderCode) { if (Signal.signalKind == 1) { vol1 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol1,Option.GetAskByCode(Signal.code,3),0); } if (vol1 > 0 && Signal.signalKind == 2) { Account1.OrderSell(Signal.code,Evol1,Option.GetBidByCode(Signal.code,3),0); } if (Signal.signalKind == 3) { vol1 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol1,Option.GetBidByCode(Signal.code,3),0); } if (vol1 > 0 && Signal.signalKind == 4) { Account1.OrderBuy(Signal.code,vol1,Option.GetAskByCode(Signal.code,3),0); } } //풋차트 if (PutStart == 1 && ChartEx.GetCode(1) == PutOrderCode) { if (Signal.signalKind == 1) { vol2 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol2,Option.GetAskByCode(Signal.code,3),0); } if (vol2 > 0 && Signal.signalKind == 2) { Account1.OrderSell(Signal.code,Evol2,Option.GetBidByCode(Signal.code,3),0); } if (Signal.signalKind == 3) { vol2 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol2,Option.GetBidByCode(Signal.code,3),0); } if (vol2 > 0 && Signal.signalKind == 4) { Account1.OrderBuy(Signal.code,vol2,Option.GetAskByCode(Signal.code,3),0); } } } 즐거운 하루되세요 > lucky93 님이 쓴 글입니다. > 제목 : 확장차트 문의 > 안녕하세요? 아래 기능을 수행할 수 있는 예제 부탁 드립니다. 1. 9시 5분에 옵션종목을 가격이 1에 가장 가까운 콜/풋 옵션 종목 선정 2. 해당 옵션 종목으로 확장차트 생성 3. 확장 차트에 설정한 시스템에 의해서 매수 신호가 발생하면 매수주문 4. 청산 신호 발생하면 매도 주문 5. 오후 3시 5분 시각에 잔고에 미체결 주문 남아있으면 모두 취소 만약 상기 1번과 2번 구현이 확장차트 개체를 추가하는 방식으로 힘들면 확장차트를 수식으로 생성하는 예제로 부탁 드립니다.
프로필 이미지

lucky93

2014-01-20 11:13:17

감사합니다. 정말 많은 도움이 되었습니다. ^^ 좋은 하루 되세요~~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 확장차트 문의 > 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 스크립트 객체화면에서 설정은 아래와 같습니다. 계좌객체 추가-- 속성에서 계좌명을 Account1로 지정하고 계좌번호 지정 옵션객체 추가 var Start; var SK; var EntryVol; var Start; var vol1; var vol2; var CallStart; var PutStart; function Main_OnStart() { Start = 0; vol1 = 0; vol2 = 0; Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //9시 5분에 if (Start == 0 && nEventID == 1 && HHMMSS >= 90500) { Start = 1; UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1); CallCode[i+LNum] = Option.GetATMCallRecent(i); } CC = 99999999; CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } for (var i = -UNum; i <= LNum; i++) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-1); PutCode[i+UNum] = Option.GetATMPutRecent(i); } PP = 99999999; PutOrderCode = -1; for (var i = -UNum; i < LNum; i++) { if (PutPrice[i+UNum] <= PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } Main.MessageList("콜",CallOrderCode,"풋",PutOrderCode); //확장 차트객체 요청 //콜차트,5분봉,5000개,수정주가 갭보정 미설정 var ChartSet1 = new ReqChartItem(CallOrderCode,5, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //풋차트,5분봉,5000개,수정주가 갭보정 미설정 var ChartSet2 = new ReqChartItem(PutOrderCode,5, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); Main.ReqChartEx(ChartSet1,SystemInfo("콜차트에 적용할 시스템명")); Main.ReqChartEx(ChartSet2,SystemInfo("풋차트에 적용할 시스템명")); } //15시 5분에 미체결 주문 모두 취소 if (nEventID == 1 && HHMMSS >= 150500) { Main.KillTimer(1); var num = Account1.GetTheNumberOfUnfills(); for(var i = 0; i < num; i++) { Account1.SetUnfillIndex(nIndex); Account1.OrderCancel(Account1.Unfill.orderNum); } } } //요청한 차트객체 생성이 완료되면 function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == CallOrderCode) { CallStart = 1; } if (ChartEx.GetCode(1) == PutOrderCode) { PutStart = 1; } } //확장차트에서 신호나오면 주문 function Main_OnRiseSignal(ChartEx, Signal) { //콜차트 if (CallStart == 1 && ChartEx.GetCode(1) == CallOrderCode) { if (Signal.signalKind == 1) { vol1 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol1,Option.GetAskByCode(Signal.code,3),0); } if (vol1 > 0 && Signal.signalKind == 2) { Account1.OrderSell(Signal.code,Evol1,Option.GetBidByCode(Signal.code,3),0); } if (Signal.signalKind == 3) { vol1 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol1,Option.GetBidByCode(Signal.code,3),0); } if (vol1 > 0 && Signal.signalKind == 4) { Account1.OrderBuy(Signal.code,vol1,Option.GetAskByCode(Signal.code,3),0); } } //풋차트 if (PutStart == 1 && ChartEx.GetCode(1) == PutOrderCode) { if (Signal.signalKind == 1) { vol2 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol2,Option.GetAskByCode(Signal.code,3),0); } if (vol2 > 0 && Signal.signalKind == 2) { Account1.OrderSell(Signal.code,Evol2,Option.GetBidByCode(Signal.code,3),0); } if (Signal.signalKind == 3) { vol2 = Math.abs(Signal.count); Account1.OrderBuy(Signal.code,vol2,Option.GetBidByCode(Signal.code,3),0); } if (vol2 > 0 && Signal.signalKind == 4) { Account1.OrderBuy(Signal.code,vol2,Option.GetAskByCode(Signal.code,3),0); } } } 즐거운 하루되세요 > lucky93 님이 쓴 글입니다. > 제목 : 확장차트 문의 > 안녕하세요? 아래 기능을 수행할 수 있는 예제 부탁 드립니다. 1. 9시 5분에 옵션종목을 가격이 1에 가장 가까운 콜/풋 옵션 종목 선정 2. 해당 옵션 종목으로 확장차트 생성 3. 확장 차트에 설정한 시스템에 의해서 매수 신호가 발생하면 매수주문 4. 청산 신호 발생하면 매도 주문 5. 오후 3시 5분 시각에 잔고에 미체결 주문 남아있으면 모두 취소 만약 상기 1번과 2번 구현이 확장차트 개체를 추가하는 방식으로 힘들면 확장차트를 수식으로 생성하는 예제로 부탁 드립니다.