//@version=4 study("MTF Damiani Volatmeter v3.2", shorttitle = "MTF Damiani Volatmeter v3.2", overlay=false) //mtf libraly useCurrentRes = input(true, title="useCurrentRes 現在のタイムフレームを使う") res = input(title="Different Timeframe タイムフレーム", type=input.resolution, defval="240") uptimeflame = input(false, title="use upper up timeflame 一個上のタイムフレームを使う", type=input.bool) upRes(res)=> res == "1" ? "5" : res == "3" ? "15" : res == "5" ? "15" : res == "15" ? "60" : res == "30" ? "120" : res == "60" ? "240" : res == "120" ? "1D" : res == "180" ? "1D" : res == "240" ? "1D" : res == "1D" ? "1W" : res == "1W" ? "1M" : res == "D" ? "1W" : res == "W" ? "1M" : res restf = useCurrentRes ? (uptimeflame ? upRes(timeframe.period) : timeframe.period) : (uptimeflame ? upRes(res) : res) cvttf2n(a)=>a == '1' ? 1 : a == '3' ? 3 : a == '5' ? 5 : a == '15' ? 15 : a == '30' ? 30 : a == '60' ? 60 : a == '120' ? 120 : a == '180' ? 180 : a == '240' ? 240 : a == '1D' ? 1440 : a == '1W' ? 10080 : a == '1M' ? 43200 : a == 'D' ? 1440 : a == 'W' ? 10080 : a == 'M' ? 43200 : na current_tf_mn = timeframe.ismonthly ? timeframe.multiplier * 43200 : timeframe.isweekly ? timeframe.multiplier * 10080 : timeframe.isdaily ? timeframe.multiplier * 1440 : timeframe.multiplier cvttf2mult(rest) =>cvttf2n(rest) / current_tf_mn tf_mult = cvttf2mult(restf) // //source = input(close, title="Source ") // original trend color DVColorMode = input ("MACD(close)", title = "DV Color mode",options=["MACD(DV)", "trend", "MACD(close)","MACD os(close)","donchian"]) donchian(len) => avg(lowest(len), highest(len)) //MACD dummyMACD = input(false, title = "MACD setting, MACD用設定") MACDfast = input(9, title = "MACD fast length") MACDslow = input(17, title = "MACD slow length") MACDsignal = input(7, title = "MACD signal length") //trend dummytrend = input(false, title = "trend setting, trend用設定") vwmalen = input(3, title = "trend color length") vwmasig = input(3, title = "trend color smooth") //donchian dummydonchian = input(false, title = "donchian setting, donchian用設定") donchianfast = input(13, title = "(donchian)fast length") donchianslow = input(20, title = "(donchian)slow length") //ColorOsi(src, 9 ,17, 7, color.green, color.red) ColorOsi(src, upc, dnc) => ret = upc if DVColorMode == "MACD(DV)" macd = ema(src, MACDfast) - ema(src, MACDslow) sig = ema(macd, MACDsignal) hist = macd - sig ret := hist >= 0 ? upc : dnc if DVColorMode == "trend" vwmaval = vwma(close, vwmalen) vwmasigval = sma(vwmaval, vwmasig) ret := vwmaval >= vwmasigval ? upc : dnc if DVColorMode == "MACD(close)" macd = ema(close, MACDfast) - ema(close, MACDslow) sig = sma(macd, MACDsignal) hist = macd - sig ret := hist >= 0 ? upc : dnc if DVColorMode == "MACD os(close)" macd = ema(close, MACDfast) - ema(close, MACDslow) sig = sma(macd, MACDsignal) hist = macd - sig ret := hist >= hist[1] ? upc : dnc if DVColorMode == "donchian" donchianfastval = donchian(donchianfast) donchianval = donchianfastval - donchian(donchianslow) donchiandir = donchianval == 0 ? (close > donchianfastval ? 1 : -1) : donchianval ret := donchiandir >= 0 ? upc : dnc ret dummydv = input(false, title = "Damiani Volatmeter setting DV設定") usevolmode = true //input(true, title = "use volume Mode") vis_atr = input(13) vis_std = input(20) sed_atr = input(40) sed_std = input(100) threshold_level = input(1.4) lag_supressor = input(true) atrv(len)=>rma(volume, len) //DV(13,20,40,100,1.4,true) DV(vis_atr,vis_std,sed_atr,sed_std,threshold_level,lag_supressor)=> vol = 0.0 lag_s_K = 0.5 s1=nz(vol[1], 0) s3=nz(vol[3], 0) vol := lag_supressor ? atr(vis_atr) / atr(sed_atr) + lag_s_K*(s1-s3) : atr(vis_atr) / atr(sed_atr) anti_thres = stdev(close, vis_std) / stdev(close, sed_std) t = threshold_level - anti_thres t- vol //Standard Deviation Function st_dev(y, t)=>sqrt(sma(pow(y - sma(y, t), 2), t)) //Correlation Coefficient corr(x, y, t)=> x_dev = x - sma(x, t) y_dev = y - sma(y, t) xy_sum = 0.0 x2_sum = 0.0 y2_sum = 0.0 for i = 0 to (t - 1) xy_sum := xy_sum + x_dev[i]*y_dev[i] x2_sum := x2_sum + pow(x_dev[i], 2) y2_sum := y2_sum + pow(y_dev[i], 2) xy_sum/sqrt(x2_sum*y2_sum) DVval = -DV(vis_atr,vis_std,sed_atr,sed_std,threshold_level,lag_supressor) mtfDV = security(syminfo.tickerid, restf, DVval) mtfDVcol = security(syminfo.tickerid, restf, ColorOsi(DVval, color.green, color.red)) mtfDV2 = security(syminfo.tickerid, upRes(restf), DVval) mtfDVcol2 = security(syminfo.tickerid, upRes(restf), ColorOsi(DVval, color.blue, color.orange)) hline(0, title = '0 Line', linestyle=hline.style_dashed, linewidth=1, color=color.black) underhline = input(-0.35, title = "charge hline level") hline(underhline, title = 'charge Line', linestyle=hline.style_dotted, linewidth=1, color=color.black) bgcolor(mtfDV < 0 ? color.new(color.red, 80) : color.new(color.red, 100)) bgcolor(mtfDV2 < 0 ? color.new(color.blue, 80) : color.new(color.blue, 100)) dispDV = input(true, title = "display MTF DV") dispDV2 = input(true, title = "display MTF upper DV") plot(dispDV? mtfDV : na, color= mtfDVcol, title="MTF DV", linewidth=2) plot(dispDV2 ? mtfDV2 : na, color= mtfDVcol2, title="MTF upper DV", linewidth=2) //DV signal line dummydvsig = input(false, title = "DV signal line setting シグナルライン用設定") dvsigfast = input(12, title = "(signal)fast length") dvsigslow = input(26, title = "(signal)slow length") dvsigsignal = input(9, title = "(signal)signal length") DVema26 = ema(DVval, dvsigslow) DVsig = sma(ema(DVval, dvsigfast) - DVema26, dvsigsignal) + DVema26 mtfDVsig = security(syminfo.tickerid, restf, DVsig) plot(dispDV? mtfDVsig : na, color= color.gray, title="MTF DV signal", linewidth=2) dispdvsignal = input(true, title = "display sign") plot((dispDV and dispdvsignal and cross(mtfDV,mtfDVsig))? mtfDV : na, color= mtfDV >= mtfDVsig ? color.green : color.red, title="MTF DV sign", style = plot.style_circles, linewidth=4) alertcondition(crossover(mtfDV,mtfDVsig) or crossover(mtfDV,0), title="MTF DV Caution",message="MTF DV Caution")