32
1 YesTrader Pro 랭귀지 활용법 YesTrader Pro 랭귀지 활용법

YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

1

YesTrader Pro

랭귀지 활용법

YesTrader Pro

랭귀지 활용법

Page 2: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

2

예스트레이더 랭귀지

사용자의 매매 아이디어를 프로그래밍

T/S의 Easy Language 스타일

일반적인 프로그래밍보다 간단한 구조

주가 분석용 지표와 시스템 작성이 편리

타 종목 참조 가능

Page 3: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

3

특징

• 인터프리터 방식(즉시 적용)

• 전용에디터와 편리한 에러 검증

• 주석 처리(문장 내 설명)

• 다양한 함수제공(출력, 주문,사용자정의 등)

• 변수 선언 및 할당

• 편리한 이전 값 참조

• 위부터 아래로 순서대로 수행

• 과거부터 최근 바까지 반복해서 수행

Page 4: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

4

1.기본규칙

• 대소문자 구분 없슴

• 문장의 마침은 ‘;’로 사용

• 문장 중간의 줄바꿈은 가능(단어의 중간은 불가)

• 주석처리는 ‘#’을 사용

# 간단한 사용 예

Input : P1(5); ==> 외부변수

Plot1(ma(close, P1), “이평”, RED); ==> 지표출력

Page 5: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

5

2.변수

• 임의의 결과값을 반복사용 시 변수를 사용

• 외부입력변수(INPUT) 와 내부사용변수(VAR)

• 변수선언은 문장의 맨 윗부분에 위치

• 선언 시 변수의 기본 값을 반드시 설정

• 예약어를 변수의 이름으로 사용 불가

• 변수이름 중간에 띄어쓰기 불가

• 변수 명의 처음에 숫자 사용 불가

• 한 개의 선언 문에 다수의 변수 선언가능(‘,’ 로 구분)

• 의미 있는 이름으로 사용하는 것이 이해하기 쉬움

Page 6: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

6

3.제어 문 (IF)

1) IF 조건 THEN BEGIN 실행문 END

2) IF 조건 THEN { 실행문 }

ELSE {실행문}

3) IF 조건 THEN { 실행문 }

ELSE IF 조건 THEN { 실행문 }

ELSE { 실행문 }

Page 7: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

7

4. 제어 문 (FOR)

어떤 문장을 정해진 횟수 만큼 반복적으로 실행 (LOOP)

FOR 변수=초기값 TO 최종값 BEGIN

실행문

END;

TO 대신 DOWNTO를 사용할 수 있슴Ex )

value = 0;

for count = 0 to 9 begin

value = value + close[count];

end;

Page 8: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

8

5. 제어 문 (WHILE)

조건만족 시 까지 실행 문 을 반복적으로 처리 (LOOP)

WHILE 조건 BEGIN

실행 문

END;

♦ 조건이 만족 하는 경우가 없을 경우 무한히 실행Ex )

while count <= 9 begin

count = count +1;

value = value + close[count];

end;

Page 9: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

9

6.데이터

• 가격(OPEN,HIGH,LOW,CLOSE)

• 거래량(VOLUME, UPVOL,DOWNVOL)

• 호가잔량(BIDS,ASKS)

• 시간(STIME, TIME)

• 날자(SDATE, DATE)

• 체결건수(TICKS, UPTICKS, DOWNTICKS)

• 거래대금(MONEY)

• 기타(INDEX,BASEPRICE,OPENINTEREST)

Page 10: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

10

7.연산자

• 할당연산자(=)

• 산술연산자(+,-,*,/,%,^)

• 관계연산자(==,!=,>,<,>=,<=)

• 논리연산자(AND, OR, &&,||, !)

• 기타(:,;,[],(),”)

• 우선순위

괄호 > 산술 연산자 > 비교연산자, 관계 연산자 >

논리 연산자

Page 11: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

11

8.함수

• 수학함수

• 지표함수

• 출력함수

• 시스템함수

• 검색함수

• 사용자함수

• 기타함수

Page 12: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

12

9.분석함수

