//@version=4 // Indicator to combines: study (title = "Golden cross", shorttitle = "GD cross", overlay = true) // --------- Inputs i_showEmas = input(defval = true, title = "=========== EMAs ============") i_maSrc = input(defval = close, title = "EMA Source") i_maFast1 = input(defval = 12, title = "EMA Fast 1") i_maFast2 = input(defval = 50, title = "EMA Fast 2") i_maLen = input(defval = 200, title = "SMA Length") i_rangeLen = input(defval = 0.618, title = "Range Length", type = input.float) i_currentT = input(defval = true, title = "Use Current Time?") i_tf = input(defval = "D", title = "Selec Diferent Timeframe", type = input.resolution) i_showCh = input(defval = false, title = "Show Channel") i_showbarCol = input(defval = true, title = "Show Bar Color") i_showAlert = input(defval = true, title = "Show Alert") // --------- Calculations f_maFast1 = ema(i_maSrc, i_maFast1) f_maFast2 = ema(i_maSrc, i_maFast2) f_maTrend = i_currentT ? sma(i_maSrc, i_maLen) : security(syminfo.tickerid, i_tf, sma(i_maSrc, i_maLen) ) f_chBasis = atr(i_maLen) * i_rangeLen f_chTop = f_maTrend + f_chBasis f_chBot = f_maTrend - f_chBasis f_range = ((open <= f_chTop) or (close <= f_chTop)) and ((open >= f_chBot) or (close >= f_chBot)) f_GCross = crossover (f_maFast2, f_maTrend) f_DCross = crossunder (f_maFast2, f_maTrend) f_dirTrend = f_range ? 0 : i_maSrc >= f_maTrend ? 1 : -1 // Set initial values f_condition = 0 f_buyCond = f_dirTrend == 1 and f_maFast1 > f_maFast2 f_sellCond = f_dirTrend == -1 and f_maFast1 < f_maFast2 f_buyCloseCo = f_dirTrend == 1 and f_maFast1 < f_maFast2 f_sellCloseC = f_dirTrend == -1 and f_maFast1 > f_maFast2 f_closeCond = f_buyCloseCo or f_sellCloseC //Conditions f_condition := f_condition[1] != 1 and f_buyCond ? 1 : f_condition[1] != -1 and f_sellCond ? -1 : f_condition[1] != 0 and f_closeCond ? 0 : nz(f_condition[1]) f_buy = f_condition == 1 and f_condition[1] != 1 f_sell = f_condition == -1 and f_condition[1] != -1 f_close = f_condition[1] != 0 and f_closeCond // --------- Colors c_orange = #f57f17 //Orange c_green = #006400 //Green c_green100 = #006400FF//Green 100% c_greenLight = #388e3c //Green Light c_red = #8B0000 //Red c_red100 = #8B0000FF//Red 100% c_redLight = #b71c1c //Red Light c_white = #ffffff //White c_gray = #808080 //Gray c_maFast = f_range ? c_orange : f_buyCloseCo ? c_orange : f_sellCloseC ? c_orange : f_dirTrend == 1 ? c_green : f_dirTrend == -1 ? c_red : na c_maTrend = f_dirTrend == 0 ? c_orange : f_dirTrend == 1 ? c_green100 : f_dirTrend == -1 ? c_red100 : na c_ch = f_dirTrend == 0 ? c_orange : f_dirTrend == 1 ? c_green : f_dirTrend == -1 ? c_red : na c_barCol = f_dirTrend == 0 ? c_orange : f_dirTrend == 1 and (open <= close) ? c_green100 : f_dirTrend == 1 and (open > close) ? c_greenLight : f_dirTrend == -1 and (open >= close) ? c_red100 : f_dirTrend == -1 and (open < close) ? c_redLight : na // --------- Plots p_maFast1 = plot( f_maFast1, title = "EMA Fast 1", color = c_maFast, linewidth = 1) p_maFast2 = plot( f_maFast2, title = "EMA Fast 2", color = c_maFast, linewidth = 2) fill( p_maFast1, p_maFast2, title = "EMAs Fill", transp = 80, color = c_maFast) plot( f_maTrend, title = "SMA Trend", color = c_maTrend, linewidth = 3) p_chTop = plot( i_showCh ? f_chTop : na, title = "Top Channel", color = c_maTrend, linewidth = 1) p_chBot = plot( i_showCh ? f_chBot : na, title = "Bottom Channel", color = c_maTrend, linewidth = 1) fill( p_chTop, p_chBot, title = "Channel", color = c_ch) // --------- Alerts plotshape( i_showAlert and f_buy ? high : na, title = "Buy Label", text = "Buy", textcolor = c_white, color = c_green100, transp = 0, style = shape.labelup, size = size.normal, location = location.belowbar) plotshape( i_showAlert and f_sell ? low : na, title = "Sell Label", text = "Sell", textcolor = c_white, color = c_red100, transp = 0, style = shape.labeldown, size = size.normal, location = location.abovebar) plotshape( i_showAlert and f_close ? close : na, title = "Close Label", text = "Close", textcolor = c_orange, color = c_orange, transp = 0, style = shape.xcross, size = size.small, location = location.absolute) plotshape( i_showAlert and f_GCross ? f_maTrend : na, title = "Golden Cross Label", text = "Golden\nCross", textcolor = c_white, color = c_orange, transp = 0, style = shape.labelup, size = size.normal, location = location.absolute) plotshape( i_showAlert and f_DCross ? f_maTrend : na, title = "Death Cross Label", text = "Death\nCross", textcolor = c_white, color = c_orange, transp = 0, style = shape.labeldown, size = size.normal, location = location.absolute) barcolor( i_showbarCol ? c_barCol : na) alertcondition( f_buy or f_sell or f_close or f_GCross or f_DCross, title = "Alert", message = "Alert") alertcondition( f_buy, title = "Buy Alert", message = "Buy Alert") alertcondition( f_sell, title = "Sell Alert", message = "Sell Alert") alertcondition( f_close, title = "Close Alert", message = "Close Alert") alertcondition( f_GCross, title = "Golden Cross Alert", message = "Golden Cross Alert") alertcondition( f_DCross, title = "Death Cross Alert", message = "Death Cross Alert")