수고하십니다.
다른 함수값을 동시에 읽어오고 싶은데, 잘 안되서 글을 쓰게되었네요.
------------------------------------------
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 값을 리턴 받고 싶습니다.
도움을 부탁드립니다.