커뮤니티

함수 문의 드립니다

프로필 이미지
십자성
2025-12-31 09:47:41
82
글번호 229491
답변완료

[시스템지표]

k200선물 등가 기준으로 위클리옵션가를 차트우측 여백에 표시하는 로직인데 미완성 입니다. 조언부탁드립니다

함수선언 오류----------

Option.GetATMCallStrike

Option.GetATMCallAsk

Option.GetATMPutAsk



----로직----

/*

프로그램: 시스템(System)

이름: 위클리_선물기준ATM_Code제거

설정: [옵션객체] -> 'KOSPI200 Weekly Option' 선택 필수

*/


# -----------------------------------------------------------

# 변수 선언

# -----------------------------------------------------------

var : 선물현재가(0), 목표행사가(0);

var : 시스템ATM행사가(0), 단계차이(0);

var : 콜인덱스(0), 풋인덱스(0);


# 가격 저장

var : 콜가격(0), 풋가격(0), 양매수합계(0);

var : 텍스트_헤더(0), 텍스트_콜(0), 텍스트_풋(0);

var : Y축위치(0), 간격(0);


# -----------------------------------------------------------

# 1. 선물 기준 ATM 행사가 계산

# -----------------------------------------------------------

선물현재가 = C;

목표행사가 = Round(선물현재가 / 2.5, 0) * 2.5;


# -----------------------------------------------------------

# 2. 옵션 객체와의 괴리 보정 (★중요 수정됨)

# -----------------------------------------------------------

# [수정] 아래 값이 목표행사가와 같으면 보정이 안됩니다.

# 반드시 시스템(지수) 기준 등가를 가져와야 차이를 계산할 수 있습니다.

시스템ATM행사가 = Option.GetATMCallStrike(0);


# 선물 목표행사가와 시스템 행사가의 차이를 계산

단계차이 = (목표행사가 - 시스템ATM행사가) / 2.5;


# 콜은 정방향, 풋은 역방향 보정

콜인덱스 = 단계차이;

풋인덱스 = -단계차이;


# -----------------------------------------------------------

# 3. 데이터 수신 (호가 평균 방식 - 100% 호환)

# -----------------------------------------------------------


# 콜가격 계산 (매도+매수)/2

if Option.GetATMCallAsk(콜인덱스) > 0 Then

콜가격 = (Option.GetATMCallAsk(콜인덱스) + Option.GetATMCallBid(콜인덱스)) / 2;

Else

콜가격 = 0;


# 풋가격 계산 (매도+매수)/2

if Option.GetATMPutAsk(풋인덱스) > 0 Then

풋가격 = (Option.GetATMPutAsk(풋인덱스) + Option.GetATMPutBid(풋인덱스)) / 2;

Else

풋가격 = 0;


양매수합계 = 콜가격 + 풋가격;


# -----------------------------------------------------------

# 4. 화면 출력 (코드 표시 제거됨)

# -----------------------------------------------------------

간격 = PriceScale * 20;


if LastBarOnChart == 1 then {

Y축위치 = C;

# 텍스트 객체 생성 (최초 1회)

if 텍스트_헤더 == 0 then {

텍스트_헤더 = Text_New(NextBarSdate, NextBarStime, Y축위치, "");

Text_SetStyle(텍스트_헤더, 0, 1); Text_SetSize(텍스트_헤더, 12); Text_SetBold(텍스트_헤더, 1);

Text_SetColor(텍스트_헤더, RGB(255,255,255));


텍스트_콜 = Text_New(NextBarSdate, NextBarStime, Y축위치, "");

Text_SetStyle(텍스트_콜, 0, 1); Text_SetSize(텍스트_콜, 12); Text_SetBold(텍스트_콜, 1);

Text_SetColor(텍스트_콜, RGB(255,80,80));


텍스트_풋 = Text_New(NextBarSdate, NextBarStime, Y축위치, "");

Text_SetStyle(텍스트_풋, 0, 1); Text_SetSize(텍스트_풋, 12); Text_SetBold(텍스트_풋, 1);

Text_SetColor(텍스트_풋, RGB(100,100,255));

}


# 위치 업데이트

Text_SetLocation(텍스트_헤더, NextBarSdate, NextBarStime, Y축위치 + 간격);

Text_SetLocation(텍스트_콜, NextBarSdate, NextBarStime, Y축위치);

Text_SetLocation(텍스트_풋, NextBarSdate, NextBarStime, Y축위치 - 간격);


# 헤더 업데이트

Text_SetString(

텍스트_헤더,

"■ 선물기준 등가 [" + NumToStr(목표행사가, 1) + "]\n 합계 : " + NumToStr(양매수합계, 2));


# --- 콜 가격 표시 (코드 제거) ---

if 콜가격 > 0 then {

Text_SetString(텍스트_콜, "▲ Call : " + NumToStr(콜가격, 2));

} else {

# 데이터가 없을 때 깔끔하게 '대기중'만 표시

Text_SetString(텍스트_콜, "▲ Call : 대기중");

}


# --- 풋 가격 표시 (코드 제거) ---

if 풋가격 > 0 then {

Text_SetString(텍스트_풋, "▼ Put : " + NumToStr(풋가격, 2));

} else {

Text_SetString(텍스트_풋, "▼ Put : 대기중");

}

}

시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-02 12:39:36

안녕하세요 예스스탁입니다. Option.GetATMCallStrike Option.GetATMCallAsk Option.GetATMPutAsk 위 함수는 예스스팟의 옵션객체에서 제공되는 함수입니다.
예스랭귀지에서 관련 데이터가 제공되지 않아 올리신 내용 구현이 가능하지 않습니다.
도움을 드리지 못해 죄송합니다. 새해 복 많이 받으세요