예스스탁
예스스탁 답변
2009-09-04 14:45:37
안녕하세요
예스스탁입니다.
사용자함수는 일반식 작성과 유사합니다.
다만 2가지를 유의하셔야 합니다.
우선 사용자함수의 파일명은 수식에서 사용될 함수의 이름이므로
처음에 이름을 작성하실때 기억했다가 수익에서 최종값을 할당하게 해주셔야 합니다.
input : Period(Numeric), Period1(Numeric);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
var : stoLval(0), stoHval(0), afastK(0);
if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
gap = Open-Close[1]; // 일간갭
sumGap = sumGap+gap; // 일간갭 누적
}
GO = O - sumGap;// 갭보정 시가
GH = H - sumGap;// 갭보정 고가
GL = L - sumGap;// 갭보정 저가
GC = C - sumGap; // 갭보정 종가
stoLval = lowest(GL,Period);
stoHval = highest(GH,Period);
afastK = (GC-stoLval)/(stoHval-stoLval)*100;
aslowK = ema(afastK, Period1);
aslowk라는 이름으로 만드실 의도시면 aslowk라는 이름은 사용자함수명으로 하시고
수식에서 선언하시면 안됩니다.
input변수는 시스템이나 지표등 다른식에서 값을 자유롭게 입력해야 하므로
Numeric과 같이 타입만 선언해 주시면 됩니다.
답변으로 해당내용을 설명드리기는 어렵습니다.
HOME > 예스트레이더 > 수식 작성법 > YesLanguage 수식작성법 > 사용자함수 만들기
위 경로에 사용자함수 작성법이 있습니다.
참고하시기 바랍니다.
따로 만든 사용자함수를 첨부파일로 올려드립니다.
즐거운 하루되세요
> 멋진감자 님이 쓴 글입니다.
> 제목 : 사용자 함수를 어떻게 만드나요
> 항상 감사하고 수고 많으십니다.
갭보정 스토케스틱와 갭보정 macd를 사용자 함수로 만들어서 사용하고 싶은데
방법을 잘 모르겠습니다.
input의 외부변수값에 Period(75)을 Period(Numeric)으로만 바꾸어서
저장하기만 하면 되는 것인지.....
그리고 시스템식에 적용시 Period(Numeric)에 숫자가 들어가야 하므로
input : Period(75)라고 선언을 해주어야 하는지
초보라서 잘모르겠습니다.
사용자함수의 사용법을 알고 싶습니다.
------------------------------------------------------------------------
input : Period(75), Period1(35), Period2(35);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
var : stoLval(0), stoHval(0), fastK(0), slowK(0), slowD(0);
if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
gap = Open-Close[1]; // 일간갭
sumGap = sumGap+gap; // 일간갭 누적
}
GO = O - sumGap;// 갭보정 시가
GH = H - sumGap;// 갭보정 고가
GL = L - sumGap;// 갭보정 저가
GC = C - sumGap; // 갭보정 종가
stoLval = lowest(GL,Period);
stoHval = highest(GH,Period);
fastK = (GC-stoLval)/(stoHval-stoLval)*100;
slowK = ema(fastK, Period1);
slowD = ema(slowK, Period2);
-----------------------------------------------------------------------------
사용자 함수에 다음과 같이 작성하고 검증해 보니 오류가 발생이 됩니다.
input : Period(Numeric), Period1(Numeric), Period2(Numeric);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
var : stoLval(0), stoHval(0), afastK(0), aslowK(0), aslowD(0);
if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
gap = Open-Close[1]; // 일간갭
sumGap = sumGap+gap; // 일간갭 누적
}
GO = O - sumGap;// 갭보정 시가
GH = H - sumGap;// 갭보정 고가
GL = L - sumGap;// 갭보정 저가
GC = C - sumGap; // 갭보정 종가
stoLval = lowest(GL,Period);
stoHval = highest(GH,Period);
afastK = (GC-stoLval)/(stoHval-stoLval)*100;
aslowK = ema(afastK, Period1);
aslowD = ema(aslowK, Period2);
검증을 해보면 "함수가 값을 리턴하고 있지 않습니다. 라는 오류메세지가 발생됩니다.
자세히 설명 부탁드립니다.
감사합니다.