커뮤니티

문의 2개

프로필 이미지
좌오비우오비
2025-12-05 09:36:13
85
글번호 228693
답변완료

문의 1)

데이트레이딩이며, 옵션 매수거래 용도입니다.


140000 이후부터

행사가 중 옵션가격 0.12 체결이 발생하면 그 행사가의 당일 저점을 확인합니다.

당일저점이 0.09 이상이였을 경우에만 매수주문 합니다( 그 행사가의 당일 저점이 0.08 이하면 주문실행하지 않습니다).

- 거래횟수 : 1회

- buy 주문 : 지정가 0.12 // 상대매도+5호가도 수식 요청드립니다.

- 수량 : 5개

- 익절 : 1.99

- 손절 : 0.08

- end of day : 151800



문의 2)

데이트레이딩이며, 옵션 매수거래 용도입니다.


084500 이후부터

행사가 중 옵션가격 0.12 체결이 발생하면

그 행사가의 시가를 확인합니다.

당일시가가 0.12 이상이였을 경우에만 매수주문 합니다( 그 행사가의 당일 시가가 0.11 이하면 주문실행하지 않습니다).

- 거래횟수 : 1회

- buy 주문 : 지정가 0.12 // 상대매도+5호가도 수식 요청드립니다.

- 수량 : 5개

- 익절 : 1.00

- 손절 : 0.02

- end of day : 151800



답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-12-18 15:27:12

안녕하세요 예스스탁입니다. 1 var 시작시간 = 140000; var 현재가 = 0.12; var 당일저가 = 0.09; var 수량 = 5; var 익절 = 1.99; var 손절 = 0.08; var 당일청산 = 151800; var B = 0,OC,BID,BNUM; function Main_OnStart() { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.SetTimer(1, 1000); B = 0; Main.MessageList("Start:",B); } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //14시~당일청산 사이 if (HHMMSS >= 시작시간 && HHMMSS < 당일청산 && B == 0) { //전체 콜종목 대상 for(var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { //현재가 0.12이고 당일저가 0.09이상 발생 if (Option1.GetCurrent(0,i) == 현재가 && Option1.GetLow(0,i) >= 당일저가) { //종목코드 OC = Option1.GetATMCallRecent(i); //0.12로 5계약 매수주문 BID = Account1.OrderBuy(OC,수량, 현재가,0);   //BID = Account1.OrderBuy(OC,수량, Option1.GetAsk(OC, 5),0); //B는 1로 변경 B = 1; Main.MessageList(HHMMSS,"매수:",OC); //for문 빠져나감 break; } } } //진입주문 정상접수 이후 if (B == 2) { //매수종목 현재가 var cur = Option1.GetCurrent(OC); Main.MessageList(HHMMSS,"청산체크:현재가:",cur); //익절, 손절, 당일청산조건이 충족하면 if (cur >= 익절 || cur <= 손절 || HHMMSS >= 당일청산) { //타이머 종료 Main.KillTimer(1); Main.MessageList(HHMMSS,"청산조건충족:",OC); //초기 청산수량은 진입수량 var XV = 수량; //매수진입주문 미체결 셋팅 Account1.SetUnfill(BNUM); //미체결 있으면 if (Account1.Unfill.count > 0) { //미체결수량 만큼 청산수량 차감 XV = XV-Account1.Unfill.count; Main.MessageList(HHMMSS,"미체결수량:",Account1.Unfill.count); //미체결 취소 Account1.OrderCancel(BNUM); } Main.MessageList(HHMMSS,"청산수량:",XV); Account1.OrderSell(OC,XV,cur,0); } } } //주문응답 수신 function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { //정상접수되었으면 if (OrderResponse.isNormal == true) { //B는 2 B = 2; //주문번호 저장 BNUM = OrderResponse.orderNum; Main.MessageList(HHMMSS,"매수주문정상접수:",B); } else { //주문거부등 주문오류이면 B는 -1; B = -1; //타이머 중지하고 더이상 진행 안함 Main.KillTimer(1); Main.MessageList(HHMMSS,"매수주문 주문오류:",B); } } } 2 var 시작시간 = 84500; var 현재가 = 0.13; var 수량 = 5; var 익절 = 1.00; var 손절 = 0.02; var 당일청산 = 151800; var B = 0,OC,BID,BNUM; function Main_OnStart() { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.SetTimer(1, 1000); B = 0; Main.MessageList("Start:",B); } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //14시~당일청산 사이 if (HHMMSS >= 시작시간 && HHMMSS < 당일청산 && B == 0) { //전체 콜종목 대상 for(var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { //현재가 0.12이고 당일저가 0.09이상 발생 if (Option1.GetCurrent(0,i) == 현재가 && Option1.GetOpen(0,i) >= 현재가) { //종목코드 OC = Option1.GetATMCallRecent(i); //0.12로 5계약 매수주문 BID = Account1.OrderBuy(OC,수량, 현재가,0); //BID = Account1.OrderBuy(OC,수량, Option1.GetAsk(OC, 5),0); //B는 1로 변경 B = 1; Main.MessageList(HHMMSS,"매수:",OC); //for문 빠져나감 break; } } } //진입주문 정상접수 이후 if (B == 2) { //매수종목 현재가 var cur = Option1.GetCurrent(OC); Main.MessageList(HHMMSS,"청산체크:현재가:",cur); //익절, 손절, 당일청산조건이 충족하면 if (cur >= 익절 || cur <= 손절 || HHMMSS >= 당일청산) { //타이머 종료 Main.KillTimer(1); Main.MessageList(HHMMSS,"청산조건충족:",OC); //초기 청산수량은 진입수량 var XV = 수량; //매수진입주문 미체결 셋팅 Account1.SetUnfill(BNUM); //미체결 있으면 if (Account1.Unfill.count > 0) { //미체결수량 만큼 청산수량 차감 XV = XV-Account1.Unfill.count; Main.MessageList(HHMMSS,"미체결수량:",Account1.Unfill.count); //미체결 취소 Account1.OrderCancel(BNUM); } Main.MessageList(HHMMSS,"청산수량:",XV); Account1.OrderSell(OC,XV,cur,0); } } } //주문응답 수신 function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { //정상접수되었으면 if (OrderResponse.isNormal == true) { //B는 2 B = 2; //주문번호 저장 BNUM = OrderResponse.orderNum; Main.MessageList(HHMMSS,"매수주문정상접수:",B); } else { //주문거부등 주문오류이면 B는 -1; B = -1; //타이머 중지하고 더이상 진행 안함 Main.KillTimer(1); Main.MessageList(HHMMSS,"매수주문 주문오류:",B); } } } 즐거운 하루되세요