커뮤니티

저점 돌파 콜매수, 고점 돌파 풋매수

프로필 이미지
좌오비우오비
2026-03-09 10:49:34
110
글번호 230984
답변완료

주간용이며, 데이트레이딩입니다.

신호는 선물, 진입은 옵션입니다.



요청수식1 .   장초반에 생긴 저점을 깨지 못하다가 오후에 저점에 근접할 때  Call 매수


1.  전제조건  :  K200선물 시가에서 10포인트 이상 하락

2. 구간 저점 저장  :  084500 에서  100000 까지 K200선물 저점은  A 입니다.  

        ( A는 084500 부터 100000 까지 시세를 모두 보고 판단 )

3. 트리거  :  stime>=130000  and stime<150000    A+2.5포인트 crossdown

4. 진입  :  콜옵션 가격 0.20 포인트 이하에 최근접한 행사가에 매수주문 1개를 매도5호가에 냅니다.

        ( 단, 저점 A가 여전히 저점인 경우만 진입 )

5. 청산  :  익절 2.50포인트,  EndofDay 151500

6. 진입횟수 : 1회



요청수식2.   장초반에 생긴 고점을 깨지 못하다가 오후에 고점에 근접할  때  Put 매수


1.  전제조건  :  K200선물 시가에서 10포인트 이상 상승

2. 구간 고점 저장  :  084500 에서  100000 까지 K200선물 고점은  B 입니다.

        ( B는 084500 부터 100000 까지 시세를 모두 보고 판단 )

3. 트리거  :  stime>=130000  and stime<150000   B-2.5포인트 crossup

4. 진입  :  풋옵션 가격 0.20 포인트 이하에 최근접한 행사가에 매수주문 1개를 매도5호가에 냅니다.

        ( 단, 고점 B가 여전히 고점인 경우만 진입 )

5. 청산  :  익절 2.50포인트,  EndofDay 151500

6. 진입횟수 : 1회



수식 부탁 드립니다.


항상 고맙습니다.


답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-03-23 16:51:58

안녕하세요 예스스탁입니다. 1 //종목객체 추가 -> 속성에서 객체명 MarketData1, 선물로 지정 //옵션객체 추가 -> 속성에서 객체명 Option1, 상품지정 //계좌객체 추가 -> 속성에서 객체명 Account1, 계좌번호 지정 var Step,A,OrderCode,Price, Price1; function Main_OnStart() { //1초 타이머 Main.SetTimer(1, 1000); Step = 0; } function Main_OnTimer(nEventID) { if (nEventID == 1) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Price1 = Price; Price = MarketData1.current; //8시45~10시 사이에 최저가 저장 if (HHMMSS >= 84500 && HHMMSS < 100000) { A = MarketData1.low; } //13시~15시15분 사이에 //10시까지의 최저가가 시가대비 10포인트 이상 하락했고 10시까지의 최저가가 당일 최저가 if (HHMMSS >= 130000 && HHMMSS < 151500 && A > 0 && A <= MarketData1.open -10 && MarketData1.low == A) { //A+2.5 하락해 터치 if (Step == 0 && HHMMSS < 150000 && Price1 > 0 && Price <= A+2.5 && Price1 > A+2.5) { //0.2이하 콜종목 중 최고값 종목 선정 OrderCode = ""; mx = NaN; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { var curr = Option1.GetCurrent(0,i); if (curr <= 0.20 && (isNaN(mx) == true || (isNaN(mx) == false && curr > mx))) { mx = curr; OrderCode = Option1.GetATMCallRecent(i); } } //매수주문 if (OrderCode != "") { Account1.OrderBuy(OrderCode, 1, Option1.GetAsk(OrderCode,5), 0); Step = 1; } } //매수후 if (Step == 1) { //평단가대비 2.5 상승시 청산 Account1.SetBalance(OrderCode,0) if (Account1.Balance.count > 0 && Account1.Balance.current >= Account1.Balance.avgUnitCost + 2.5) { Step = 2; Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Option1.GetBid(Account1.Balance.code,5),0) } } } //매수후 15시15분이후에 if ( Step == 1 && HHMMSS >= 151500) { Step = 2; //청산 Account1.SetBalance(OrderCode,0) if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Option1.GetBid(Account1.Balance.code,5),0) } } } } 2 //종목객체 추가 -> 속성에서 객체명 MarketData1, 선물로 지정 //옵션객체 추가 -> 속성에서 객체명 Option1, 상품지정 //계좌객체 추가 -> 속성에서 객체명 Account1, 계좌번호 지정 var Step,B,OrderCode,Price, Price1; function Main_OnStart() { //1초 타이머 Main.SetTimer(1, 1000); Step = 0; } function Main_OnTimer(nEventID) { if (nEventID == 1) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Price1 = Price; Price = MarketData1.current; //8시45~10시 사이에 최고가 저장 if (HHMMSS >= 84500 && HHMMSS < 100000) { B = MarketData1.high; } //13시~15시15분 사이에 //10시까지의 최고가가 시가대비 10포인트 이상 상승했고 10시까지의 최고가가 당일 최고가 if (HHMMSS >= 130000 && HHMMSS < 151500 && B > 0 && B >= MarketData1.open +10 && MarketData1.high == B) { //A+2.5 하락해 터치 if (Step == 0 && HHMMSS < 150000 && Price1 > 0 && Price >= B-2.5 && Price1 < B-2.5) { //0.2이하 풋종목 중 최고값 종목 선정 OrderCode = ""; mx = NaN; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { var curr = Option1.GetCurrent(1,-i); if (curr <= 0.20 && (isNaN(mx) == true || (isNaN(mx) == false && curr > mx))) { mx = curr; OrderCode = Option1.GetATMPutRecent(-i); } } //매수주문 if (OrderCode != "") { Account1.OrderBuy(OrderCode, 1, Option1.GetAsk(OrderCode,5), 0); Step = 1; } } //매수후 if (Step == 1) { //평단가대비 2.5 상승시 청산 Account1.SetBalance(OrderCode,0) if (Account1.Balance.count > 0 && Account1.Balance.current >= Account1.Balance.avgUnitCost + 2.5) { Step = 2; Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Option1.GetBid(Account1.Balance.code,5),0) } } } //매수후 15시15분이후에 if ( Step == 1 && HHMMSS >= 151500) { Step = 2; //청산 Account1.SetBalance(OrderCode,0) if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Option1.GetBid(Account1.Balance.code,5),0) } } } } 즐거운 하루되세요