커뮤니티

수식 작성 부탁드립니다

프로필 이미지
sdw0920
2023-05-10 22:44:34
1202
글번호 168863
답변완료
마찬가지로 트뷰입니다. 예스랭귀지도 dmi는 내장되어 있지만 변형해서 쓰다보니 따로 개인함수가 필요합니다. 미리 감사드립니다. 작성해주신 것 보면서 많이 배우고 있습니다 STR_dmi_len = input.int(defval=29, title="DMI Length") STR_adx_len = input.int(defval=18, title="ADX period") F_STR(dmi_len, adx_len)=> up = ta.change(high) down = -ta.change(low) truerange = ta.rma(ta.tr, dmi_len) plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, dmi_len) / truerange) minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, dmi_len) / truerange) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adx_len) strength = (adx-1)*12 [strength, adx, plus, minus] [Strength, STR_adx, STR_plus, STR_minus] = F_STR(STR_dmi_len, STR_adx_len)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-05-11 11:36:19

안녕하세요 예스스탁입니다. 1번,2번은 사용자함수, 3번은 지표식입니다. 2번 F_STR함수의 경우 4개의 값이 리턴되므로 3번째 매개변수~6번째 매개변수를 외부변수를 NumericRef로 처리해서 순서대로 Strength, STR_adx, STR_plus, STR_minus값이 리턴됩니다. 1 사용자함수명 : rma 반환값형 : 숫자형 input : src(Numeric),Length(Numeric); var : alpha(0),sum(0); alpha = 1/length; rma = 0.0; rma = iff(IsNaN(rma[1]) == true, ma(src, length) , alpha * src + (1 - alpha) * IFf(IsNan(rma[1])==true,0,rma[1])); 2 사용자함수명 : F_STR 반환값형 : 숫자형 input : DMI_len(Numeric),ADX_Len(Numeric),strength(NumericRef),adxv(NumericRef),plus(NumericRef),minus(NumericRef); var : upv(0),dnv(0),TR(0),sum(0); upv = high-High[1]; dnv = -(Low-Low[1]); TR = rma(TrueRange, dmi_len); plus = 100 * rma(iff(upv > dnv and upv > 0 , upv , 0), dmi_len) / TR; minus = 100 * rma(iff(dnv > upv and dnv > 0 , dnv , 0), dmi_len) / TR; sum = plus + minus; adxv = 100 * rma(abs(plus - minus) / IFf(sum == 0 , 1 , sum), adx_len); strength = (adxv-1)*12; F_STR = 1; 3 input : STR_dmi_len(29),STR_adx_len(18); var : Strength(0), STR_adx(0), STR_plus(0), STR_minus(0); var1 = F_STR(STR_dmi_len, STR_adx_len, Strength, STR_adx, STR_plus, STR_minus); Plot1(Strength); Plot2(STR_adx); Plot3(STR_plus); Plot4(STR_minus); 즐거운 하루되세요 > sdw0920 님이 쓴 글입니다. > 제목 : 수식 작성 부탁드립니다 > 마찬가지로 트뷰입니다. 예스랭귀지도 dmi는 내장되어 있지만 변형해서 쓰다보니 따로 개인함수가 필요합니다. 미리 감사드립니다. 작성해주신 것 보면서 많이 배우고 있습니다 STR_dmi_len = input.int(defval=29, title="DMI Length") STR_adx_len = input.int(defval=18, title="ADX period") F_STR(dmi_len, adx_len)=> up = ta.change(high) down = -ta.change(low) truerange = ta.rma(ta.tr, dmi_len) plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, dmi_len) / truerange) minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, dmi_len) / truerange) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adx_len) strength = (adx-1)*12 [strength, adx, plus, minus] [Strength, STR_adx, STR_plus, STR_minus] = F_STR(STR_dmi_len, STR_adx_len)