예스스탁
예스스탁 답변
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)