커뮤니티

c(1300 기준0.03 up0.04 dn0.02)

프로필 이미지
좌오비우오비
2026-09-04 08:24:10
132
글번호 233486
답변완료

주간장

데이트레이딩

call 매수 및 청산


1. 행사가 찾기

       13시 이후  0.03 체결이 발생한 행사가를 찾습니다. (중복되는 행사가 있다면 등가격에 가까운 행사가 선택합니다)


2. 가격움직임 확인 (체결가격 순서 중요)

        0.03보다 높은 0.04 이상의 체결이 한 번 이상 발생해야 합니다.

         그 이후

        0.03보다 낮은 0.02 이상의 체결이 한 번 이상 발생해야 합니다.

     

3. 진입

        진입횟수 1회(추가로 재진입하지 않음)

        0.02가격(매수1호가) 매수합니다.

        수량은 10개


4. 청산

      익절은 체결시점에 바로 주문( 매도1호가, 체결순서대로 적용)_ 매수체결전 매도 주문  나가지 않도록 주의

        0.33    0.64    0.90    1.33    1.64    1.90    2.33    2.64    2.90    3.33

      endofday 143000 미결제 모두 청산(매도1호가, 60초 이후부터는 매수1호가로 변경)


항상 고맙습니다.


답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-09-08 15:29:56

안녕하세요 예스스탁입니다. 계좌객체 Account1, 옵션객체 Option1입니다. var OrderCode = ""; var B,S=0,BID,BNUM,FV = 0,SID,SNUM; var Target = [0.33,0.64,0.90,1.33,1.64,1.90,2.33,2.64,2.90,3.33]; function Main_OnStart() { B = 0; Main.SetTimer(1,1000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds(); if (nEventID == 1) { if (HHMMSS >= 130000 && HHMMSS < 143000) { if (OrderCode == "") { var mindiff = NaN; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { var diff = Math.abs(Option1.GetExercisePrice(0,0)-Option1.GetExercisePrice(0,i)); if ((OrderCode == "" || (OrderCode != "" && diff < mindiff)) && Option1.GetCurrent(0, i) == 0.03 ) { OrderCode = Option1.GetATMCallRecent(i); mindiff = diff; } } if (OrderCode != "") { Main.MessageList(HHMMSS,"|0.03체결 종목:",OrderCode); B = 1; } } else { if (B == 1 && Option1.GetCurrent(OrderCode) == 0.04) { Main.MessageList(HHMMSS,"|0.04 체결발생:",OrderCode); B = 2; } if (B == 2 && Option1.GetCurrent(OrderCode) == 0.02) { Main.MessageList(HHMMSS,"|0.02 체결발생:",OrderCode); B = 3; S = 0; FV = 0; BID = Account1.OrderBuy(OrderCode, 10, 0.02,0); } //매수주문 후 if (B == 3) { //Target[0]~Target[9]까지 단계별 목표가 감시 if (Option1.GetCurrent(OrderCode) == Target[S]&& FV > S) { Main.MessageList(HHMMSS,"|목표가 도달:",Target[S]); //매도주문 Account1.OrderSell(OrderCode, 1,Option1.GetAsk(OrderCode, 1),0); //S 1씩 증가 S = S+1; } } } } if (HHMMSS >= 143000) { Main.KillTimer(1); var UF = Account1.GetTheNumberOfUnfills(); //OrderCode종목 미체결주문 모두 취소 if (UF > 0 && B == 3) { for (var i = UF - 1; i >= 0; i--) { Account1.SetUnfill(i); if (Account1.Unfill.count > 0 && Account1.Unfill.code == OrderCode) { Account1.OrderCancel(Account1.Unfill.orderNum); } } } //OrderCode종목 잔고수량 체크 Account1.SetBalance(OrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { //보유수량 전량 매도1호가로 매도주문 SID = Account1.OrderSell(OrderCode, Account1.Balance.count, Option1.GetAsk(OrderCode, 1),0); //60초 타이머 Main.SetTimer(2,60000); } } } if (nEventID == 2) { Main.KillTimer(2); //SNUM주문 미체결체크 Account1.SetUnfill(SNUM); //미체결 있으면 if (Account1.Unfill.count > 0) { //매수1호가로 정정 var OP = Option1.GetBid(OrderCode, 1) if (OP != Account1.Unfill.price) { Account1.OrderReplacePrice(SNUM,OP) } } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { BNUM = OrderResponse.orderNum; } if (OrderResponse.orderID == SID) { SNUM = OrderResponse.orderNum; } } function Main_OnNotifyFill(NotifyFill) { if (NotifyFill.orderNum == BNUM) { FV = FV+ NotifyFill.fillCount; } } 즐거운 하루되세요