커뮤니티

부탁드립니다.

프로필 이미지
다올
2023-07-04 16:35:23
1845
글번호 170325
답변완료
매번 도움 주셔서 진심 감사 드립니다. 변형 부탁 드립니다. 1. 1. 트레이팅뷰에서 if mav == 'VAR' ma := VAR ma 부분을 if mav == 6 then _ma = VAR; 으로 변형시켜 주셨는데 "var"부분에서 [문법에러,잘못된 토큰:"var"] 로 에러가 발생합니다. 2. 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) => MAvg = getMA(src, length) fark = MAvg * percent * 0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir == 1 ? longStop : shortStop HOTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200 HOTTC = color.blue MAvgl = getMAl(srcl, length) farkl = MAvgl * percent * 0.01 longStopl = MAvgl - farkl longStopPrevl = nz(longStopl[1], longStopl) longStopl := MAvgl > longStopPrevl ? math.max(longStopl, longStopPrevl) : longStopl shortStopl = MAvgl + farkl shortStopPrevl = nz(shortStopl[1], shortStopl) shortStopl := MAvgl < shortStopPrevl ? math.min(shortStopl, shortStopPrevl) : shortStopl dirl = 1 dirl := nz(dirl[1], dirl) dirl := dirl == -1 and MAvgl > shortStopPrevl ? 1 : dirl == 1 and MAvgl < longStopPrevl ? -1 : dirl MTl = dirl == 1 ? longStopl : shortStopl LOTT = MAvgl > MTl ? MTl * (200 + percent) / 200 : MTl * (200 - percent) / 200 LOTTC = color.red HOTTLine = plot(nz(HOTT[2]), title='HOTT', color=color.new(HOTTC, 0), linewidth=2, style=plot.style_line) LOTTLine = plot(nz(LOTT[2]), title='LOTT', color=color.new(LOTTC, 0), linewidth=2, style=plot.style_line) FillColor = highlighting ? color.new(#9915FF, 80) : na fill(HOTTLine, LOTTLine, title='Highligter', color=FillColor) color1 = close > HOTT[2] ? #00FFFF : close < LOTT[2] ? #FF00FF : na barcolor(color1) alertcondition(ta.crossover(close, HOTT[2]), title='Price Crossover Alarm', message='PRICE OVER HOTT - BUY SIGNAL!') alertcondition(ta.crossunder(close, LOTT[2]), title='Price Crossunder Alarm', message='PRICE UNDER LOTT - SELL SIGNAL!')
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-07-05 10:27:19

안녕하세요 예스스탁입니다. 1 예스랭귀지에서 VAR는 내부변수를 선언하는 키워드입니다. 해당 키워드는 수식에서 변수로 사용할 수 없어 _VAR로 처리되어 있습니다. 2 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)); var : _MA(0),mal(0); if mav == 1 then _ma = ma(src, length); if mav == 2 then _ma = ema(src, length); if mav == 3 then _ma = wma(src, length); if mav == 4 then _ma = DEMA; if mav == 5 then _ma = ma(ma(src, Ceiling(length / 2)), floor(length / 2) + 1); if mav == 6 then _ma = _VAR; if mav == 7 then _ma = WWMA; if mav == 8 then _ma = ZLEMA; if mav == 9 then _ma = TSF; if mav == 10 then _ma = HMA; if mav == 1 then mal = ma(srcl, length); if mav == 2 then mal = ema(srcl, length); if mav == 3 then mal = wma(srcl, length); if mav == 4 then mal = DEMAl; if mav == 5 then mal = ma(ma(srcl, Ceiling(length / 2)), floor(length / 2) + 1); if mav == 6 then mal = VARl; if mav == 7 then mal = WWMAl; if mav == 8 then mal = ZLEMAl; if mav == 9 then mal = TSFl; if mav == 10 then mal = HMAl; var : mavg(0),fark(0),longstop(0),longStopPrev(0),shortstop(0),shortstopprev(0); var : dir(0),MT(0),HOTT(0),HOTTC(0); var : MAvgl(0),farkl(0),longStopl(0),longStopPrevl(0),shortStopl(0),shortStopPrevl(0); var : dirl(0),MTl(0),LOTT(0),LOTTC(0); MAvg = _ma; fark = MAvg * percent * 0.01; longStop = MAvg - fark; longStopPrev = iff(IsNaN(longStop[1]) == False, longStop,0); longStop = iff(MAvg > longStopPrev , max(longStop, longStopPrev) , longStop); shortStop = MAvg + fark; shortStopPrev = iff(isnan(shortStop[1])==False, shortStop,0); shortStop = iff(MAvg < shortStopPrev , min(shortStop, shortStopPrev) , shortStop); dir = 1; dir = iff(isnan(dir[1])== False, dir,0); dir = iff(dir == -1 and MAvg > shortStopPrev , 1 , iff(dir == 1 and MAvg < longStopPrev , -1 , dir)); MT = iff(dir == 1 , longStop , shortStop); HOTT = iff(MAvg > MT , MT * (200 + percent) / 200 , MT * (200 - percent) / 200); HOTTC = blue; MAvgl = MAl; farkl = MAvgl * percent * 0.01; longStopl = MAvgl - farkl; longStopPrevl = iff(isnan(longStopl[1]) == False, longStopl,0); longStopl = iff(MAvgl > longStopPrevl , max(longStopl, longStopPrevl) , longStopl); shortStopl = MAvgl + farkl; shortStopPrevl = iff(isnan(shortStopl[1])==False, shortStopl,0); shortStopl = iff(MAvgl < shortStopPrevl , min(shortStopl, shortStopPrevl) , shortStopl); dirl = 1; dirl = iff(isnan(dirl[1]), dirl,0); dirl = iff(dirl == -1 and MAvgl > shortStopPrevl , 1 , iff(dirl == 1 and MAvgl < longStopPrevl , -1 , dirl)); MTl = iff(dirl == 1 , longStopl , shortStopl); LOTT = iff(MAvgl > MTl , MTl * (200 + percent) / 200 , MTl * (200 - percent) / 200); LOTTC = red; plot1(HOTT[2], "HOTT",HOTTC); plot2(LOTT[2], "LOTT",LOTTC); 즐거운 하루되세요 > 다올 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 매번 도움 주셔서 진심 감사 드립니다. 변형 부탁 드립니다. 1. 1. 트레이팅뷰에서 if mav == 'VAR' ma := VAR ma 부분을 if mav == 6 then _ma = VAR; 으로 변형시켜 주셨는데 "var"부분에서 [문법에러,잘못된 토큰:"var"] 로 에러가 발생합니다. 2. 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) => MAvg = getMA(src, length) fark = MAvg * percent * 0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir == 1 ? longStop : shortStop HOTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200 HOTTC = color.blue MAvgl = getMAl(srcl, length) farkl = MAvgl * percent * 0.01 longStopl = MAvgl - farkl longStopPrevl = nz(longStopl[1], longStopl) longStopl := MAvgl > longStopPrevl ? math.max(longStopl, longStopPrevl) : longStopl shortStopl = MAvgl + farkl shortStopPrevl = nz(shortStopl[1], shortStopl) shortStopl := MAvgl < shortStopPrevl ? math.min(shortStopl, shortStopPrevl) : shortStopl dirl = 1 dirl := nz(dirl[1], dirl) dirl := dirl == -1 and MAvgl > shortStopPrevl ? 1 : dirl == 1 and MAvgl < longStopPrevl ? -1 : dirl MTl = dirl == 1 ? longStopl : shortStopl LOTT = MAvgl > MTl ? MTl * (200 + percent) / 200 : MTl * (200 - percent) / 200 LOTTC = color.red HOTTLine = plot(nz(HOTT[2]), title='HOTT', color=color.new(HOTTC, 0), linewidth=2, style=plot.style_line) LOTTLine = plot(nz(LOTT[2]), title='LOTT', color=color.new(LOTTC, 0), linewidth=2, style=plot.style_line) FillColor = highlighting ? color.new(#9915FF, 80) : na fill(HOTTLine, LOTTLine, title='Highligter', color=FillColor) color1 = close > HOTT[2] ? #00FFFF : close < LOTT[2] ? #FF00FF : na barcolor(color1) alertcondition(ta.crossover(close, HOTT[2]), title='Price Crossover Alarm', message='PRICE OVER HOTT - BUY SIGNAL!') alertcondition(ta.crossunder(close, LOTT[2]), title='Price Crossunder Alarm', message='PRICE UNDER LOTT - SELL SIGNAL!')