커뮤니티

함수를 만들고 싶은데요

프로필 이미지
초심자의행운
2022-02-27 17:33:58
1186
글번호 156781
답변완료
1.원래 있는 함수들이나 지표들(보라색이나 파란색 또는 빨간색 글씨들)은 사용할 때 변수 선언을 하지 않아도 된다는거죠? 사용자 함수를 만든다는 게 지표나 시스템을 만들 때 특정 공식을 매번 쓰기 귀찮으니까 함수로 만들어놓는건가요 ? 2. 근데 프로그래밍을 접해본 적이 없어서 이것저것 보면서 해보고 있습니다. 다름이 아니라 어떤 함수를 만들고 싶은데 검증을 하면 항상 "외부함수의 입력값이 1개 필요합니다" 값을 대입할 수 있는 변수나 배열의 요소, 입력변수,..." 이 두 문장이 항상 뜹니다. 3. 기존에 있는 함수를 복사해서 새로 만들기에 붙여넣기 해도 같은 오류가 발생하는데 뭐가 문제인가요? 만들고 싶은 함수는 많은데 그중 Q&A를 보고 따라해보다 안되는 예시를 올려보겠습니다. --- 아래식은 최근 100봉중 거래량이 1000개인 봉의 갯수를 게산하는 지표식입니다. var : cnt(0),count(0); count = 0; for cnt = 0 to 99{ if v[cnt] == 1000 Then count = count+1; } plot1(count); --- 4. 만약 이 지표식을 함수식으로 만들려면 어떻게 해야 하나요? 5. 그리고 제가 이 지표를 좀 변경해서 n일에 n일부터 최근 10일간 양봉의 갯수를 세는 지표를 만들어봤는데 잘 안됩니다. var : cnt(0),count(0); count = 0; for cnt = 0 to 10{ if OpenD(cnt) < CloseD(cnt) Then count = count+1; } plot1(count); 긴 글 읽어주셔서 감사합니다 수고하세요
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-02-28 13:22:24

안녕하세요 예스스탁입니다. 1 예 맞습니다. 2 사용자함수는 작성하실때 계산식의 최종값이 사용자함수명에 할당되게 하셔야 합니다. 예스랭귀지 편집기에서 제공되는 사용자함수를 열어보시면 함수식안에서 계산된 값이 최종적으로는 사용자함수명에 저장되게 작성된 것을 보실수 있습니다. Inputs : Price(NumericSeries); Var : Value_Accum(0); if CurrentBar > 1 then Value_Accum = Value_Accum + Price; else Value_Accum = Price; Accum = Value_Accum; 예를 들어 accum함수를 열어보시면 마지막에 Accum = Value_Accum;과 같이 함수명에 값이 저장됩니다. 즉 계산된 최종값은 지정한 함수명으로 리턴한다는 의미입니다. 3 var : cnt(0),count(0); count = 0; for cnt = 0 to 10{ if OpenD(cnt) < CloseD(cnt) Then count = count+1; } 만약 위와 같은 수식을 함수식으로 작성하고 함수명을 "음봉갯수"라고 한다면 사용자함수 새로작성화면에서 이름은 음봉갯수로 지정하고 함수의 계산값이 숫자이므로 반환값형은 숫자형으로 지정하고 확인버튼을 클릭합니다 수식은 아래와 같이 작성하고 사용하시면 됩니다. var : cnt(0),count(0); count = 0; for cnt = 0 to 10{ if OpenD(cnt) < CloseD(cnt) Then count = count+1; } 음봉갯수 = count; 지표식에서는 계산식없이 아래와 같이만 작성해 사용하시면 됩니다. plot1(음봉갯수); 즐거운 하루되세요 > 초심자의행운 님이 쓴 글입니다. > 제목 : 함수를 만들고 싶은데요 > 1.원래 있는 함수들이나 지표들(보라색이나 파란색 또는 빨간색 글씨들)은 사용할 때 변수 선언을 하지 않아도 된다는거죠? 사용자 함수를 만든다는 게 지표나 시스템을 만들 때 특정 공식을 매번 쓰기 귀찮으니까 함수로 만들어놓는건가요 ? 2. 근데 프로그래밍을 접해본 적이 없어서 이것저것 보면서 해보고 있습니다. 다름이 아니라 어떤 함수를 만들고 싶은데 검증을 하면 항상 "외부함수의 입력값이 1개 필요합니다" 값을 대입할 수 있는 변수나 배열의 요소, 입력변수,..." 이 두 문장이 항상 뜹니다. 3. 기존에 있는 함수를 복사해서 새로 만들기에 붙여넣기 해도 같은 오류가 발생하는데 뭐가 문제인가요? 만들고 싶은 함수는 많은데 그중 Q&A를 보고 따라해보다 안되는 예시를 올려보겠습니다. --- 아래식은 최근 100봉중 거래량이 1000개인 봉의 갯수를 게산하는 지표식입니다. var : cnt(0),count(0); count = 0; for cnt = 0 to 99{ if v[cnt] == 1000 Then count = count+1; } plot1(count); --- 4. 만약 이 지표식을 함수식으로 만들려면 어떻게 해야 하나요? 5. 그리고 제가 이 지표를 좀 변경해서 n일에 n일부터 최근 10일간 양봉의 갯수를 세는 지표를 만들어봤는데 잘 안됩니다. var : cnt(0),count(0); count = 0; for cnt = 0 to 10{ if OpenD(cnt) < CloseD(cnt) Then count = count+1; } plot1(count); 긴 글 읽어주셔서 감사합니다 수고하세요