커뮤니티

수식 작성 부탁드립니다

프로필 이미지
sdw0920
2023-05-10 11:40:47
1387
글번호 168848
답변완료
항상 감사드립니다. 트뷰 언어입니다. 잘부탁드리겠습니다. 빨리 예스랭귀지 배우도록 하겠습니다 ONS_size = input.int(defval=10 , group = group_ONS, title='size') ONS_ey = input.int(defval=10 , group = group_ONS, title='mult') ONS_len1 = input.int(defval=10 , group = group_ONS, title='len1') ONS_trig_len = input.int(defval=5 , group = group_ONS, title= 'Trig len') ONS_Q1a = input.float(defval = 0.2 , group = group_ONS, title='q1a') ONS_Q1b = input.float(defval = 0.1 , group = group_ONS, title='q1b') ONS_col1 = input.color(color.blue , group = group_ONS, title='Oscillator Color') ONS_col2 = input.color(color.red , group = group_ONS, title='Line Color') ONS_ccol3 = input.color(color.yellow , group = group_ONS, title='Line Color') F_ONS(len, Q)=> PI = math.pi angle = 0.333 * 9 * PI / 100 alpha1 = 0.0 alpha1 := ( math.cos( angle ) + math.sin( angle ) - 5 ) / math.cos( angle ) HP = 0.0 HP := math.pow((1-alpha1/3),5)*(close - (3*close[1]) + close[2]) + 5*(1-alpha1)*nz(HP[1]) - math.pow((1-alpha1),5)* nz(HP[2]) a1 = 0.0, b1 =0.0, c1 = 0.0, c2 = 0.0, c3 = 0.0 a1 := math.exp( -3.33 * PI / len ) b1 := 3 * a1 * math.cos( 3.33 * PI / len ) c2 := b1 c3 := -a1 * a1 c1 := 1 - c2 - c3 Filt = 0.0 Filt := c1 * (HP + nz(HP[1]))/3 + c2*nz(Filt[1]) + c3*nz(Filt[2]) Pk = 0.0 Pk := 0.333 *nz(Pk[1]) Pk := math.abs(Filt) > Pk ? math.abs(Filt) : Pk X = 0.0 X := nz(Filt / Pk) ONS = ( X + Q ) / ( Q * X + 10 ) * ONS_size + ONS_ey ONS Qt1a = F_ONS(ONS_len1, ONS_Q1a) Qt1b = F_ONS(ONS_len1, ONS_Q1b) ONS_Trg1 = ta.sma(Qt1a, ONS_trig_len) p_Qt1a = plot(Qt1a, color=color.new(color.green, 50), linewidth=1) p_Qt1b = plot(Qt1b, color=color.new(color.green, 50), linewidth=1) p_ONS_Trg1 = plot(ONS_Trg1, color=color.white, linewidth=1)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-05-10 15:57:04

