예스스탁
예스스탁 답변
2023-05-10 16:52:18
안녕하세요
예스스탁입니다.
해당식도 82018번과 같이 큰값이 리턴되어 지표가 정상적으로 그려지지 않습니다.
차트의 Y축 스케일링 방식이 트레이딩뷰와 달라 표시를 하기가 어렵습니다.
1번식은 지표식 표시를 위해 pow를 기존 5승 10승에서
1승 2승로 변경해서 작성한 식입니다.
외부변수로 승을 지정하게 작성해드립니다.
종목별로 다르게 적용할 필요가 있습니다.
2번식은 기존과 같이 5승 10승으로 처리한 식입니다.
색상을 gradient로 리턴하는 함수가 없어 red와 green으로만 처리해 드립니다.
아무래도 차트 스케일링때문에 첨부된 그림과 같이
너무 큰 자리수를 사용하는 내용은 지표표시문제로 변환을 해드리기 어려울 것 같습니다.
1
input : BBB_src(close),BBB_mult(0.8),BBB_lookback(21);
input : 승(1);
var : a1(0),a2(0),a3(0),a4(0),a5(0),short_BBB(0);
var : b1(0),b2(0),b3(0),b4(0),long_BBB(0),F_BBB(0),BBB(0);
a1 = ema(BBB_src, 10) - ema(BBB_src, 20) * BBB_mult;
a2 = ema(a1, 50) * BBB_mult;
a3 = 5 * (a1 - a2) * 30 * BBB_mult ;
a4 = pow(a3, 승) * 0.33 + pow(a3, 승) * BBB_mult;
a5 = IFf(a3 > 0.055 , a4 , 0) / 20 * BBB_mult;
short_BBB = a5 / 10 ;
b1 = ema(BBB_src, 2) - ema(BBB_src, 150);
b2 = ema(b1, 50) ;
b3 = 5 * (b1 - b2) ;
b4 = pow(b3, 승) * 0.1 + pow(b3, 승*2) ;
long_BBB = IFf(b3 > 0.4 , b4 , 0) * 55 / 150;
BBB = ema(short_BBB + long_BBB, 50) / 100000000;
plot1(BBB, "BBB",iff(BBB>BBB[1],Red,Blue));
2
input : BBB_src(close),BBB_mult(0.8),BBB_lookback(21);
var : a1(0),a2(0),a3(0),a4(0),a5(0),short_BBB(0);
var : b1(0),b2(0),b3(0),b4(0),long_BBB(0),F_BBB(0),BBB(0);
a1 = ema(BBB_src, 10) - ema(BBB_src, 20) * BBB_mult;
a2 = ema(a1, 50) * BBB_mult;
a3 = 5 * (a1 - a2) * 30 * BBB_mult ;
a4 = pow(a3, 5) * 0.33 + pow(a3, 5) * BBB_mult;
a5 = IFf(a3 > 0.055 , a4 , 0) / 20 * BBB_mult;
short_BBB = a5 / 10 ;
b1 = ema(BBB_src, 2) - ema(BBB_src, 150);
b2 = ema(b1, 50) ;
b3 = 5 * (b1 - b2) ;
b4 = pow(b3, 5) * 0.1 + pow(b3, 10) ;
long_BBB = IFf(b3 > 0.4 , b4 , 0) * 55 / 150;
BBB = ema(short_BBB + long_BBB, 50) / 100000000;
plot1(BBB, "BBB",iff(BBB>BBB[1],Red,Blue));
즐거운 하루되세요
> sdw0920 님이 쓴 글입니다.
> 제목 : 수식작성 부탁드립니다
> 항상 감사합니다ㅠㅠㅠㅠ 마찬가지로 트뷰 언어로 되어있습니다. 미리감사드립니다
BBB_src = input.source(defval=close , group=group_BBB, title='source')
BBB_mult = input.float (defval=0.8 , group=group_BBB, title='mult')
BBB_lookback = input.int (defval=21 , group=group_BBB, title='lookback_len')
F_BBB(src, mult) =>
a1 = ta.ema(src, 10) - ta.ema(src, 20) * mult
a2 = ta.ema(a1, 50) * mult
a3 = 5 * (a1 - a2) * 30 * mult
a4 = math.pow(a3, 5) * 0.33 + math.pow(a3, 5) * mult
a5 = (a3 > 0.055 ? a4 : 0) / 20 * mult
short_BBB = a5 / 10
b1 = ta.ema(src, 2) - ta.ema(src, 150)
b2 = ta.ema(b1, 50)
b3 = 5 * (b1 - b2)
b4 = math.pow(b3, 5) * 0.1 + math.pow(b3, 10)
long_BBB = (b3 > 0.4 ? b4 : 0) * 55 / 150
BBB = ta.ema(short_BBB + long_BBB, 50) / 100000000
BBB = F_BBB(BBB_src, BBB_mult)
BBB_rising_col = color.from_gradient(BBB, ta.lowest(BBB, BBB_lookback), ta.highest(BBB, BBB_lookback), #f8a5bb, #f91111)
BBB_relaxing_col = color.from_gradient(BBB, ta.lowest(BBB, BBB_lookback), ta.highest(BBB, BBB_lookback), #dcf8a5, #12f807)
plot(BBB, color = ta.rising(BBB, 1)? BBB_rising_col : BBB_relaxing_col, linewidth=2, style=plot.style_columns, title="BBB")
sdw0920
2023-05-10 17:11:26
너무너무 감사합니다 반거로우셨을텐데 테스트도 해주셔서 감사합니다
파이썬에사도 스케일 문제가 항상 생기더라고요ㅠㅠㅠ 감사합니다!!
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식작성 부탁드립니다
> 안녕하세요
예스스탁입니다.
해당식도 82018번과 같이 큰값이 리턴되어 지표가 정상적으로 그려지지 않습니다.
차트의 Y축 스케일링 방식이 트레이딩뷰와 달라 표시를 하기가 어렵습니다.
1번식은 지표식 표시를 위해 pow를 기존 5승 10승에서
1승 2승로 변경해서 작성한 식입니다.
외부변수로 승을 지정하게 작성해드립니다.
종목별로 다르게 적용할 필요가 있습니다.
2번식은 기존과 같이 5승 10승으로 처리한 식입니다.
색상을 gradient로 리턴하는 함수가 없어 red와 green으로만 처리해 드립니다.
아무래도 차트 스케일링때문에 첨부된 그림과 같이
너무 큰 자리수를 사용하는 내용은 지표표시문제로 변환을 해드리기 어려울 것 같습니다.
1
input : BBB_src(close),BBB_mult(0.8),BBB_lookback(21);
input : 승(1);
var : a1(0),a2(0),a3(0),a4(0),a5(0),short_BBB(0);
var : b1(0),b2(0),b3(0),b4(0),long_BBB(0),F_BBB(0),BBB(0);
a1 = ema(BBB_src, 10) - ema(BBB_src, 20) * BBB_mult;
a2 = ema(a1, 50) * BBB_mult;
a3 = 5 * (a1 - a2) * 30 * BBB_mult ;
a4 = pow(a3, 승) * 0.33 + pow(a3, 승) * BBB_mult;
a5 = IFf(a3 > 0.055 , a4 , 0) / 20 * BBB_mult;
short_BBB = a5 / 10 ;
b1 = ema(BBB_src, 2) - ema(BBB_src, 150);
b2 = ema(b1, 50) ;
b3 = 5 * (b1 - b2) ;
b4 = pow(b3, 승) * 0.1 + pow(b3, 승*2) ;
long_BBB = IFf(b3 > 0.4 , b4 , 0) * 55 / 150;
BBB = ema(short_BBB + long_BBB, 50) / 100000000;
plot1(BBB, "BBB",iff(BBB>BBB[1],Red,Blue));
2
input : BBB_src(close),BBB_mult(0.8),BBB_lookback(21);
var : a1(0),a2(0),a3(0),a4(0),a5(0),short_BBB(0);
var : b1(0),b2(0),b3(0),b4(0),long_BBB(0),F_BBB(0),BBB(0);
a1 = ema(BBB_src, 10) - ema(BBB_src, 20) * BBB_mult;
a2 = ema(a1, 50) * BBB_mult;
a3 = 5 * (a1 - a2) * 30 * BBB_mult ;
a4 = pow(a3, 5) * 0.33 + pow(a3, 5) * BBB_mult;
a5 = IFf(a3 > 0.055 , a4 , 0) / 20 * BBB_mult;
short_BBB = a5 / 10 ;
b1 = ema(BBB_src, 2) - ema(BBB_src, 150);
b2 = ema(b1, 50) ;
b3 = 5 * (b1 - b2) ;
b4 = pow(b3, 5) * 0.1 + pow(b3, 10) ;
long_BBB = IFf(b3 > 0.4 , b4 , 0) * 55 / 150;
BBB = ema(short_BBB + long_BBB, 50) / 100000000;
plot1(BBB, "BBB",iff(BBB>BBB[1],Red,Blue));
즐거운 하루되세요
> sdw0920 님이 쓴 글입니다.
> 제목 : 수식작성 부탁드립니다
> 항상 감사합니다ㅠㅠㅠㅠ 마찬가지로 트뷰 언어로 되어있습니다. 미리감사드립니다
BBB_src = input.source(defval=close , group=group_BBB, title='source')
BBB_mult = input.float (defval=0.8 , group=group_BBB, title='mult')
BBB_lookback = input.int (defval=21 , group=group_BBB, title='lookback_len')
F_BBB(src, mult) =>
a1 = ta.ema(src, 10) - ta.ema(src, 20) * mult
a2 = ta.ema(a1, 50) * mult
a3 = 5 * (a1 - a2) * 30 * mult
a4 = math.pow(a3, 5) * 0.33 + math.pow(a3, 5) * mult
a5 = (a3 > 0.055 ? a4 : 0) / 20 * mult
short_BBB = a5 / 10
b1 = ta.ema(src, 2) - ta.ema(src, 150)
b2 = ta.ema(b1, 50)
b3 = 5 * (b1 - b2)
b4 = math.pow(b3, 5) * 0.1 + math.pow(b3, 10)
long_BBB = (b3 > 0.4 ? b4 : 0) * 55 / 150
BBB = ta.ema(short_BBB + long_BBB, 50) / 100000000
BBB = F_BBB(BBB_src, BBB_mult)
BBB_rising_col = color.from_gradient(BBB, ta.lowest(BBB, BBB_lookback), ta.highest(BBB, BBB_lookback), #f8a5bb, #f91111)
BBB_relaxing_col = color.from_gradient(BBB, ta.lowest(BBB, BBB_lookback), ta.highest(BBB, BBB_lookback), #dcf8a5, #12f807)
plot(BBB, color = ta.rising(BBB, 1)? BBB_rising_col : BBB_relaxing_col, linewidth=2, style=plot.style_columns, title="BBB")