Forked from somme/gist:1e8ebe8cdf4921623ccad834a17f12a8
Created
June 7, 2021 19:08
-
-
Save andregrillo/b043929d1155b841dfec643f9e5a84b0 to your computer and use it in GitHub Desktop.
Revisions
-
Somme Sakounthong revised this gist
Oct 14, 2019 . 1 changed file with 3 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -111,9 +111,7 @@ color_area = MVC > 0 ? color.green : color.red up = rma(max(change(close), 0), 14) down = rma(-min(change(close), 0), 14) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) rsiColor = rsi <= RSIOversold ? color.green : rsi >= RSIOverbought ? color.red : color.purple // Calculates WaveTrend esa = ma(wtMA, ap, n1) @@ -217,10 +215,7 @@ fill(RSIMFIplot, plot(0), color_area, transp=45) // RSI + MFI BAR rsimfiBarTopLine = plot(-95, title="RSI+MFI Bar TOP Line", color=color.black, transp=100) rsimfiBarBottomLine = plot(-105, title="RSI+MFI Bar BOTTOM Line", color=color.black, transp=100) fill(rsimfiBarTopLine, rsimfiBarBottomLine, color=color_area, transp=65) // WT Area 1 @@ -257,4 +252,4 @@ alertcondition(plotWTGoldBuy != 0, "GOLD Buy Signal (Big GOLDEN circle)", "Green // SELL alertcondition(sellSignal != 0, "Sell Signal (Big red circle)", "Red Circle WaveTrend Overbought") alertcondition(divSellSignal != 0, "Sell Signal (Big red circle + Div)", "Buy signal & WT Bearish Divergence & WT Overbought ") // } ALERTS -
Somme Sakounthong created this gist
Oct 14, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,260 @@ //@version=4 // CIRCLES: // - LITTLE: They appear at all WaveTrend wave crossings // - GREEN: The wavetrend waves are at the oversold level and have crossed up (bullish) // - RED: The wavetrend waves are at the overbought level and have crossed down (bearish) // - PURPLE: Appear when a bullish or bearish divergence is formed and WaveTrend waves crosses at overbought and oversold points // - GOLD: When RSI is below 20, WaveTrend waves are below or equal to -80 and have crossed up (DONT BUY WHEN GOLD CIRCLE APPEAR) // - None of these circles are certain signs to trade. It is only information that can help you. // // I am not an expert trader or know how to program pine script as such, in fact it is my first indicator only to study and all the code is copied and modified from other codes that are published in TradingView. // I am very grateful to the entire TV community that publishes codes so that other newbies like me can learn and present their results. This is an attempt to imitate Market Cipher B. study(title="Cipher_B", shorttitle="Cipher_B") // FUNCTIONS { // DIVERGENCES f_top_fractal(_src) => _src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0] f_bot_fractal(_src) => _src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0] f_fractalize(_src) => f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0 // MA Selector ma(matype, src, length) => if matype == "RMA" rma(src, length) else if matype == "SMA" sma(src, length) else if matype == "EMA" ema(src, length) else if matype == "WMA" wma(src, length) else if matype == "VWMA" vwma(src, length) else src // } FUNCTIONS // PARAMETERS { // WaveTrend Channel Length n1 = input(7, "WT Channel Length") // WaveTrend Average Length n2 = input(13, "WT Average Length") // WaveTrend MA Params wtMA = input(defval="EMA", title="WT MA Type", options=["RMA", "SMA", "EMA", "WMA"]) wtMA1 = input(defval="EMA", title="WT MA Type 1", options=["RMA", "SMA", "EMA", "WMA"]) wtMA2 = input(defval="EMA", title="WT MA Type 2", options=["RMA", "SMA", "EMA", "WMA"]) wtMA3 = input(defval="SMA", title="WT MA Type 3", options=["RMA", "SMA", "EMA", "WMA"]) // WaveTrend Overbought & Oversold lines obLevel = input(53, "WT Overbought Level 1") obLevel2 = input(60, "WT Overbought Level 2") osLevel = input(-53, "WT Oversold Level 1") osLevel2 = input(-60, "WT Oversold Level 2") osLevel3 = input(-80, "WT Oversold Level 3") // WaveTrend MA Source ap = input(ohlc4, "WaveTrend MA Source") // WaveTrend MA Length sp = input(3, "WaveTrend MA Length") // RSI+MFI Period rsiMFIperiod = input(60, "RSI+MFI Period") MFRSIMA = input(defval="SMA", title="MFRSIMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA"]) //RSI+MFI Area multiplier rsiMFIMultiplier = input(150, "RSI+MFI Area multiplier") // Colors colorRed = #ff0000 colorPurple = #da00ff colorGreen = #03ff00 colorOrange = color.orange colorWT1 = #8ec7fb colorWT2 = #1353ac // Divergence WT WTShowDiv = input(true, 'Show WT Divergences') WTDivOBLevel = input(35, title="WT Bearish Divergence min") WTDivOSLevel = input(-65, title="WT Bullish Divergence min") // Divergence RSI RSIShowDiv = input(false, 'Show RSI Divergences') RSIDivOBLevel = input(60) RSIDivOSLevel = input(30) // RSI Levels RSIOversold = input(30, "RSI Oversold", input.integer, minval=50, maxval=100) RSIOverbought = input(60, "RSI Overbought", input.integer, minval=0, maxval=50) // } PARAMETERS // CALCULATE INDICATORS { // RSI + MFI Area candleValue = (close - open) / (high - low) MVC = ma(MFRSIMA, candleValue * rsiMFIMultiplier, rsiMFIperiod) color_area = MVC > 0 ? color.green : color.red // RSI up = rma(max(change(close), 0), 14) down = rma(-min(change(close), 0), 14) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) rsiColor = rsi <= RSIOversold Enoch, [14.10.19 19:45] ? color.green : rsi >= RSIOverbought ? color.red : color.purple // Calculates WaveTrend esa = ma(wtMA, ap, n1) de = ma(wtMA1, abs(ap - esa), n1) ci = (ap - esa) / (0.015 * de) tci = ma(wtMA2, ci, n2) wt1 = tci wt2 = ma(wtMA3, wt1, sp) // VWAP vwap_area = wt1 - wt2 // WaveTrend Conditions WTCross = cross(wt1, wt2) WTCrossUp = wt2 - wt1 <= 0 WTCross_last = cross(wt1[2], wt2[2]) WTCrossUp_last = wt2[2] - wt1[2] <= 0 WTCrossDown_last = wt2[2] - wt1[2] >= 0 WTCrossDown = wt2 - wt1 >= 0 WTOverSold = wt2 <= osLevel WTOverBought = wt2 >= obLevel // WT Divergence WTFractal_top = f_fractalize(wt2) > 0 and wt2[2] >= WTDivOBLevel ? wt2[2] : na WTFractal_bot = f_fractalize(wt2) < 0 and wt2[2] <= WTDivOSLevel ? wt2[2] : na WTHigh_prev = valuewhen(WTFractal_top, wt2[2], 0)[2] WTHigh_price = valuewhen(WTFractal_top, high[2], 0)[2] WTLow_prev = valuewhen(WTFractal_bot, wt2[2], 0)[2] WTLow_price = valuewhen(WTFractal_bot, low[2], 0)[2] WTRSI_prev = valuewhen(WTFractal_bot, rsi[2], 0)[2] bearWTSignal = WTFractal_top and high[2] > WTHigh_price and wt2[2] < WTHigh_prev bullWTSignal = WTFractal_bot and low[2] < WTLow_price and wt2[2] > WTLow_prev WTCol1 = bearWTSignal ? colorRed : na WTCol2 = bullWTSignal ? #00FF00EB : na WTGoldBuy = WTLow_prev <= osLevel3 and WTRSI_prev < 20 and bullWTSignal // RSI Divergence RSIFractal_top = f_fractalize(rsi) > 0 and rsi >= RSIDivOBLevel ? rsi[2] : na RSIFractal_bot = f_fractalize(rsi) < 0 and rsi <= RSIDivOSLevel ? rsi[2] : na RSIHigh_prev = valuewhen(RSIFractal_top, rsi[2], 0)[2] RSIHigh_price = valuewhen(RSIFractal_top, high[2], 0)[2] RSILow_prev = valuewhen(RSIFractal_bot, rsi[2], 0)[2] RSILow_price = valuewhen(RSIFractal_bot, low[2], 0)[2] bearRSISignal = RSIFractal_top and high[2] > RSIHigh_price and rsi[2] < RSIHigh_prev bullRSISignal = RSIFractal_bot and low[2] < RSILow_price and rsi[2] > RSILow_prev RSICol1 = bearRSISignal ? #ff0000: na RSICol2 = bullRSISignal ? #00FF00EB : na // Small Circles WT Cross signalColor = wt2 - wt1 > 0 ? color.red : color.lime // Buy signal. buySignal = WTCross and WTCrossUp and WTOverSold divBuySignal = WTCross_last and WTCrossUp_last and ((WTShowDiv ? bullWTSignal : false) or (RSIShowDiv ? bullRSISignal : false)) buySignalColor = buySignal ? color.new(colorGreen, 65) : na // Sell signal sellSignal = WTCross and WTCrossDown and WTOverBought divSellSignal = WTCross_last and WTCrossDown_last and (bearWTSignal) sellSignalColor = sellSignal ? color.new(colorRed, 65) : na // Gold Buy plotWTGoldBuy = WTCrossUp_last and WTGoldBuy // } CALCULATE INDICATORS // DRAW { // 0 Line plot(0, title="0 Line", color=color.gray) // Draw Overbought & Oversold lines plot(obLevel, title="Over Bought Level 1", color=color.gray, linewidth=2, style=plot.style_stepline, transp=15) plot(obLevel2, title="Over Bought Level 2", color=color.gray, style=plot.style_cross, transp=60) plot(osLevel, title="Over Sold Level 1", color=color.gray, linewidth=2, style=plot.style_stepline, transp=15) plot(osLevel2, title="Over Sold Level 2", color=color.gray, style=plot.style_cross, transp=60) // Divergences plot(series = WTFractal_top and WTShowDiv ? wt2[2] : na, title='WT Bearish Divergence', color=WTCol1, linewidth=2, transp=65, offset=-2) plot(series = WTFractal_bot and WTShowDiv ? wt2[2] : na, title='WT Bullish Divergence', color=WTCol2, linewidth=2, transp=65, offset=-2) plot(series = RSIFractal_top and RSIShowDiv ? rsi[2] : na, title='RSI Bearish Divergence', color=RSICol1, linewidth=1, transp=65, offset=-2) plot(series = RSIFractal_bot and RSIShowDiv? rsi[2] : na, title='RSI Bullish Divergence', color=RSICol2, linewidth=1, transp=65, offset=-2) // RSI plot(rsi, title="RSI", color=rsiColor, linewidth=1, transp=35) // RSI + MFI AREA RSIMFIplot = plot(MVC, title="RSI+MFI Area", color=color_area, transp=35) fill(RSIMFIplot, plot(0), color_area, transp=45) // RSI + MFI BAR rsimfiBarTopLine = plot(-95, title="RSI+MFI Bar TOP Line", color=color.black, transp=100) rsimfiBarBottomLine = plot(-105, title="RSI+MFI Bar BOTTOM Line", color=color. Enoch, [14.10.19 19:45] black, transp=100) fill(rsimfiBarTopLine, rsimfiBarBottomLine, color=color_area, transp=65) // WT Area 1 plot(wt1, style=plot.style_area, title="WT Wave 1", color=colorWT1, transp=0) // WT Area 2 plot(wt2, style=plot.style_area, title="WT Wave 2", color=colorWT2, transp=10) // VWAP plot(vwap_area, title="VWAP", color=color.yellow, style=plot.style_area, transp=35) // Circles plot(WTCross ? wt2 : na, title="Buy and sell signals", color=signalColor, style=plot.style_circles, linewidth=3, transp=35) // Small circles plotshape(buySignal ? -100 : na, title="Big buy signal", color=buySignalColor, style=shape.circle, location=location.absolute, size=size.tiny) // Big green circle, oversold plotshape(divBuySignal ? -120 : na, title="Big buy signal", color=colorPurple, style=shape.triangleup, offset=-2, location=location.absolute, size=size.tiny) // Big purple triangle, bullish divergence plotshape(divBuySignal ? -100 : na, title="Divergence buy signal", color=color.new(colorGreen, 0), style=shape.circle, offset=-2, location=location.absolute, size=size.tiny) // Big green circle divergence, bullish divergence plotshape(plotWTGoldBuy ? -100 : na, title="Big short signal", color=color.orange, style=shape.circle, transp=25, offset=-2, location=location.absolute, size=size.tiny) plotshape(sellSignal ? 100 : na, title="Big short signal", color=sellSignalColor, style=shape.circle, location=location.absolute, size=size.tiny) // Big green circle, overbought plotshape(divSellSignal ? 120 : na, title="Big short signal", color=colorPurple, style=shape.triangledown, offset=-2, location=location.absolute, size=size.tiny) // Big purple circle, bearish divergence plotshape(divSellSignal ? 100 : na, title="Divergence short signal", color=color.new(colorRed, 0), style=shape.circle, offset=-2, location=location.absolute, size=size.tiny) // Big purple circle, bearish divergence // } DRAW // ALERTS { // BUY alertcondition(buySignal != 0, "Buy Signal (Big green circle)", "Green circle WaveTrend Oversold") alertcondition(divBuySignal != 0, "Buy Signal (Big green circle + Div)", "Buy signal & WT Bullish Divergence & WT Overbought ") alertcondition(plotWTGoldBuy != 0, "GOLD Buy Signal (Big GOLDEN circle)", "Green & GOLD circle WaveTrend Overbought") // SELL alertcondition(sellSignal != 0, "Sell Signal (Big red circle)", "Red Circle WaveTrend Overbought") alertcondition(divSellSignal != 0, "Sell Signal (Big red circle + Div)", "Buy signal & WT Bearish Divergence & WT Overbought ") // }