지표 또는 시스템 작성 시 자주 사용되는 사항을 함수로

제공

• 분,틱에서 일간참조(DAYOPEN,DAYHIGH..VOLUME)

• 누적합산(ACCUM,ACCUMN)

• 고저 값(HIGHEST,LOWEST)

• 돌파(CROSSUP, CROSSDOWN)

• 특정시간대 값(TIMEHIGH, TIMELOW..)

Page 13: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

13

10.지표함수

일반적으로 많이 알려지고 사용되는 기술적분석

지표에 대해서 함수로 제공

• 이동평균(MA,EMA), MACD,STOCHASTICKS,SAR

• 볼린저밴드, TRIX, ADX, SONAR, MFI, OBV

• SAR, LRS 등

Page 14: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

14

11.출력함수

1. 차트상에 시각적으로 출력할 경우 사용

• PLOT1(출력값, “명칭”, 컬러);

• 1개의 지표에 동시 9개까지 표현

2. 검색함수(FIND)

• 조건검색에서 사용

Page 15: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

15

12.시스템함수

주문제어함수

• 매수진입 : BUY(“명칭”, 가격, 수량, 조건);

• 매수청산 : EXITLONG(“명칭”, 가격, 조건);

• 매도진입 : SELL(“명칭”, 가격, 수량, 조건);

• 매도청산 : EXITSHORT(“명칭”, 가격, 조건);

조건 : ATMARKET,ATSTOP,ATLIMIT

포지션관련 추가예정

• 현재 포지션상태, 진입가격, 청산가격,

• 진입 후 경과 바 수, 누적손익,진입 및 청산 일시

Page 16: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

16

13.사용자함수

반복 사용되는 문장이나 수식을 사용자가 함수로 생성

재사용이 가능

• 제공되지 않는 지표

• 함수명에 값을 할당 해야 함

Ex ) 사용자함수 AAA

Input : P1(Numeric), P2(Numeric);

AAA = ema(C,P1)-ema(C,P2);

유의사항

입력 변수 선언(Input) 시 기본 값 이 아닌 입력 변수 타입을 입력

Page 17: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

17

1. Iff(비교함수)iff(조건, 참의경우값, 거짓의경우값)

이전 버전의 비교문을 지원하기 위한 함수

2. BarInterval(데이터 주기)

조회한 데이터의 주기를 반환 합니다.

분봉과 틱봉에서 사용 가능 합니다.

3. DataCompress(데이터 형태)

조회한 데이터의 형태를 반환 합니다.

0: 틱봉, 1: 초봉, 2: 분봉, 3: 일봉

4: 주봉, 5: 월봉, 6: 삼선전환도

7: P & F

14.기타함수(분석함수)

Page 18: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

18

15. 이전 값 참조

• 지표함수, 사용자 함수, 변수 에 사용 가능

• “[]” 를 사용하여 이전 참조

• [0] 는 현재 값을 의미 합니다.

즉 close와 close[0]는 동일

• close[1] 는 1바 전 종가

• Open[3]은 3바 전 시가

• 함수 이전 값 참조 : ma(close,5)[2];

Page 19: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

19

16. 기본구조

선언부,할당부,제어부,실행부의 4가지로 구분가능

Input : shortPeriod(12), longPeriod(26);

Var : value(0);

value = MACD(shortPeriod, longPeriod);

If CrossUP(value, 0) Then {

Enterlong();

Exitshort ();

}

If CrossDown(value, 0) Then {

Entershort ();

Exitlong();

}

Page 20: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

20

랭귀지 활용랭귀지 활용

Page 21: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

21

지표(이동평균)

10,20,60단순이동평균

Input : Period1(10), Period2(20), Period3(60);

