커뮤니티

사용자 함수를 어떻게 만드나요

프로필 이미지
멋진감자
2009-09-04 11:59:26
711
글번호 24574
답변완료
항상 감사하고 수고 많으십니다. 갭보정 스토케스틱와 갭보정 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); 검증을 해보면 "함수가 값을 리턴하고 있지 않습니다. 라는 오류메세지가 발생됩니다. 자세히 설명 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

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); 검증을 해보면 "함수가 값을 리턴하고 있지 않습니다. 라는 오류메세지가 발생됩니다. 자세히 설명 부탁드립니다. 감사합니다.