커뮤니티

수식작성 부탁드립니다

프로필 이미지
sdw0920
2023-05-09 17:11:44
1948
글번호 168830
답변완료
트레이딩뷰 코드 수식입니다. 예스랭귀지는 생소하다보니 도움 부탁드리겠습니다 F로 시작하는 문은 사용자 정의 함수이고요, 중간에 보시면 함수를 중첩해서 사용하고 있습니다. F_Dynamic_shift(value, len) => result = float(na) if len >= 1 for i = 0 to len by 1 if na(result) or not na(value[i]) result := value[i] result result F_X_MA(src, len, wei) => sum = 0.0 ma = 0.0 result = 0.0 sum := nz(sum[1]) - nz(src[len]) + src ma := na(src[len]) ? na : sum / len result := na(result[1]) ? ma : (src * wei + result[1] * (len - wei)) / len result BNK_len = input.int(defval=10, group=group_BNK, title='banker len') BNK_threshold1 = input.int(defval=2, group=group_BNK, title='banker entry threshold') BNK_threshold2 = input.int(defval=3, group=group_BNK, title='banker ready threshold') F_Banker_Flow(len)=> bankerflow = 2 * F_X_MA((close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len)) * 20, 2, 1) - 5 * F_X_MA(F_X_MA((close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len)) * 20, 2, 1), 2, 1) bankerflow Banker_Flow = F_Banker_Flow(BNK_len) F_Banker_LongAttack(len, threshold1, threshold2) => bankerflow = F_Banker_Flow(len) long_attack = ta.crossover(bankerflow, threshold1) long_entry = bankerflow <= threshold1 long_ready = bankerflow < threshold2 [long_attack, long_entry, long_ready] [BNK_attack_long, BNK_entry_long, BNK_ready_long] = F_Banker_LongAttack(BNK_len, BNK_threshold1, BNK_threshold2) p_long_attack = plot(BNK_attack_long ? 30 : 0, title='long-attack', color=BNK_attack_col, linewidth=1, style=plot.style_area) //model banker pump or dump start soon
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-05-10 10:51:47

안녕하세요 예스스탁입니다. F_Dynamic_shift F_X_MA F_Banker_Flow 예스랭귀지에는 인라인함수기능이 없어 우선 위 3개의 함수는 아래 1,2,3번 내용으로 사용자함수로 만드신 후에 4번 지표식 적용하시면 됩니다. 5번 지표는 Banker_Flow값 지표로 그리는 식입니다. 1. 사용자함수명 : F_Dynamic_shift 반환값형 : 숫자형 input : value(Numeric),len(Numeric); var : i(0); F_Dynamic_shift = Nan; if len >= 1 Then { for i = 0 to len step 1 { if IsNan(F_Dynamic_shift) == true or IsNaN(value[i]) == false Then F_Dynamic_shift = value[i]; } } 2 사용자함수명 : F_X_MA 반환값형 : 숫자형 input : src(Numeric),len(Numeric),wei(Numeric); var : sum(0),mav(0); sum = 0.0; mav = 0.0; F_X_MA = 0.0; sum = iff(IsNaN(sum[1]) == true,0,sum[1]) - IFf(IsNaN(src[len])==true,0,src[len]) + src; mav = iff(IsNan(src[len]) == true,Nan, sum / len); F_X_MA = iff(isNan(F_X_MA[1]) == true, mav , (src * wei + F_X_MA[1] * (len - wei)) / len); 3 사용자함수명 : F_Banker_Flow 반환값형 : 숫자형 input : len(Numeric); F_Banker_Flow = 2 * F_X_MA((close - lowest(low, len)) / (highest(high, len) - lowest(low, len)) * 20, 2, 1) - 5 * F_X_MA(F_X_MA((close - lowest(low, len)) / (highest(high, len) - lowest(low, len)) * 20, 2, 1), 2, 1); 4 input : BNK_len(10),BNK_threshold1(2),BNK_threshold2(3); var : Banker_Flow(0); var : BNK_attack_long(False),BNK_entry_long(False),BNK_ready_long(False); Banker_Flow = F_Banker_Flow(BNK_len); BNK_attack_long = CrossUp(Banker_Flow, BNK_threshold1); BNK_entry_long = Banker_Flow <= BNK_threshold1; BNK_ready_long = Banker_Flow < BNK_threshold2; plot1(iff(BNK_attack_long,30 ,0),"long-attack",Red); 5 input : BNK_len(10); var : Banker_Flow(0); Banker_Flow = F_Banker_Flow(BNK_len); plot1(Banker_Flow); 즐거운 하루되세요 > sdw0920 님이 쓴 글입니다. > 제목 : 수식작성 부탁드립니다 > 트레이딩뷰 코드 수식입니다. 예스랭귀지는 생소하다보니 도움 부탁드리겠습니다 F로 시작하는 문은 사용자 정의 함수이고요, 중간에 보시면 함수를 중첩해서 사용하고 있습니다. F_Dynamic_shift(value, len) => result = float(na) if len >= 1 for i = 0 to len by 1 if na(result) or not na(value[i]) result := value[i] result result F_X_MA(src, len, wei) => sum = 0.0 ma = 0.0 result = 0.0 sum := nz(sum[1]) - nz(src[len]) + src ma := na(src[len]) ? na : sum / len result := na(result[1]) ? ma : (src * wei + result[1] * (len - wei)) / len result BNK_len = input.int(defval=10, group=group_BNK, title='banker len') BNK_threshold1 = input.int(defval=2, group=group_BNK, title='banker entry threshold') BNK_threshold2 = input.int(defval=3, group=group_BNK, title='banker ready threshold') F_Banker_Flow(len)=> bankerflow = 2 * F_X_MA((close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len)) * 20, 2, 1) - 5 * F_X_MA(F_X_MA((close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len)) * 20, 2, 1), 2, 1) bankerflow Banker_Flow = F_Banker_Flow(BNK_len) F_Banker_LongAttack(len, threshold1, threshold2) => bankerflow = F_Banker_Flow(len) long_attack = ta.crossover(bankerflow, threshold1) long_entry = bankerflow <= threshold1 long_ready = bankerflow < threshold2 [long_attack, long_entry, long_ready] [BNK_attack_long, BNK_entry_long, BNK_ready_long] = F_Banker_LongAttack(BNK_len, BNK_threshold1, BNK_threshold2) p_long_attack = plot(BNK_attack_long ? 30 : 0, title='long-attack', color=BNK_attack_col, linewidth=1, style=plot.style_area) //model banker pump or dump start soon