예스스탁
예스스탁 답변
2023-07-03 11:25:18
안녕하세요
예스스탁입니다.
input : length(2),percent(0.6),hllength(10);
input : highlighting(true);
input : mav(1); # 1:SMA, 2:EMA, 3:WMA, 4:DEMA, 5:TMA, 6:VAR, 7:WWMA, 8:ZLEMA, 9:TSF, 10:HULL
var : src(0),srcl(0);
var : DEMA(0);
src = highest(high, hllength);
srcl = lowest(low, hllength);
var : valpha(0),vud1(0),vdd1(0),vUD(0),vDD(0),vCMO(0),_var(0);
valpha = 2 / (length + 1);
vud1 = iff(src > src[1] , src - src[1] , 0);
vdd1 = iff(src < src[1] , src[1] - src , 0);
vUD = AccumN(vud1, 9);
vDD = AccumN(vdd1, 9);
vCMO = iff(isnan(((vUD - vDD) / (vUD + vDD))),((vUD - vDD) / (vUD + vDD)),0);
_VAR = 0.0;
_VAR = iff(isnan(valpha * abs(vCMO) * src) == False,valpha * abs(vCMO) * src,0) + (1 - valpha * abs(vCMO)) * iff(isnan(_VAR[1])==False,_VAR[1],0);
DEMA = 2 * ema(src, length) - ema(ema(src, length), length);
var : wwalpha(0),wwma(0);
wwalpha = 1 / length;
WWMA = 0.0;
WWMA = wwalpha * src + (1 - wwalpha) * IFf(IsNan(WWMA[1]) == False,WWMA[1],0);
var : zxLag(0),zxEMAData(0),ZLEMA(0);
zxLag = IFf(length / 2 == round(length / 2,0) , length / 2 , (length - 1) / 2);
zxEMAData = src + src - src[zxLag];
ZLEMA = ema(zxEMAData, length);
var : lrc(0),lrc1(0),LRS(0),TSF(0);
lrc = LRL(src, length);
lrc1 = LRL(src, length)[1];
lrs = lrc - lrc1;
TSF = lrc + lrs;
var : hma(0);
HMA = wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length),0));
var : valphal(0),vud1l(0),vdd1l(0),vUDl(0),vDDl(0),vCMOl(0),VARl(0);
valphal = 2 / (length + 1);
vud1l = iff(srcl > srcl[1] , srcl - srcl[1] , 0);
vdd1l = iff(srcl < srcl[1] , srcl[1] - srcl , 0);
vUDl = AccumN(vud1l, 9);
vDDl = AccumN(vdd1l, 9);
vCMOl = iff(IsNan((vUDl - vDDl) / (vUDl + vDDl)) == False,(vUDl - vDDl) / (vUDl + vDDl),0);
VARl = 0.0;
VARl = iff(IsNan(valphal * abs(vCMOl) * srcl),valphal * abs(vCMOl) * srcl,0) + (1 - valphal * abs(vCMOl)) * iff(isnan(VARl[1]) == False,VARl[1],0);
var : DEMAl(0);
DEMAl = 2 * ema(srcl, length) - ema(ema(srcl, length), length);
var : wwalphal(0),WWMAl(0);
wwalphal = 1 / length;
WWMAl = 0.0;
WWMAl = wwalphal * srcl + (1 - wwalphal) * iff(IsNan(WWMAl[1]) == False,WWMAl[1],0);
var : zxLagl(0),zxEMADatal(0),ZLEMAl(0);
zxLagl = iff(length / 2 == round(length / 2,0) , length / 2 , (length - 1) / 2);
zxEMADatal = srcl + srcl - srcl[zxLagl];
ZLEMAl = ema(zxEMADatal, length);
var : lrcl(0),lrc1l(0),lrsl(0),TSFl(0);
lrcl = lrl(srcl, length);
lrc1l = LRl(srcl, length)[1];
lrsl = lrcl - lrc1l;
TSFl = LRl(srcl, length) + lrsl;
var : HMAL(0);
HMAl = wma(2 * wma(srcl, length / 2) - wma(srcl, length), round(sqrt(length),0))
즐거운 하루되세요
> 다올 님이 쓴 글입니다.
> 제목 : 부탁드립니다.
> 이전 문의드릴때 일정시간을 넘어가는 수식이기에 변형이 힘들다고 하셔서 부분적으로 문의 드립니다. 꼭좀 부탁 드립니다.
indicator('HIGH AND LOW Optimized Trend Tracker', 'HL OTT', overlay=true)
length = input.int(2, 'OTT Period', minval=1)
percent = input.float(0.6, 'OTT Optimization Coeff', step=0.1, minval=0)
hllength = input.int(10, 'Highest and Lowest Length', minval=1)
src = ta.highest(high, hllength)
srcl = ta.lowest(low, hllength)
highlighting = input(title='Highlighter On/Off ?', defval=true)
mav = input.string(title='Moving Average Type', defval='VAR', options=['SMA', 'EMA', 'WMA', 'DEMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF', 'HULL'])
Var_Func(src, length) =>
valpha = 2 / (length + 1)
vud1 = src > src[1] ? src - src[1] : 0
vdd1 = src < src[1] ? src[1] - src : 0
vUD = math.sum(vud1, 9)
vDD = math.sum(vdd1, 9)
vCMO = nz((vUD - vDD) / (vUD + vDD))
VAR = 0.0
VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
VAR
VAR = Var_Func(src, length)
DEMA = 2 * ta.ema(src, length) - ta.ema(ta.ema(src, length), length)
Wwma_Func(src, length) =>
wwalpha = 1 / length
WWMA = 0.0
WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1])
WWMA
WWMA = Wwma_Func(src, length)
Zlema_Func(src, length) =>
zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
zxEMAData = src + src - src[zxLag]
ZLEMA = ta.ema(zxEMAData, length)
ZLEMA
ZLEMA = Zlema_Func(src, length)
Tsf_Func(src, length) =>
lrc = ta.linreg(src, length, 0)
lrc1 = ta.linreg(src, length, 1)
lrs = lrc - lrc1
TSF = ta.linreg(src, length, 0) + lrs
TSF
TSF = Tsf_Func(src, length)
HMA = ta.wma(2 * ta.wma(src, length / 2) - ta.wma(src, length), math.round(math.sqrt(length)))
Var_Funcl(srcl, length) =>
valphal = 2 / (length + 1)
vud1l = srcl > srcl[1] ? srcl - srcl[1] : 0
vdd1l = srcl < srcl[1] ? srcl[1] - srcl : 0
vUDl = math.sum(vud1l, 9)
vDDl = math.sum(vdd1l, 9)
vCMOl = nz((vUDl - vDDl) / (vUDl + vDDl))
VARl = 0.0
VARl := nz(valphal * math.abs(vCMOl) * srcl) + (1 - valphal * math.abs(vCMOl)) * nz(VARl[1])
VARl
VARl = Var_Funcl(srcl, length)
DEMAl = 2 * ta.ema(srcl, length) - ta.ema(ta.ema(srcl, length), length)
Wwma_Funcl(srcl, length) =>
wwalphal = 1 / length
WWMAl = 0.0
WWMAl := wwalphal * srcl + (1 - wwalphal) * nz(WWMAl[1])
WWMAl
WWMAl = Wwma_Funcl(srcl, length)
Zlema_Funcl(srcl, length) =>
zxLagl = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
zxEMADatal = srcl + srcl - srcl[zxLagl]
ZLEMAl = ta.ema(zxEMADatal, length)
ZLEMAl
ZLEMAl = Zlema_Funcl(srcl, length)
Tsf_Funcl(srcl, length) =>
lrcl = ta.linreg(srcl, length, 0)
lrc1l = ta.linreg(srcl, length, 1)
lrsl = lrcl - lrc1l
TSFl = ta.linreg(srcl, length, 0) + lrsl
TSFl
TSFl = Tsf_Funcl(srcl, length)
HMAl = ta.wma(2 * ta.wma(srcl, length / 2) - ta.wma(srcl, length), math.round(math.sqrt(length)))