커뮤니티

함수 사용 문의드립니다.

프로필 이미지
가을이다
2020-03-31 18:17:02
536
글번호 137402
답변완료
수고하십니다. 다른 함수값을 동시에 읽어오고 싶은데, 잘 안되서 글을 쓰게되었네요. ------------------------------------------ func_test 함수 ------------------------------------------ inputs : num(Numeric); var1 = cci(num); var2 = rsi(num); func_test = NumToStr(var1,2) + " " + NumToStr(var2,2); ------------------------------------------ ------------------------------------------ 호출 시스템 ------------------------------------------ var : num(0), r_str(""); if ((Date == 20200330) && (Time == 141500)) then Begin r_str = func_test(9); MessageLog( r_str ); buy(); end; ------------------------------------------ 예를 들어 위와 같이, 사용자정의 함수를 func_test 로 만들었다고 가정할때에 cci 값과 rsi값을 리턴하게 됩니다. 그런데 문제가 있습니다, 이전봉의 CCI값을 가져오려면 CCI[1] [2] ... 이런식으로 번호를 붙이게 되는데 사용자 함수 호출에는 이것이 안먹히는것 같습니다,. func_test(9)[1] 이와같이 호출하면 아래와 같은 오류가 나옵니다. "프로그램오류 : 아직 컴파일되지 않았거나, 실행코드가 없습니다." 리턴값을 스트링으로 한 이유는 : 여러값을 받기위함입니다. 구분자로 분리.. (return ex : 123+456+789) 여러개의 값을 받는 부분은 배열을 써 봤지만, 배열을 써도 [0] 값만 불러오지 [1] [2] 값에는.. [0]값이 불러와집니다. input : arr[n](NumericArrayRef); 을 이용.. 정리하자면, 1. 사용자함수를 만들때에 한번 호출시, 여러개의 리턴값을 받고싶다. (rsi cci 등..) 2. 사용자함수 호출시, 인덱스 봉을 [0] [1] [2] 이런식으로 지정하여, 해당되는 값을 불러오고 싶다. 만약, 위의 예제로 예를 든다면 func_test(9)[2] 호출하면 현재봉 -2 의 값의 CCI, RSI 값을 리턴 받고 싶습니다. 도움을 부탁드립니다.
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-04-01 16:35:17

안녕하세요 예스스탁입니다. if ((Date == 20200330) && (Time == 141500)) then 지정한 위시간에만 func_test를 호출하면 이전봉에서는 호출된적이 없기에 이전봉의 값이 없습니다. 아래와 같이 매봉 호출해서 변수에 저장후에 지정한 if문에서 1봉전 호출하셔야 합니다. var : num(0),ff(""),r_str(""); ff = func_test(9); if ((Date == 20200330) && (Time == 141500)) then Begin r_str = ff[1]; MessageLog( r_str ); buy(); end; 즐거운 하루되세요 > 가을이다 님이 쓴 글입니다. > 제목 : 함수 사용 문의드립니다. > 수고하십니다. 다른 함수값을 동시에 읽어오고 싶은데, 잘 안되서 글을 쓰게되었네요. ------------------------------------------ func_test 함수 ------------------------------------------ inputs : num(Numeric); var1 = cci(num); var2 = rsi(num); func_test = NumToStr(var1,2) + " " + NumToStr(var2,2); ------------------------------------------ ------------------------------------------ 호출 시스템 ------------------------------------------ var : num(0), r_str(""); if ((Date == 20200330) && (Time == 141500)) then Begin r_str = func_test(9); MessageLog( r_str ); buy(); end; ------------------------------------------ 예를 들어 위와 같이, 사용자정의 함수를 func_test 로 만들었다고 가정할때에 cci 값과 rsi값을 리턴하게 됩니다. 그런데 문제가 있습니다, 이전봉의 CCI값을 가져오려면 CCI[1] [2] ... 이런식으로 번호를 붙이게 되는데 사용자 함수 호출에는 이것이 안먹히는것 같습니다,. func_test(9)[1] 이와같이 호출하면 아래와 같은 오류가 나옵니다. "프로그램오류 : 아직 컴파일되지 않았거나, 실행코드가 없습니다." 리턴값을 스트링으로 한 이유는 : 여러값을 받기위함입니다. 구분자로 분리.. (return ex : 123+456+789) 여러개의 값을 받는 부분은 배열을 써 봤지만, 배열을 써도 [0] 값만 불러오지 [1] [2] 값에는.. [0]값이 불러와집니다. input : arr[n](NumericArrayRef); 을 이용.. 정리하자면, 1. 사용자함수를 만들때에 한번 호출시, 여러개의 리턴값을 받고싶다. (rsi cci 등..) 2. 사용자함수 호출시, 인덱스 봉을 [0] [1] [2] 이런식으로 지정하여, 해당되는 값을 불러오고 싶다. 만약, 위의 예제로 예를 든다면 func_test(9)[2] 호출하면 현재봉 -2 의 값의 CCI, RSI 값을 리턴 받고 싶습니다. 도움을 부탁드립니다.