예스스탁
예스스탁 답변
2023-05-10 14:04:58
안녕하세요
예스스탁입니다.
1번은 사용자함수, 2번은 지표식입니다.
1
사용자함수명 : F_SM
반환값형 : 숫자형
input : src(Numeric),len(Numeric);
var : a1(0),a2(0),a3(0),a4(0),a5(0);
a1 = exp(-sqrt(2) * pie / len);
a2 = 2 * a1 * cos(sqrt(2) * pie / len);
a3 = -pow(a1, 2);
a4 = a2 ;
a5 = 1 - a4 - a3;
F_SM = 0.0;
F_SM = a5 * src + a4 * iff(IsNan(F_SM[1])==true,src[1],F_SM[1]) + a3 * iff(IsNan(F_SM[2])==true,src[2],F_SM[2]);
2
input : MRC_len(15),MRC_innermult(1.0), MRC_outermult(2.0),MRC_extrememult(3.0);
var : MRC_src(0),pi(0),MRC_gradsize(0.5);
var : MRC_mult1(0),MRC_mult2(0),MRC_mult3(0);
var : up1(0),up2(0),up3(0),lo1(0),lo2(0),lo3(0);
var : up2_p4(0),up2_p3(0),up2_p2(0),up2_p1(0),up2_m1(0),up2_m2(0),up2_m3(0),up2_m4(0);
var : lo2_p4(0),lo2_p3(0),lo2_p2(0),lo2_p1(0),lo2_m1(0),lo2_m2(0),lo2_m3(0),lo2_m4(0);
var : meanline(0),meanrange(0);
MRC_src = (H+L)/2;
pi = pie;
MRC_mult1 = pi * MRC_innermult;
MRC_mult2 = pi * MRC_outermult;
MRC_mult3 = pi * MRC_extrememult;
meanline = MRC_src;
meanrange = F_SM(TrueRange, MRC_len);
meanline = F_SM(MRC_src, MRC_len);
// criteria lines
up1 = meanline + meanrange * MRC_mult1;
up2 = meanline + meanrange * MRC_mult2;
up3 = meanline + meanrange * MRC_mult3;
lo1 = meanline - meanrange * MRC_mult1;
lo2 = meanline - meanrange * MRC_mult2;
lo3 = meanline - meanrange * MRC_mult3;
//extension lines
up2_p4 = up2 + meanrange * MRC_gradsize * 0.4;
up2_p3 = up2 + meanrange * MRC_gradsize * 0.3;
up2_p2 = up2 + meanrange * MRC_gradsize * 0.2;
up2_p1 = up2 + meanrange * MRC_gradsize * 0.1;
up2_m1 = up2 + meanrange * MRC_gradsize * -0.1;
up2_m2 = up2 + meanrange * MRC_gradsize * -0.2;
up2_m3 = up2 + meanrange * MRC_gradsize * -0.3;
up2_m4 = up2 + meanrange * MRC_gradsize * -0.4;
lo2_p4 = lo2 - meanrange * MRC_gradsize * 0.4;
lo2_p3 = lo2 - meanrange * MRC_gradsize * 0.3;
lo2_p2 = lo2 - meanrange * MRC_gradsize * 0.2;
lo2_p1 = lo2 - meanrange * MRC_gradsize * 0.1;
lo2_m1 = lo2 - meanrange * MRC_gradsize * -0.1;
lo2_m2 = lo2 - meanrange * MRC_gradsize * -0.2;
lo2_m3 = lo2 - meanrange * MRC_gradsize * -0.3;
lo2_m4 = lo2 - meanrange * MRC_gradsize * -0.4;
plot1(meanline, " Mean", Orange);
plot2(up1 , " U1", Green);
plot3(up2 , " U2", Red);
plot4(up3 , " U3", Purple);
plot5(lo1 , " S1", Green);
plot6(lo2 , " S2", Red);
plot7(lo3 , " S3", Purple);
즐거운 하루되세요
> sdw0920 님이 쓴 글입니다.
> 제목 : 수식작성 부탁드립니다
> 항상 감사한 마음 뿐입니다. 열심히 공부하고 있으나, 아직 예스랭귀지가 능숙하지 않아서 또 문의 드립니다. 트뷰 파인 언어로 되어 있습니다. 미리 감사드립니다. F로시작하는 것은 사용자 정의 함수입니다.
MRC_src = input (defval=hl2, group=group_MRC, title='Price Source')
MRC_len = input.int (defval=15, group=group_MRC, title='Lookback Period')
MRC_innermult = input.float (defval=1.0, group=group_MRC, title='Inner Channel Size Multiplier')
MRC_outermult = input.float (defval=2.0, group=group_MRC, title='Outer Channel Size Multiplier')
MRC_extrememult = input.float (defval=3.0, group=group_MRC, title='Outer Channel Size Multiplier')
pi = math.pi
var MRC_gradsize = 0.5
MRC_mult1 = pi * MRC_innermult
MRC_mult2 = pi * MRC_outermult
MRC_mult3 = pi * MRC_extrememult
F_SM(src, len) =>
a1 = math.exp(-math.sqrt(2) * pi / len)
a2 = 2 * a1 * math.cos(math.sqrt(2) * pi / len)
a3 = -math.pow(a1, 2)
a4 = a2
a5 = 1 - a4 - a3
result = 0.0
result := a5 * src + a4 * nz(result[1], src[1]) + a3 * nz(result[2], src[2])
result
F_MRC(src, len, mult1, mult2, mult3, gradsize) =>
meanline = src
meanrange = F_SM(ta.tr, len)
meanline := F_SM(src, len)
// criteria lines
up1 = meanline + meanrange * mult1
up2 = meanline + meanrange * mult2
up3 = meanline + meanrange * mult3
lo1 = meanline - meanrange * mult1
lo2 = meanline - meanrange * mult2
lo3 = meanline - meanrange * mult3
//extension lines
float up2_p4 = up2 + meanrange * gradsize * 0.4
float up2_p3 = up2 + meanrange * gradsize * 0.3
float up2_p2 = up2 + meanrange * gradsize * 0.2
float up2_p1 = up2 + meanrange * gradsize * 0.1
float up2_m1 = up2 + meanrange * gradsize * -0.1
float up2_m2 = up2 + meanrange * gradsize * -0.2
float up2_m3 = up2 + meanrange * gradsize * -0.3
float up2_m4 = up2 + meanrange * gradsize * -0.4
float lo2_p4 = lo2 - meanrange * gradsize * 0.4
float lo2_p3 = lo2 - meanrange * gradsize * 0.3
float lo2_p2 = lo2 - meanrange * gradsize * 0.2
float lo2_p1 = lo2 - meanrange * gradsize * 0.1
float lo2_m1 = lo2 - meanrange * gradsize * -0.1
float lo2_m2 = lo2 - meanrange * gradsize * -0.2
float lo2_m3 = lo2 - meanrange * gradsize * -0.3
float lo2_m4 = lo2 - meanrange * gradsize * -0.4
[meanline, meanrange, up1, up2, up3, lo1, lo2, lo3, up2_m1, up2_m2, up2_m3, up2_m4, up2_p1, up2_p2, up2_p3, up2_p4, lo2_p1, lo2_p2, lo2_p3, lo2_p4, lo2_m1, lo2_m2, lo2_m3, lo2_m4]
[meanline, meanrange, up1, up2, up3, lo1, lo2, lo3, up2_m1, up2_m2, up2_m3, up2_m4, up2_p1, up2_p2, up2_p3, up2_p4,
lo2_p1, lo2_p2, lo2_p3, lo2_p4, lo2_m1, lo2_m2, lo2_m3, lo2_m4] = F_MRC(MRC_src, MRC_len, MRC_mult1, MRC_mult2, MRC_mult3, MRC_gradsize)
p_meanline = plot(meanline, color=color.new(#FFCD00, 0), style=plot.style_line, title=' Mean', linewidth=2)
p_up1_00 = plot(up1 , color=color.new(color.green, 50), style=plot.style_circles, title=' U1', linewidth=1)
p_up2_00 = plot(up2 , color=color.new(color.red, 50), style=plot.style_line, title=' U2', linewidth=1)
p_up3_00 = plot(up3 , color=color.new(color.fuchsia, 50), style=plot.style_line, title=' U3', linewidth=1)
p_lo1_00 = plot(lo1 , color=color.new(color.green, 50), style=plot.style_circles, title=' S1', linewidth=1)
p_lo2_00 = plot(lo2 , color=color.new(color.red, 50), style=plot.style_line, title=' S2', linewidth=1)
p_lo3_00 = plot(lo3 , color=color.new(color.fuchsia, 50), style=plot.style_line, title=' S3', linewidth=1)
var color1 = color.new(color=color.rgb(99, 67, 196), transp = 50)
var color5 = color.new(color=color.rgb(67, 196, 179), transp = 50)
fill(p_up2_p4, p_up2_00, color=color1)
fill(p_up2_00, p_up2_m4, color=color5)
fill(p_lo2_p4, p_lo2_00, color=color1)
fill(p_lo2_00, p_lo2_m4, color=color5)