Plot1(ma(C,Period1), "이동평균1“, RED);

Plot2(ma(C,Period2), "이동평균2“, BLUE);

Plot3(ma(C,Period3), "이동평균3“, BLACK);

Page 22: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

22

지표(심리도)

심리도 = n 일 중 상승일수 * 100 / n

input: PV(12);

var: sval(0);

sval=accumN(iff(C>C[1], 1, 0), PV) * 100 /PV;

plot1(sval, "심리도", RED);

Page 23: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

23

지표(심리도)

#제어 문 을 이용한 심리도 계산

input: PV(12);

var: sval(0), sumval(0), tmpval(0);

sumval = 0;

tmpval = 0;

for tmpval = 0 to PV-1 begin

if close[tmpval] > close[tmpval+1] then {

sumval = sumval+1;

}

End;

sval = sumval*100/PV;

plot1(sval, "심리도", RED);

Page 24: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

24

지표(이격도)계산식 :

이격도 = 가격 * 100 / 이동평균

var : disp(0);

disp= c/ma(c, 20)*100;

plot1(disp, "DIS", RED);

Page 25: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

25

시스템만들기

1. 아이디어

2. 지표로 그려보기

3. 가능성 확인

4. 시스템 작성

5. 성과확인

6. 신호확인(의도와 다른점이 없는지)

7. 시스템보완

8. 테스트

Page 26: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

26

아이디어(일간이평돌파)

아이디어

장 중에 일간 이동 평균선을 기준으로 돌파 시 매매

아이디어의 구체화

1. 15분 차트 사용

2. 3일 이평선 상향 돌파시 매수,매도청산

3. 3일 이평선 하향 돌파시 매도,매수청산

Page 27: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

27

지표 출력결과

Page 28: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

28

시스템 로직 작성input : P1(3);

var : sumV(0), maV(0);

var : Position(0), ii(0);

sumV = 0;

for ii = 1 to P1 {

sumV = sumV+DayClose(ii);

}

maV = sumV / P1;

If crossup(close, Mav1+0.2) Then {

ExitShort("AA");

Buy("AA");

Position = 1;

}

If crossdown(close, Mav1-0.2) Then {

ExitLong("AA");

Sell("AA");

Position = -1;

}

Page 29: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

29

시스템 로직 작성(2)

매수조건

5 이평 상승 저가가 20 이동평균선 아래,

종가 5,20 이평 돌파, 10시 이후에 당일 최고가 돌파 시

청산조건

매수 후에 종가가 5 이평 아래와, 이동평균선 하향돌파 시

Page 30: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

30

var : cond1(0), cond2(0), position(0);

Var1 = ma(close,5);

Var2 = ma(close,20);

Cond1 = Var1>var1[1] And low < Var2 And close >= Var1 And close >= Var2;

If stime>=100000 Then {

Var3 = TimeHigh(090000, 095000);

Cond2 = crossup(close,Var3);

}

else

Cond2 = 0;

If Cond1 == true Then {

buy();

position = 1;

}

If stime>=100000 And Cond2 == true Then {

buy();

position = 1;

}

If position == 1 And (crossdown(close,Var1) Or crossdown(Var1,Var2)) Then {

exitlong();

position = 0;

}

If stime == 151000 Then {

exitlong();

position = 0;

}

Page 31: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

31

신호의 처리 원칙

동시에 여러 가지 조건에 충족할 경우

1. 진입신호와 청산신호가 동시에 발생할 경우 진입신호가 우선

즉 청산신호는 무시된다.

2. 하지만 이전에 진입 상태라면 새로운 진입신호를 무시하고 청산

신호를 처리하게 된다.

3. 한 봉에서 매수와 매도는 동시 발생 할 수 있지만 매수와

매수청산 또는 매도와 매도청산이 동시에 발생할 수 없다.

(즉 한 방향에 대해서는 한가지만 처리된다)

Page 32: YesTrader Pro 랭귀지활용법files.thinkpool.com/files/mini/2008/07/26/altech...2008/07/26  · 14.기타함수(분석함수) 18 15. 이전값참조 • 지표함수, 사용자함수,

32

효율적인 로직 작성법

1. 반복되는 연산은 변수를 사용한다.

2. 무분별한 사용자 함수 사용 자제.

(생산성과 성능 사이의 고민)

3. 변동주기함수 사용

TimeOOOOEx(… ) => TimeOOOO 사용