온라인강좌 예스랭귀지 기초10 연산자 q 논리연산자...
Transcript of 온라인강좌 예스랭귀지 기초10 연산자 q 논리연산자...
목차
01 예스랭귀지예스랭귀지란?예스랭귀지 편집기
02 기본규칙
03 이전값 참조
04 연산자산술 연산자관계 연산자논리 연산자할당 연산자구두점괄호
05 변수내부변수외부변수
06 데이터데이터데이터 정보
07 제어문if ~ then 문if ~ then 문 범위 지정if ~ then ~ else ~ 문if ~ then ~ else if ~ 문For 문While 문
q 예스랭귀지란
○ 예스트레이더의 전용 편집기를 통해 제공되는 프로그래밍 언어.○ 사용자의 매매 아이디어를 프로그래밍 가능토록 개발된 언어○ 일반적인 프로그래밍보다 간단한 구조○ 주가 분석용 지표와 시스템 작성이 편리
○ 개방형 프로그래밍 언어○ 타종목 참조 가능○ 지표식, 시스템식, 종목검색식, 검색식, 강조식, 사용자함수식으로 구분
01 예스랭귀지
04 기본규칙
q 기본규칙
ü 모든 변수, 함수, 연산자 등은 대소문자를 구분하지 않음à 대소문자를 구분하지 않으므로 대소문자로 구분하여 변수를 만들어 선언을 하면
“이미 선언된 이름을 다시 선언하고 있습니다.~”라는 오류 메시지 발생합니다.
var : hv(0),HV(0);
hv = highest(H,10);
HV = highest(H,20);
ü 문장안에서 띄우쓰기, 줄바꿈 가능à 문장 안에서 띄어쓰기 및 줄바꿈이 가능하므로 사용자의 해석이 용이한 형태로 식을 자유롭게
작성 가능합니다.
단, 변수나 함수,예약어 사이를 띄어쓰기를 하거나 줄바꿈을 하면 하나의 변수나 함수,
예약어로 인식하지 못하므로 주의해야 합니다.
예1) var1 = ma ( C, 5);
예2) var1 =
ma(C, 5);
05 기본규칙
q 기본규칙
ü 주석 처리à식 작성시 수식에 사용자의 설명을 추가하면 해석이 더 용이합니다.
1, 한줄을 주석으로 처리
수식의 한줄을 주석처리 할 경우 // 이나 # 을 사용
// 이나 # 이후의 해당 줄 내용은 모두 주석으로 처리
2. 범위지정 주석 처리
문장의 중간의 특정내용이나 혹은 여러줄을 주석 처리할 경우는 /* ~ */
06 기본규칙
q 기본규칙
ü 문장의 마침 ; 입력à 한 문장의 작성이 완료되었다면 마지막에 ; 입력하여 완료를 표시해 주어야 합니다.
기본적으로 제어문의 뒤를 제외하고 모두 ; 을 입력합니다.
08 이전값 참조
q 이전값 참조
ü 현재를 기준으로 데이터나 계산식 함수등의 이전의 값을 이용하고자 할 경우에는대괄호([ ])를 이용하여 참조할 수 있습니다.
N봉 전의 값• [] 를 사용하여 이전 참조• [0] 는 현재 값을 의미 하고 생략 가능, C 와 C[0]은 같은 값• C[1] 는 1봉 전 종가 O[1]은 1봉 전 시가
ex) C[1] > O[1] à 한 봉 전이 양봉• Ma(c,5)[3]은 3봉 전 5이동평균
ex) ma(c,5) > ma(c,5)[1] and ma(c,5)[1] < ma(c,5)[2]à 이동평균 상승반전
09 연산자
q 산술 연산자
ü 산술연산자는 사칙연산을 할 수 있는 연산자를 지칭
q 관계 연산자
var1 = (H+L)/2;나누기/
var1 = (C-O)*2;곱하기*
var1 = C-O;빼기-
var1 = (C+O)/2;더하기+
사용법이름기호
1 >= 2 à False(거짓)크거나 같다>=
1 > 2 à False(거짓)보다 크다>
1 <= 2 à True(참)작거나 같아<=
1 < 2 à True(참)보다 작다<
1 != 2 à True(참)같지 않다!=
1 == 2 à False(거짓)같다==
사용법이름기호
ü 관계 연산자는 두 개의 값의 대소를 비교할 때 사용
True(참) 나 False(거짓)로 결과값이 리턴
10 연산자
q 논리 연산자
ü 논리값이란 주어진 조건에 대해 참과 거짓을 판단한 결과값
q 할당 연산자
둘 모두 참이면 참
둘 중 하나만 참이면 참
이름
1 > 2 or 3 > 4 à FalseAND
1 > 2 or 3 > 4 à TrueOR
사용법기호
Value = ma(c,5);대입한다=
사용법이름기호
ü 연산자 오른쪽의 값을 왼쪽에 할당함.
하나의 문장에 and와 or가 동시에 사용될 때, 사용자가 의도하는 대로 적절한 순서로 계산을
하기 위해서는 ( )소괄호를 이용하여 조건사이의 관계를 정리해 주어야 합니다,
예1) C > O and H == C or L == O à 사용자의 의도를 파악하기 모호함
예2) (C > O and H == C) or L == O à 양봉이고 윗 꼬리가 없는 봉이거나 아래꼬리가 없는 봉
(양봉유무 상관없음)예3) C > O and (H == C or L == O) à 양봉이고 윗 꼬리나 아래 꼬리가 없는 봉
관계연산자 중 같다를 나타내는 연산자인 == 와 혼동이 쉬우므로 사용 시 주의해야 합니다.
11 연산자
q 구두점
q 괄호
외부변수, 내부변수 선언 시작input : period(10);var : value(0);
콜론:
콤마
세미콜론
이름
함수내에 사용되는 매개변수를 구분ma(c,5)
,
문장의 마침value = (H+L)/2+abs(C-O);
;
사용법기호
함수의 매개변수 지정 à ATR(14)관계 연산자 간 계산순서를 지정 à (A and B) or C
소괄호( )
If ~ then 문의 범위를 지정if crossup(ma(c,5),ma(c,20)) then{
var1 = C;var2 = O;
}
중괄호{ }
배열의 크기 지정 à Array : value[10](0);이전 봉의 값을 참조하고자 할 때 사용 à C[5]
대괄호[ ]
사용법이름기호
12 변수
q 내부변수
ü 내부변수란?수치를 얻기 위한 계산식과 논리판단의 결과값을 저장하기 위한 저장장소à 내부변수에 계산식이나 논리식을 할당하여 사용하게 되면 똑같은 계산식이나 논리식을
반복해서 쓸 필요 없이 해당 내부변수의 이름으로 그 결과값을 가져와 사용할 수 있습니다.
1, 동일 계산식이나 논리식을 반복적으로 작성함으로 인해 발생할 수 있는 오류 감소
2. 편리성
3. 계산속도와 효율성 향상
ü 내부변수 종류à 내부변수의 종류에는 수치형 변수와 논리형 변수가 있습니다.
1, 수치형 변수 : 수치데이터를 할당 받음
2. 논리형 변수 : 논리판단의 결과값(True, False)이 할당 받음
falseTrue, False논리형 변수
수치(numeric)
할당되는 결과값
0수치형 변수
선언 시 기초설정값변수구분
13 변수
q 내부변수
ü 내부변수 선언문 작성à 내부변수를 사용하기 위해서는 랭귀지에 이 단어가 사용자가 만든 내부변수라는 것을
알려주는 변수 선언이 필요
var : 변수명1(0),변수명2(0);
1, var : 내부변수 선언의 시작 (var 대신 Vars, Variable, Variables 사용가능)
2. 콤마(,)를 사용하여 복수의 변수 선언 가능
3. 변수가 수치형인지 논리형인지 구분하여 기초설정 값을 입력
4. 변수의 첫 자리는 숫자가 올 수 없음
5. 예약어와 동일한 명칭을 갖는 변수는 사용할 수 없음
6. 변수의 선언은 해당 변수의 할당문 앞에 위치.
ü 내부변수 할당문 작성à 할당 연산자(=)를 기준으로 변수를 좌측에 할당할 계산식이나 논리값을 우측에 위치.
변수가 수치형은 논리형인지 구분하여 할당
14 변수
q 내부변수
ü 참조데이터의 값을 할당받는 내부변수 선언문 작성à 내부변수가 참조종목의 값을 이용하여 계산하거나 논리를 판단하여 도출되는 결과값을
할당받을 경우 몇번째 참조종목인지 표기하여 선언이 필요함
var : HLRange1(0,data2),HLRange2(0);
HLRange1 = data2((H-L));
HLRange2 = data2((H-L));
plot1(HLRange1[1],"참조종목의 한봉전값");
plot2(HLRange2[1],"주종목으로 한봉전일때 참조종목값");
※ 내부변수가 몇번째 참조종목인지 표기하지 않으면 주종목의 주기로 이전값을 할당
15 변수
q 외부변수
ü 외부변수란?지표등의 속성화면과 시스템 트레이딩 설정창에서 필요할 경우 값을 변경할 수 있는 변수.
내부변수와 같이 수치 계산이 논리판단의 결과값을 할당받는 변수는 아님
1, 손 싶게 변수값을 변경하여 식에 적용할 수 있고 최적화가 가능
2. 변수의 첫자리는 숫자가 올 수 없음
3. 예약어와 동일한 이름의 명칭은 사용할 수 없음
16 데이터
기준가
하락형 체결거래량
상승형 체결거래량
하락형 체결 건수
상승형 체결 건수
체결건수
봉의 끝 시간
봉의 시작시간
봉의 끝 날짜
봉의 시작날짜
의미
봉의 번호
매도 총잔량
매수 총잔량
미결제약정
거래대금
거래량
종가
저가
고가
시가
의미
I
OI
M
V
C
L
H
O
약어
Baseprice
Downvol
Upvol
Downticks
Upticks
Ticks
Time
STime
Date
SDate
변 수 명
Index
Asks
Bids
Openinterest
Money
Volume
Close
Low
High
Open
약어데이터명
17 데이터 정보
차트에 적용된 데이터의 주기를 리턴 합니다. Interval
호가단위PriceScale
호가단위의 화폐가치
만료일
결재월
결재년
일요일 :0, 월요일 :1, 화요일 :2, 수요일 :3, 목요일 :4, 금요일 :5, 토요일 :6
틱봉 :0, 초봉:1, 분봉:2, 일봉:3, 주봉:4, 월봉:5, 삼선전환도:6, P&F:7)
현재 시점의 Bar 번호를 반환.
상제 종목 구분값
KOSPI 장내 :1, KOSDAQ:2, 제 3 시장 :3, 선물 :4, 지수 :5, 옵션 :6, 종목옵션 :7
1계약의 1포인트의 금액
의미
Pointvalue
ExpirationDate
DeliveryMonth
DeliveryYear
DayofWeek
DataCompress
CurrentBar
CodeCategoryEx
CodeCategory
Bigpointvalue
변 수 명
18 제어문
q If ~ then 문
ü if ~ then 은 if와 then 사이의 조건을 판단해서 그 결과에 따라 실행문을수행하는 제어문입니다.
à 5일 종가이동평균이 20일 종가이동평균보다 클 때 매수
if MA(C,5) > MA(C,20) then
Buy;
à 5일 종가이동평균이 20일 종가이동평균보다 클 때 var1에 고가 할당
if MA(C,5) > MA(C,20) then
Var1 = H;
※ if문은 봉완성 시 최종 조건만족 유무를 판단하며 실행문을 수행
If 조건 then -------------à 조건문
실행문; -------------à 실행문
19 제어문
q If ~ then 문 범위지정
ü 기본적으로 if ~ then은 범위를 지정하지 않으면 바로 뒤의 하나의실행문만 수행한다.
à 조건문이 참(True) 일 경우, 여러 개의 실행문을 수행하고자 할 때는
{ ~ } 이나 Begin ~ end 로 if~then문이 효력을 미치는 범위를 지정해 주어야 합니다.
If CrossUp(MA(C,5) , MA(C,20)) then Begin
buy();
var1 = H;
end
If CrossUp(MA(C,5) , MA(C,20)) then {
buy();
var1 = H;
}
※ 아래와 같이 범위를 지정하지 않으면 var1에는 매봉의 고가가 저장됩니다.
If CrossUp(MA(C,5) , MA(C,20)) then
buy();
var1 = H;
20 제어문
q If ~ then ~ else ~ 문
ü 주어진 조건이 참(True)일 때 실행문과 조건이 거짓(false)일때실행문이 있을 경우 사용합니다.à if~ then ~else ~문은 두 가지 분리된 if~ then문으로 작성가능 하지만 더 간단하게 식을
작성할 수 있게 합니다.
양봉인 경우 매수를 하고 고가저장
양봉이 아닌 경우 매도를 하고 저가 저장
if C > O then
buy();
else
sell();
if C > O then
buy();
if C <= O then
sell();
if C > O then {
buy();
var1 = H;
}
else {
sell();
var2 = L;
}
if C > O then {
buy();
var1 = H;
}
if C <= O then {
sell();
var2 = L;
}
양봉인 경우 매수양봉이 아닌 경우 매도
21 제어문
q If ~ then ~ else if ~ then ~else ~ 문
ü if ~ then ~ else ~ 문의 변형으로 조건이 거짓(False)일 경우를 세분화 할 때사용됩니다.
if C > O then
var1 = 1;
else if C < O then
var1 = -1;
else
var1 = 0;
if C > O then
var1 = 1;
if C < O then
var1 = -1;
if C == O then
var1 = 0;
양봉일 경우 1값 저장음봉일 경우 -1값 저장십자봉일 경우 0값 저장
22 제어문
q For 문
ü 변수에 정의된 횟수동안 실행문을 반복적으로 수행할 경우 사용
For 수치형변수 = 최초값 to 최종값 Step 1{
반복할 실행문;
}
1, 변수에 정의된 값까지 오름차순(To) 혹은 내림차순(DownTo)으로 진행.
2. 최초값 < 최종값 일 경우 to
3. 최초값 > 최종값 일 경우 down
4. 기본이 1씩 증가이므로 Step 1 은 생략가능
5. 실행문이 누적식일 경우 재 계산시를 위해 초기화