안녕하세요 예스스탁입니다. 해당 수식은 변환해 보았지만 차트 초반의 백몇십개의 봉만 정상출력이 되고 이후 값이 고정으로 출력이 됩니다. 함수에서 너무 큰 자리수의 값이 리턴되면서 발생되는 내용인것 같은데 해결할 방법을 찾지 못했습니다. 참고하시라는 의미에서 수식만 변환해서 올려드립니다. 1번은 사용자함수, 2번은 지표식입니다. 1 사용자함수명 : F_ONS 반환값형 : 숫자형 input : len(Numeric),Q(Numeric),ONS_size(Numeric),ONS_ey(Numeric); var : PI(0),angle(0),alpha1(0),hp(0); var : a1(0),b1(0),c1(0),c2(0),c3(0),filt(0); var : Pk(0),x(0); PI = pie; angle = 0.333 * 9 * PI / 100; alpha1 = 0.0; alpha1 = (cos( angle ) + sin( angle ) - 5 ) / cos( angle ); HP = 0.0; HP = pow((1-alpha1/3),5)*(close - (3*close[1]) + close[2]) + 5*(1-alpha1)*iff(isnan(HP[1])==true,0,HP[1]) - pow((1-alpha1),5)* iff(isnan(HP[2])==true,0,HP[2]); a1 = 0.0; b1 =0.0; c1 = 0.0; c2 = 0.0; c3 = 0.0; a1 = exp( -3.33 * PI / len ); b1 = 3 * a1 * cos( 3.33 * PI / len ); c2 = b1; c3 = -a1 * a1; c1 = 1 - c2 - c3; Filt = 0.0; Filt = c1 * (HP + iff(isnan(HP[1])==true,0,HP[1]))/3 + c2*iff(isnan(Filt[1])==true,0,Filt[1]) + c3*iff(isnan(Filt[2])==true,0,Filt[2]) ; Pk = 0.0; Pk = 0.333 *iff(isnan(Pk[1])==true,0,Pk[1]) ; Pk = iff(abs(Filt) > Pk , abs(Filt) , Pk); X = 0.0; X = iff(isnan(Filt / Pk)==true,0,Filt / Pk); F_ONS = ( X + Q ) / ( Q * X + 10 ) * ONS_size + ONS_ey; 2 input : ONS_size(10),ONS_ey(10),ONS_len1(10),ONS_trig_len(5),ONS_Q1a(0.2),ONS_Q1b(0.1); var : Qt1a(0),Qt1b(0),ONS_Trg1(0); Qt1a = F_ONS(ONS_len1, ONS_Q1a, ONS_size, ONS_ey); Qt1b = F_ONS(ONS_len1, ONS_Q1b, ONS_size, ONS_ey); ONS_Trg1 = ma(Qt1a, ONS_trig_len); plot1(Qt1a,"p_Qt1a",green); plot2(Qt1b,"p_Qt1b",green); plot3(ONS_Trg1,"p_Qt1b",white); MessageLog("%.20f %.20f",Qt1a,Qt1b); 즐거운 하루되세요 > sdw0920 님이 쓴 글입니다. > 제목 : 수식 작성 부탁드립니다 > 항상 감사드립니다. 트뷰 언어입니다. 잘부탁드리겠습니다. 빨리 예스랭귀지 배우도록 하겠습니다 ONS_size = input.int(defval=10 , group = group_ONS, title='size') ONS_ey = input.int(defval=10 , group = group_ONS, title='mult') ONS_len1 = input.int(defval=10 , group = group_ONS, title='len1') ONS_trig_len = input.int(defval=5 , group = group_ONS, title= 'Trig len') ONS_Q1a = input.float(defval = 0.2 , group = group_ONS, title='q1a') ONS_Q1b = input.float(defval = 0.1 , group = group_ONS, title='q1b') ONS_col1 = input.color(color.blue , group = group_ONS, title='Oscillator Color') ONS_col2 = input.color(color.red , group = group_ONS, title='Line Color') ONS_ccol3 = input.color(color.yellow , group = group_ONS, title='Line Color') F_ONS(len, Q)=> PI = math.pi angle = 0.333 * 9 * PI / 100 alpha1 = 0.0 alpha1 := ( math.cos( angle ) + math.sin( angle ) - 5 ) / math.cos( angle ) HP = 0.0 HP := math.pow((1-alpha1/3),5)*(close - (3*close[1]) + close[2]) + 5*(1-alpha1)*nz(HP[1]) - math.pow((1-alpha1),5)* nz(HP[2]) a1 = 0.0, b1 =0.0, c1 = 0.0, c2 = 0.0, c3 = 0.0 a1 := math.exp( -3.33 * PI / len ) b1 := 3 * a1 * math.cos( 3.33 * PI / len ) c2 := b1 c3 := -a1 * a1 c1 := 1 - c2 - c3 Filt = 0.0 Filt := c1 * (HP + nz(HP[1]))/3 + c2*nz(Filt[1]) + c3*nz(Filt[2]) Pk = 0.0 Pk := 0.333 *nz(Pk[1]) Pk := math.abs(Filt) > Pk ? math.abs(Filt) : Pk X = 0.0 X := nz(Filt / Pk) ONS = ( X + Q ) / ( Q * X + 10 ) * ONS_size + ONS_ey ONS Qt1a = F_ONS(ONS_len1, ONS_Q1a) Qt1b = F_ONS(ONS_len1, ONS_Q1b) ONS_Trg1 = ta.sma(Qt1a, ONS_trig_len) p_Qt1a = plot(Qt1a, color=color.new(color.green, 50), linewidth=1) p_Qt1b = plot(Qt1b, color=color.new(color.green, 50), linewidth=1) p_ONS_Trg1 = plot(ONS_Trg1, color=color.white, linewidth=1)