디버깅이란 원래 프로그램의 오류를 찾아내어 수정하는 것을 말합니다.
랭귀지 편집기에서 디버깅이란 수식에서 특정값 등을 출력하여
의도한 내용으로 값이 정확한지 계산상 오류를 찾아 바로 잡는 기능이라고 보면 됩니다.
수식을 작성하고 적용하게 되면 작성자의 의도와는 다르게 결과가 발생하는 경우가 발생하기도 합니다.
지표식의 경우에는 사용되는 변수나 함수, 계산식 등을 하나씩 지표로 출력하면서 잘못된 점을 찾아 수정할 수도 있지만 전략식의 경우에는 지표출력함수가 같이 사용될 수 없고 반대로 지표식에는 포지션함수 등이 사용될 수 없으므로 지표식으로 수식의 오류를 찾는 것에 어려움이 있습니다.
이렇게 수식이 의도와는 다른 결과를 보일 때 수식 내에서 사용하는 값을
디버깅창으로 출력해서 확인 작업을 할 수 있는 것을 디버깅이고
Messagelog함수를 이용하면 값을 디버깅창으로 출력해 볼 수 있습니다.
함수 | MessageLog("Expression", 출력대상) |
매개변수 | ※ Expression : 출력대상의 이름과 타입
출력대상이 수치라면 → 이름 %.f , 이름 %.2f
출력대상이 논리값이나 문자열이라면 → 이름 %s
이름은 생략가능.
※ 출력대상 : 수치, 논리값, 문자열 |
MessageLog("value1 %.f value2 %.2f cond %s", value1, value2, condition1);
// 출력대상 중 첫번째는 이름은 value1이고 정수만 출력
// 출력대상 중 두번째는 이름은 value2이고 정수만 출력
// 출력대상 중 세번째는 이름은 cond이고 condntion1만족여부에 따라 ture 혹은 flase 출력
※ 메시지로그함수의 첫번째 매개변수는 출력대상의 이름과 타입을 지정하는 부분입니다.
" " 안에 출력 대상의 갯수만큼 이름과 타입을 설정을 해야 하며
출력대상의 이름은 생략이 가능합니다.
※ 출력대상 타입이 숫자의 경우 소숫점 이하의 자리수도 지정할 수 있습니다.
%.2f → 소숫점 2자리까지 출력
※ 출력대상은 10개인데 이름과 타입을 6개만 지정하면 출력대상으로 지정한 것 중
좌측에서 6개만 출력되게 됩니다.
아래 수식은 [시스템식 작성하기]에서 작성한 시스템 식에
MessageLog로 몇 개의 값을 디버깅창에 출력하게 내용을 추가한 식입니다.
//외부변수 선언
input : RSIPeriod(14);
input : FKLength(5);
input : smoothK(5);
input : smoothD(3);
//내부변수 선언
var : R(0),HV(0),LV(0);
var : FK(0),SK(0),SD(0);
//1. RSI 계산(RSI값을 리턴하는 함수가 있으므로 함수를 이용).
//RSI의 기간은 외부변수 처리해서 속성에서 변경가능하게 함.
R = RSI(RSIPeriod);
//2. RSI의 일정기간 최고값/최저값 계산
//기간은 기간은 외부변수 처리해서 속성에서 변경가능하게 함.
Hv = highest(R,FKLength);
Lv = Lowest(R,FKLength);
//3. RSI FastK값 계산
//(RSI- 일정기간RSI최저가)/(일정기간RSI최고가 - 일정기간RSI최저가)*100
FK = (R-LV)/(HV-LV)*100;
//4. RSI SlowK 계산 (FastK의 일정기간 이동평균)
SK = ma(FK, smoothK);
//5. RSI SlowD 계산 (SlowK의 일정기간 이동평균)
SD = ma(SK, smoothD);
//6. SlowK가 SlowD를 상향돌파하면 매수
if CrossUp(SK,SD) Then
Buy();
//7. Slowk가 SLowD를 하향이탈하면 매도
if CrossDown(SK,SD) Then
Sell();
MessageLog("RSI SlowK %.2f RSI SlowD %.2f Crossup %s",SK, SD, CrossUp(SK,SD));
//SK변수값을 RSI SlowK라는 이름으로 소숫점 2자리가지 출력
//SD변수값을 RSI SlowD라는 이름으로 소숫점 2자리가지 출력
//CrossUp(SK,SD)조건 만족여부를 Crossup이라는 이름으로 출력
C
복사
뒤로가기는 좌측상단의 목차 버튼을 눌러주세요.