키움증권 수식 관리자 사용 함수
1. 내장 함수 사용에 관한 기본 사항
≫ 기본 규칙
① | 사칙연산자간 우선순위 사칙연산자간 우선순위는 '*''/'이 '+' '-'에 우선하여 연산을 실행합니다. |
② | 소괄호()를 통한 우선순위 변수를 지정할 경우에 사용하기도 하며, 연산자간의 계산상의 우선순위를 결정할 때에도 사용합니다. ex) RSI(14), (High+Low)/2 |
③ | 논리연산자 And와 Or의 중복 조건문 내에서 And와 Or를 중복할 경우 작성자의 의도대로 계산하여, 참과 거짓 여부를 판단하여야 합니다. 이러한 경우에는 소괄호 ()로서 각 조건사이의 관계를 명확히 하여야 합니다. 조건1 And 조건2 or 조건 3은 다음과 같이 2가지로 해석될 수 있으므로, ⓐ (조건1 And 조건2) or 조건 3 ⓑ 조건1 And (조건2 or 조건 3) ⓐ 혹은 ⓑ 둘 중 하나로 명확하게 작성하셔야 합니다. |
④ | 문자와 소문자의 구분 대소문자의 구분이 없습니다. 따라서 RSI, rSI, RSi, RsI, Rsi 등이 모두 동일한 함수입니다. |
⑤ | 공백 및 줄의 변경 함수식 작성시 공백 및 줄에 의한 영향 없습니다. 예를 들자면, RSI(14)와 RSI( 14 )는 동일한 수식이라고 인식됩니다. |
⑥ | 변수에 대한 제약 변수는 영문뿐 아니라 한글 변수도 가능하며, 글자 수에도 제한이 없습니다. ex) ADX(Period) , ADX(적용기간) |
≫ 유의 사항
① | 함수명과 변수명에 특수문자 사용금지 사용자 정의 함수명에 특수 문자 ' * , # , _ , + , " . " '등의 모든 특수 문자를 금합니다. ex) " +DI " 라고 함수명을 정의하여 사용할 수 없습니다. ex) " *Period " 라고 변수명을 정의하여 사용할 수 없습니다. |
② | 함수명/변수명 앞에 숫자 사용 금지 사용자 정의 함수명을 정하는 경우 함수명/변수명 앞에 숫자 사용을 금합니다. ex) '1MAO' 라고 함수 명 앞에 숫자를 기입하여 함수명을 정의하면 안됩니다. ex) '3기간' 라고 변수 명 앞에 숫자를 사용하여 변수명을 사용할 수 없습니다. |
③ | 기본 함수명/지표명/조건검색명/강세약세명/매매전략명과 사용자 정의 명과 동일 이름 사용 금지 기본 함수명(내장함수 포함)의 하나를 선택하여 사용자 정의 함수명 및 변수명으로 사용할 수 없습니다. ex) 사용자 정의 함수명을 기본함수에 있는 ATR 이라는 이름으로 정의할 수 없습니다. 사용자 정의 지표명을 기본지표에 있는 MACD라고 사용할 수 없으므로, myMACD 또는 MACD변형 등 사용자 임의대로 변형하여 사용하여야 합니다.
|
2. 데이터 함수
기술적 분석에 쓰이는 기본적인 시세 데이터를 의미합니다.
함수 | 영문/한글표기 | 과거표시 | 예제 | 예제설명 |
거래대금 | account | account(N) | account + account(5) | 현재봉의 거래금액과 5봉 전의 거래금액의 합 |
거래대금 | 거래대금(N) | 거래대금 + 거래대금(5) | ||
거래량 | Volume | V(N) | V + V(1) | 현재봉의 거래량과 1봉 전(직전봉)의 거래량의 합 |
거래량 | 거래량(N) | 거래량 + 거래량(1) | ||
시가 | Open, O | O(N) | O - O(1) | 현재봉의 시가와 1봉 전(직전봉)의 시가와의 차 |
시가 | 시가(N) | 시가 - 시가(1) | ||
고가 | High, H | H(N) | H - H(2) | 현재봉의 고가와 2봉 전의 고가의 차 |
고가 | 고가(N) | 고가 - 고가(2) | ||
저가 | Low, L | L(N) | L - L(2) | 현재봉의 저가와 2봉 전의 저가의 차 |
저가 | 저가(N) | 저가 - 저가(2) | ||
종가 | Close, C | C(N) | C - C(1) | 현재봉의 종가와 1봉 전(직전봉)의 종가와의 차 |
종가 | 종가(N) | 종가 - 종가(1) | ||
미결제약정 | OI | OI(N) | OI + OI(2) | 현재봉의 미결제약정과 2봉 전의 미결제 약정의 합 |
미결제약정 | 미결제약정(N) | 미결제약정+미결제약정(2) | ||
날짜 | date | Date(N) | Date | 봉의 끝 날짜를 의미함 (20030809" 형태의 값) |
일자 | 일자(N) | 일자 | ||
시간 | time | Time(N) | time | 봉의 끝 시간을 의미함 ("102500" 형태의 값) |
시간 | 시간(N) | 시간 |
3. 산술 및 관계 연산자
데이터 함수에 산술 및 관계 연산자를 이용한 수식을 만들어 사용할 수 있습니다.
이를 통해 과거 및 현재 시세 데이터의 관계 및 논리를 판단할 수 있습니다.
함수명 | 의미 | 예제 | 예제 설명 |
+ | 더하기 | H + L | 금일 고가와 저가의 합 |
- | 빼기 | H(1) - L(1) | 1봉 전의 고가와 1봉 전의 저가의 차 |
* | 곱하기 | V * 100 | 금일 거래량에 100을 곱한 값 |
/ | 나누기 | C(1) / C | 1봉 전의 종가를 금일의 종가로 나눈 값 |
% | 나머지 | 10 % 3 | 나눈 값의 나머지 |
= | 대입 | A = H - L | A에 고가와 저가의 차를 대입 |
== | 논리적으로 같음 | C == O | 종가와 시가가 같다 |
!= | 논리적으로 다름 | C != O | 종가와 시가가 다르다 |
< | 우측이 큼 | C < O | 종가가 시가보다 작다 |
<= | 우측이 크거나 같음 | C <= O | 종가가 시가보다 작거나 같다 |
> | 좌측이 큼 | C > O | 종가가 시가보다 크다 |
>= | 좌측이 크거나 같음 | C >= O | 종가가 시가보다 크거나 같다 |
!, not | 부정 | not A | A가 아니다 |
&&, and | 논리곱 | C>O && C(1)>O(1) | 현재 봉의 종가가 시가보다 크고, 직전 봉의 종가가 시가가 크다 |
||, or | 논리합 | C>O || C(1)>O(1) | 현재 봉의 종가가 시가보다 크거나, 직전 봉의 종가가 시가보다 크다 |
If, 만일 | 조건문 | if(C>O, 1, 0) | 현재 봉의 종가가 시가보다 크면 1, 크지 않으면 0 이다 |
≫ 데이터와 산술 및 관계 연산자를 이용한 예제
① | 양봉 : 종가가 시가보다 크거나 같은 봉 |
② | 중간가격 : 고가와 저가와의 차의 중간값 |
③ | ROC |
4. 통계함수
일정 범위의 데이터를 통계적으로 분석할 때 사용하는 함수로서, 기술적지표의 특성으로 인해 가장 많이 사용되는 함수입니다.
A - 값, N & M - 기간
함수명 | 영문/한글표기 | 과거(M봉 전 값) | 의미 | 예제 | |
단순평균 | Avg(A,N) | Avg(A,N,M) | A의 N일간의 단순평균 | avg(C,10) | 종가의 10일간 단순평균 |
평균(A,N) | 평균(A,N,M) | 평균(종가,10) | |||
가중평균 | wavg(A,N) | wavg(A,N,M) | A의 N일간의 가중평균 | wavg(H,10) | 고가의 10일간 가중평균 |
가중평균(A,N) | 가중평균(A,N,M) | 가중평균(고가,10) | |||
지수평균 | eavg(A,N) | eavg(A,N,M) | A의 N일간의 단순평균 | eavg(O,10) | 시가의 10일간 단순평균 |
지수평균(A,N) | 지수평균(A,N,M) | 단순평균(시가,10) | |||
이평 | MA(A,N,D이평) | MA(A,N,D이평,M) | A의 N일간의 D이평 | MA(C,10,단순) | 종가의 10일 단순이평 |
MA(종가,5,지수) | 종가의 5일 지수이평 |
||||
표준편차 | stdev(A,N) | stdev(A,N,M) | A의 N일간의 표준편차 | stdev(C,10) | 종가의 10일간 표준편차 |
표준편차(A,N) | 표준편차(A,N,M) | 표준편차(종가,10) | |||
최고값 | highest(A,N) | highest(A,N,M) | A의 N일간의 최고값 | highest(C,10) | 10일 간의 종가 중 최고가 |
최고값(A,N) | 최고값(A,N,M) | 최고값(C,10) | |||
최저값 | lowest(A,N) | lowest(A,N,M) | A의 N일간의 최저값 | lowest(C,10) | 10일 간의 종가 중 최저가 |
최저값(A,N) | 최저값(A,N,M) | 최저값(C,10) | |||
누적합계 | sum(A) | - | A의 누적합계 | sum(V) | 거래량의 누적합계 |
sum(A,N) | sum(A,N,M) | A의 N일간의 누적합계 | sum(V,10) | 10일간의 거래량의 누적합계 |
|
합계(A,N) | 합계(A,N,M) | 합계(거래량,10) |
≫ 통계함수를 이용한 함수식 및 지표식 예제
① | MACD : 단기단순이평 - 장기단순이평 |
② | 일정기간 동안의 최고가(고가 중)와 최저가(저가 중)의 차 |
③ | William"s R (%R) 산식 |
5. 수학함수
로그 및 삼각함수 등의 수학적인 계산에 이용되는 함수입니다.
함수명 | 영문/한글표기 | 의미 | 예제 | 설명 |
최대값 | Max(A,B) | A와 B중 큰 값을 선택 | max(C,C(1)) | 종가와 전일종가의 최대값 |
최대값(A,B) | 최대값(종가,종가(1)) | |||
최소값 | Min(A,B) | A와 B중 작은 값을 선택 | min(C,C(1)) | 종가와 전일종가의 최소값 |
최소값(A,B) | 최소값(종가,종가(1)) | |||
누승 | a^b | A의 누승 | C^2 | 종가의 제곱(누승2)을 구한다 |
pow(a,b) | pow(C,2) | |||
누승(밑,단순) | 누승(C,2) | |||
로그 | log(A) | A의 로그 | log(100) | 로그 100의 값 |
로그(A) | 로그(100) | |||
상용로그 | log10(A) | A의 상용로그 | log10(100) | 상용로그 100의 값 |
상용로그(A) | 상용로그(100) | |||
절대값 | abs(A) | A의 절대값 | abs(C-O) | 종가와 시가 차의 절대값 |
절대값(A) | 절대값(C-O) | |||
제곱근 | sqrt(A) | A의 제곱근 | sqrt(C) | 종가의 제곱근 |
제곱근(A) | 제곱근(종가) | |||
사인 | sin(A) | A의 사인 값 | sin(H) | 고가의 사인 값 |
사인(A) | 사인(H) | |||
코사인 | cos(A) | A의 코사인 값 | cos(H) | 고가의 코사인 값 |
코사인(A) | 코사인(H) | |||
탄젠트 | tan(A) | A의 탄젠트 값 | tan(H) | 고가의 탄젠트 값 |
탄젠트(A) | 탄젠트(H) | |||
아크사인 | asin(A) | A의 아크사인 값 | asin(H) | 고가의 아크사인 값 |
아크사인(A) | 아크사인(H) | |||
아크코사인 | acos(A) | A의 아크코사인 값 | acos(H) | 고가의 아크코사인 값 |
아크코사인(A) | 아크코사인(H) | |||
아크탄젠트 | atan(A) | A의 아크탄젠트 값 | atan(H) | 고가의 아크탄젠트 값 |
아크탄젠트(A) | 아크탄젠트(H) |
≫ 수학함수 및 통계함수를 이용한 함수식 및 지표식 예제
① | 일정기간 동안 최고가(종가 중)와 최저가(종가 중)를 뺀 값의 절대값 |
② | 일정기간 동안 금일종가와 전일종가를 뺀 값의 누적합산 값 |
③ | VHF 산식 : 일정기간 동안 최고가에서 최저가를 뺀 값의 절대값/일정기간 동안의 가격변화분(금일종가-전일종가)을 누적 합산한 수치 |
6. 기타함수
상향돌파와 하향돌파는 매매전략 작성에 주로 사용되는 함수입니다.
함수명 | 사용법(영문/한글) | 의미 | 예제 | |
상향돌파 | crossup(A,B) | A가 B를 상향돌파 | crossup(C,avg(C,5)) | 상향돌파(종가,평균(종가,5)) |
상향돌파(A,B) | 종가가 5일 종가 단순이평을 상향 돌파 | |||
하향돌파 | crossdown(A,B) | A가 B를 하향돌파 | crossdown(C,avg(C,5)) | 하향돌파(종가,평균(종가,5)) |
하향돌파(A,B) | 종가가 5일 종가 단순이평을 하향 돌파 | |||
만약 | If(condition,A,B) | 만일 condition을 만족하면 A를, 만족하지 않으면 B | If(C==C(1),1,0) | 만일(종가==종가(1),1,0) |
만일(condition,A,B) | 만일 현재 종가와 1봉전 종가가 같으면, 1, 아니면 0 | |||
이동 | Shift(A,N) | 차트 상에서 A를 N(양/음)만큼 우(좌)측 으로 이동 | shift(C,10) | |
종가를 10만큼 우측으로 이동 | ||||
Countsince | CountSince (condition,data) |
condition이 만족된 이후 data의 값이 참인 횟수 | CountSince(date!=date(1),CrossUp(Trix(12),0)) | |
일자가 변경된 후 Trix가 0기준선을 상향돌파한 횟수 | ||||
BarsSince | BarsSince (condition) |
condition이 만족된 이후 지나간 봉 갯수 | BarsSince(CrossUp(Tri x(12),0)) | |
Trix가 0기준선을 상향돌파한 이후 지난 봉 갯수 | ||||
HighestSince | HighestSince (condition, data) |
condition이 만족된 이후 data의 최고값 | HighestSince(CrossUp(Trix(12),0), c) | |
Trix가 0기준선을 상향돌파한 이후 c의 최고가 | ||||
LowestSince | LowestSince (condition, data) |
condition이 만족된 이후 data의 최저값 | LowestSince(CrossDown(Trix(12),0), c) | |
Trix가 0기준선을 하향돌파한 이후 c의 최저가 | ||||
ValueWhen | ValueWhen (nth,condition,data) |
condition이 nth번째 만족된 시점의 data값 | ValueWhen(1, CrossUp(Trix(12),0), c) | |
Trix가 0기준선을 상향 돌파한 시점의 종 가 | ||||
DayOpen | DayOpen() | 장 시작가 | Dayopen() | |
장 시작가 | ||||
DayHigh | DayHigh() | 장중 고가 | DayHigh()+ Dayopen() | |
장중 고가와 장 시가의 합 | ||||
DayLow | DayLow() | 장중 저가 | DayLow() + DayHigh() | |
장중 저가와 장중 고가의 합 | ||||
PredayOpen | PredayOpen() | 전일 시가 | PredayOpen()+DayOpen() | |
전일 시가와 장 시작가의 합 | ||||
PredayHigh | PredayHigh() | 전일 고가 | PredayHigh() | |
전일 고가 | ||||
PredayLow | PredayLow() | 전일 저가 | (PredayLow() + PredayHigh())/2 | |
전일 저가와 전일 고가의 합을 2로 나눈값 | ||||
PredayClose | PredayClose() | 전일 종가 | PredayClose() | |
전일 종가 |
≫ 기타 함수를 이용한 매매전략 /조건검색 함수식 예제
① | 가격 이동평균의 크로스를 이용한 전략 전략 로직 : 골든크로스 시 매수, 데드크로스 시 매도 검색 로직 : 골든크로스 시 매수, 데드크로스 시 매도 |
② | MACD와 시그널과의 크로스를 이용한 전략 전략 로직 : MACD가 시그널을 상향돌파 시 매수, MACD가 시그널을 하향돌파 시 매도 |