커뮤니티

사용자 함수를 만들고 싶은데...

프로필 이미지
게바라
2008-03-09 12:36:38
890
글번호 14893
답변완료
수소하십니다.. 아래 지표식을 사용자 함수로 만들고 싶은데 검증해 보면 " 함수가 값을 리턴하고 있지 않습니다 함수는 반드시 값을 리턴해야 합니다" 이런 메세지가 뜹니다 어떻게 해야 하나요? 감사합니다 VARS: SWITCH(0); IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { //PLOT1(HIGH[1], "ZIGUP"); SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { //PLOT1(LOW[1], "ZIGUP"); SWITCH = 0; } }
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2008-03-10 09:20:01

안녕하세요 예스스탁입니다. 사용자함수에서 최종 계산된 값은 사용자함수의 이름과 같아야 합니다. 즉 사용자함수를 만들때 이름은 최종 계산값이 할당되는 변수이므로 선정시 주의하셔야 합니다. switch값으로 함수를 만드실 의향이시라면 사용자 함수의 이름을 switch로 하시고 IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { //PLOT1(HIGH[1], "ZIGUP"); SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { //PLOT1(LOW[1], "ZIGUP"); SWITCH = 0; } } 위 식을 붙여넣기 하시면 됩니다. 또는 zigzag와 같이 다른이름으로 사용자함수를 만드신다면 사용자함수 이름 : zigzag VARS: SWITCH(0); IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { ZigZag = HIGH[1]; SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { ZigZag = LOW[1]; SWITCH = 0; } } 와 같이 작성할 수 있습니다. 사용자 함수의 이름으로 최종값이 할당되게 하고 그 이름은 새로작성시 이름으로 넣었기 때문에 따로 선언하지 않습니다. 즐거운 하루되세요 > 게바라 님이 쓴 글입니다. > 제목 : 사용자 함수를 만들고 싶은데... > 수소하십니다.. 아래 지표식을 사용자 함수로 만들고 싶은데 검증해 보면 " 함수가 값을 리턴하고 있지 않습니다 함수는 반드시 값을 리턴해야 합니다" 이런 메세지가 뜹니다 어떻게 해야 하나요? 감사합니다 VARS: SWITCH(0); IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { //PLOT1(HIGH[1], "ZIGUP"); SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { //PLOT1(LOW[1], "ZIGUP"); SWITCH = 0; } }
프로필 이미지

게바라

2008-03-11 00:21:23

답변에 감사드립니다. 아래 수식을 복사하여 붙여 넣어도 같은 메세지가 나옵니다. 죄송하지만 검증하여 메일로 보내주시면 감ㅅ하겠습니다. 그럼 수고하세요 j14568@hanmail.net > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 사용자 함수를 만들고 싶은데... > 안녕하세요 예스스탁입니다. 사용자함수에서 최종 계산된 값은 사용자함수의 이름과 같아야 합니다. 즉 사용자함수를 만들때 이름은 최종 계산값이 할당되는 변수이므로 선정시 주의하셔야 합니다. switch값으로 함수를 만드실 의향이시라면 사용자 함수의 이름을 switch로 하시고 IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { //PLOT1(HIGH[1], "ZIGUP"); SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { //PLOT1(LOW[1], "ZIGUP"); SWITCH = 0; } } 위 식을 붙여넣기 하시면 됩니다. 또는 zigzag와 같이 다른이름으로 사용자함수를 만드신다면 사용자함수 이름 : zigzag VARS: SWITCH(0); IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { ZigZag = HIGH[1]; SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { ZigZag = LOW[1]; SWITCH = 0; } } 와 같이 작성할 수 있습니다. 사용자 함수의 이름으로 최종값이 할당되게 하고 그 이름은 새로작성시 이름으로 넣었기 때문에 따로 선언하지 않습니다. 즐거운 하루되세요 > 게바라 님이 쓴 글입니다. > 제목 : 사용자 함수를 만들고 싶은데... > 수소하십니다.. 아래 지표식을 사용자 함수로 만들고 싶은데 검증해 보면 " 함수가 값을 리턴하고 있지 않습니다 함수는 반드시 값을 리턴해야 합니다" 이런 메세지가 뜹니다 어떻게 해야 하나요? 감사합니다 VARS: SWITCH(0); IF SWITCH == 0 THEN { IF HIGH[1] > HIGH[2] AND HIGH[1] > HIGH THEN { //PLOT1(HIGH[1], "ZIGUP"); SWITCH = 1; } } IF SWITCH == 1 THEN { IF LOW[1] < LOW[2] AND LOW[1] < LOW THEN { //PLOT1(LOW[1], "ZIGUP"); SWITCH = 0; } }