커뮤니티
P(1300 기준0.03 UP0.04 DN0.02)
2026-09-04 08:27:28
119
글번호 233487
주간장
데이트레이딩
PUT 매수 및 청산
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:33:44
안녕하세요
예스스탁입니다.
계좌객체 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.uppersATM; i <= Option1.lowersATM; i++)
{
var diff = Math.abs(Option1.GetExercisePrice(1,0)-Option1.GetExercisePrice(1,i));
if ((OrderCode == "" || (OrderCode != "" && diff < mindiff)) && Option1.GetCurrent(1, i) == 0.03 )
{
OrderCode = Option1.GetATMPutRecent(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;
}
}
즐거운 하루되세요