Search
📕

6. 인라인 함수 만들기

인라인 함수는 수식 안에서 정의된 함수를 말합니다. 사용자함수와 인라인함수의 차이는 사용의 범위에 있습니다. 사용자함수는 자주 사용하는 계산식 등을 함수로 만들어 여러 지표식이나 전략식에서 사용하기 위함이지만 인라인함수는 함수를 정의한 수식 안에서만 통용되는 함수를 만들기 위함입니다. 특정 수식에서만 반복적으로 사용되는 내용이면 인라인 함수를 만들어 수식내에서 활용하게 됩니다. 또는 수식을 다른 사람에게 전달할 때 해당 수식에 별도의 사용자함수가 있으면 해당 내용도 같이 알려줘야 하는 불편함이 있으므로 수식내에서 인라인함수로 처리하는 경우도 있습니다.
1.
인라인함수 형식
Function 함수명 ReturnType 함수식 내용(사용자함수식과 동일) EndFunction ※ ReturnType : Numeric/Boolean/String 중 택일, 생략하면 Numeric
인라인함수는 기본적으로 사용자함수의 함수식 내용과 동일합니다. 다만 지표나 전략식에서 함수를 정의가 되므로 인라인 함수임을 알려주는 Function과 EndFunction 키워드 안에 작성되어야 하고 함수 시작시 Function과 함께 이름과 반환값 형태를 지정해야 합니다.
2.
인라인함수 작성
//함수명 : StochRSI input : RSIPeriod(Numeric),Kperiod(Numeric); var : RSIV(0),Hv(0),Lv(0),StoRsi(0),SD(0); RSIv = RSI(RSIPeriod); Hv = highest(RSIV,Kperiod); Lv = Lowest(RSIV,Kperiod); StochRsi= (RSIv- Lv) / (Hv-Lv) *100 ;
C
복사
[사용자함수 만들기]에서 만든 위 StochRSI 함수식을 지표식이나 전략식에서 인라인함수로 처리하면 아래와 같습니다.
//Function으로 시작하고 함수명과 반환값의 타입을 지정 Function StochRsi Numeric input : RSIPeriod(Numeric),Kperiod(Numeric); var : RSIV(0),Hv(0),Lv(0),StoRsi(0),SD(0); RSIv = RSI(RSIPeriod); Hv = highest(RSIV,Kperiod); Lv = Lowest(RSIV,Kperiod); StochRsi= (RSIv- Lv) / (Hv-Lv) *100 ; EndFunction //EndFunction으로 마무리
C
복사
인라인 함수는 해당 함수가 호출되기 전에 정의가 되어 있어야 하므로 수식에서는 위 쪽에 먼저 작성이 되어 있어야 합니다.
Function StochRsi Numeric input : RSIPeriod(Numeric),Kperiod(Numeric); var : RSIV(0),Hv(0),Lv(0),StoRsi(0),SD(0); RSIv = RSI(RSIPeriod); Hv = highest(RSIV,Kperiod); Lv = Lowest(RSIV,Kperiod); StochRsi= (RSIv- Lv) / (Hv-Lv) *100 ; endFunction
C
복사
인라인함수에 대한 작성이 완료 되면 함수 아래로 지표나 전략 내용을 입력하면 됩니다.
아래는 [전략식 만들기]에서 작성한 전략식 내용에서 StoRsi값을 인라인 함수로 처리해서 변경한 수식입니다.
//인라인함수 정의 시작(함수명 StochRSI, 반환값타입은 숫자형) Function StochRsi Numeric input : RSIPeriod(Numeric),Kperiod(Numeric); var : RSIV(0),Hv(0),Lv(0),StoRsi(0),SD(0); RSIv = RSI(RSIPeriod); Hv = highest(RSIV,Kperiod); Lv = Lowest(RSIV,Kperiod); StochRsi= (RSIv- Lv) / (Hv-Lv) *100 ; endFunction //인라인함수 정의 끝 input : RSIPeriod(14),Kperiod(10),DPeriod(5); var : StoRsi(0),SD(0); StoRsi = StochRSI(RSIPeriod,Kperiod); SD = ma(StoRsi ,DPeriod); if StoRsi < 20 and CrossUp(StoRsi,SD) Then buy("B"); if StoRsi > 80 and CrossDown(StoRsi,SD) Then Sell("S");
C
복사
뒤로가기는 좌측상단의 목차 버튼을 눌러주세요.