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