커뮤니티

사용자함수에서 리턴타입

프로필 이미지
여유로운투자
2024-07-11 16:23:14
649
글번호 181405
답변완료
질문1 사용자함수를만들려고하는데 어레이형태가리턴가능한지궁금합니다 가능하다면 예제가 궁금합니다 질문2 사용자함수를 만드려는데 numericserise 형태로 인풋을 받도록 구현한다면 예를들어 input : aa(뉴메릭시리즈) 함수이름이 kk라치면 kk(asks+bids,n) 이렇게 호출한다면 kk함수안에서 (asks+bids)[n] 이런식으로 n 이라는 변수로 ask와 bids의 히스토리컬데이터 그니깐 이전 봉의 데이터를 접근가능한가요? 질문이 좀 중구난방인데 인풋에 한 데이터를넣는게아니라 인풋으로 수식을 넣어주면 그수식값이 히스토리컬하게접근되는지궁금합니다
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-07-12 10:23:17

안녕하세요 예스스탁입니다. 1 배열로 리턴받으시려면 NumericArrayRef 타입으로 함수를 만드셔야 합니다. NumericArrayRef로 만드시면 함수의 매개변수로 배열변수를 지정하면 해당 변수에 값이 저장되서 다시 리턴됩니다. 아래 내용 참고하시기 바랍니다. 아래 함수는 이평골드/데드 기준으로 골드구간 최고가와 데드구간 최저가를 계산해서 지정한 배열변수에 저장해서 리턴하게 NumericArrayRef타입으로 작성된 함수입니다. 함수명은 kk입니다. #p1,p2이평기간 #upv,dnv는 값 리턴받을 배열 매개변수 input : P1(Numeric),P2(Numeric),upv[a](NumericArrayRef),dnv[b](NumericArrayRef); var : T(0),cnt(0); var1 = ma(C,P1); Var2 = ma(C,P2); if CrossUp(var1,var2) Then { T = 1; For cnt = 10 to 1 { upv[cnt] = upv[cnt-1]; } upv[0] = c; } if CrossDown(var1,var2) Then { T = -1; For cnt = 10 to 1 { dnv[cnt] = dnv[cnt-1]; } dnv[0] = c; } if T == 1 Then { if h > upv[0] Then upv[0] = h; } if T == -1 Then { if l < dnv[0] Then dnv[0] = l; } kk = 1; 위 내용을 사용자함수로 만든 우에 아래 내용 지표식으로 작성해서 값 확인해 보시기 바랍니니다. Array : HH[10](0),LL[10](0); //함수에 3번째, 4번째 매개변수에 배열변수 지정 var1= kk(5,10,HH,LL); Plot1(HH[0]); Plot2(LL[0]); 2 예 가능합니다. input : value(NumericSeries),n(Numeric); kk = value[n]; 위와 같이 사용자 함수 만드신 후에 아래 지표식 적용해 보시면 값 리턴되는 것을 확인하실 수 있습니다. Plot1(kk(Bids/Asks,10)); 즐거운 하루되세요 > 여유로운투자 님이 쓴 글입니다. > 제목 : 사용자함수에서 리턴타입 > 질문1 사용자함수를만들려고하는데 어레이형태가리턴가능한지궁금합니다 가능하다면 예제가 궁금합니다 질문2 사용자함수를 만드려는데 numericserise 형태로 인풋을 받도록 구현한다면 예를들어 input : aa(뉴메릭시리즈) 함수이름이 kk라치면 kk(asks+bids,n) 이렇게 호출한다면 kk함수안에서 (asks+bids)[n] 이런식으로 n 이라는 변수로 ask와 bids의 히스토리컬데이터 그니깐 이전 봉의 데이터를 접근가능한가요? 질문이 좀 중구난방인데 인풋에 한 데이터를넣는게아니라 인풋으로 수식을 넣어주면 그수식값이 히스토리컬하게접근되는지궁금합니다