Help matching Bjorgum Triple EMA Strat from TradingView. Here's my attempt to convert TV indicator for Bjorgum Triple EMA Strat https://www.tradingview.com/script/pr3d5mum-Bjorgum-Triple-EMA-Strat/. It is close to Tradingview but doesn't match exactly. The 5 and 9 appear to match or nearly identical but the 21 seems to be lagging the TV indicator. Thank you @tomsk and @Investingtogive for original scripting and Bjorgum for open source TV Code. Can someone check what part of code is inccorect such that it doesn't match TradingView? I also tweaked slightly to allow painting bars to be turned on or off and to be able to change cloud color and candle colors under "Globals". Thank you.
#Code below
# Credit to tomsk and Investingtogive for original coding and BJorgum for open source Trading View Indicator
# START
input length1 = 5;
input length2 = 9;
input length3 = 21;
def HAopen;
def HAhigh;
def HAlow;
def HAclose;
HAclose = (open + high + low + close) / 4;
#HAopen = CompoundValue(1, (HAopen[1] + HAclose[1]) / 2, (open[1] + close) / 2);
HAopen = CompoundValue(1, (open + close)/2, (HAopen[1] + HAclose[1]) / 2);
HAhigh = Max(high, max (HAopen, HAclose));
HAlow = Min(low, min (HAopen, HAclose));
#hahl2 = average(HAhigh, HAlow);
plot HAMA1 = Average(HAOpen, length1);
plot HAMA2 = Average(HAOpen, length2);
plot HAMA3 = Average(HAOpen, length3);
DefineGlobalColor( "Bull Candle", color.green);
DefineGlobalColor( "Bear Candle", color.red);
input paintbars = yes;
AssignPriceColor(if paintbars and close > HAMA1 and close > HAMA2 then GlobalColor ("Bull Candle") else if paintbars and close < HAMA1 and close < HAMA2 then GlobalColor ("Bear Candle") else color.current);
# AssignPriceColor(if paintbars and HAMA1 > HAMA1[1] and HAMA2 > HAMA2[1] and HAMA3 > HAMA3[1] then Color.GREEN else if paintbars and HAMA1 < HAMA1[1] and HAMA2 < HAMA2[1] and HAMA3 < HAMA3[1] then color.RED else Color.light_gray);
DefineGlobalColor( "Bull Lines", color.green);
DefineGlobalColor( "Bear Lines", color.red);
HAMA1.AssignValueColor(if HAMA1 > HAMA1[1] then GlobalColor ("Bull Lines") else if HAMA1 < HAMA1[1] then GlobalColor ("Bear Lines") else Color.GRAY);
HAMA2.AssignValueColor(if HAMA2 > HAMA2[1] then GlobalColor ("Bull Lines") else if HAMA2 < HAMA2[1] then GlobalColor ("Bear Lines") else Color.GRAY);
HAMA3.AssignValueColor(if HAMA3 > HAMA3[1] then GlobalColor ("Bull Lines") else if HAMA3 < HAMA3[1] then GlobalColor ("Bear Lines") else Color.GRAY);
# END
# --------------------------------------------------- Add Cloud -----------------------------------------------
input ShowfastCloud = yes;
DefineGlobalColor( "Bullish Fast Cloud", CreateColor(201, 255, 234));
DefineGlobalColor( "Bearish Fast Cloud", CreateColor(255, 105, 105));
AddCloud(if ShowfastCloud then HAMA1 else Double.NaN, HAMA2, GlobalColor("Bullish Fast Cloud"), GlobalColor("Bearish Fast Cloud"));
input ShowSlowCloud = yes;
DefineGlobalColor( "Bullish Slow Cloud", CreateColor(201, 255, 234));
DefineGlobalColor( "Bearish Slow Cloud", CreateColor(255, 105, 105));
AddCloud(if ShowSlowCloud then HAMA2 else Double.NaN, HAMA3, GlobalColor("Bullish Slow Cloud"), GlobalColor("Bearish Slow Cloud"));
#Code below
# Credit to tomsk and Investingtogive for original coding and BJorgum for open source Trading View Indicator
# START
input length1 = 5;
input length2 = 9;
input length3 = 21;
def HAopen;
def HAhigh;
def HAlow;
def HAclose;
HAclose = (open + high + low + close) / 4;
#HAopen = CompoundValue(1, (HAopen[1] + HAclose[1]) / 2, (open[1] + close) / 2);
HAopen = CompoundValue(1, (open + close)/2, (HAopen[1] + HAclose[1]) / 2);
HAhigh = Max(high, max (HAopen, HAclose));
HAlow = Min(low, min (HAopen, HAclose));
#hahl2 = average(HAhigh, HAlow);
plot HAMA1 = Average(HAOpen, length1);
plot HAMA2 = Average(HAOpen, length2);
plot HAMA3 = Average(HAOpen, length3);
DefineGlobalColor( "Bull Candle", color.green);
DefineGlobalColor( "Bear Candle", color.red);
input paintbars = yes;
AssignPriceColor(if paintbars and close > HAMA1 and close > HAMA2 then GlobalColor ("Bull Candle") else if paintbars and close < HAMA1 and close < HAMA2 then GlobalColor ("Bear Candle") else color.current);
# AssignPriceColor(if paintbars and HAMA1 > HAMA1[1] and HAMA2 > HAMA2[1] and HAMA3 > HAMA3[1] then Color.GREEN else if paintbars and HAMA1 < HAMA1[1] and HAMA2 < HAMA2[1] and HAMA3 < HAMA3[1] then color.RED else Color.light_gray);
DefineGlobalColor( "Bull Lines", color.green);
DefineGlobalColor( "Bear Lines", color.red);
HAMA1.AssignValueColor(if HAMA1 > HAMA1[1] then GlobalColor ("Bull Lines") else if HAMA1 < HAMA1[1] then GlobalColor ("Bear Lines") else Color.GRAY);
HAMA2.AssignValueColor(if HAMA2 > HAMA2[1] then GlobalColor ("Bull Lines") else if HAMA2 < HAMA2[1] then GlobalColor ("Bear Lines") else Color.GRAY);
HAMA3.AssignValueColor(if HAMA3 > HAMA3[1] then GlobalColor ("Bull Lines") else if HAMA3 < HAMA3[1] then GlobalColor ("Bear Lines") else Color.GRAY);
# END
# --------------------------------------------------- Add Cloud -----------------------------------------------
input ShowfastCloud = yes;
DefineGlobalColor( "Bullish Fast Cloud", CreateColor(201, 255, 234));
DefineGlobalColor( "Bearish Fast Cloud", CreateColor(255, 105, 105));
AddCloud(if ShowfastCloud then HAMA1 else Double.NaN, HAMA2, GlobalColor("Bullish Fast Cloud"), GlobalColor("Bearish Fast Cloud"));
input ShowSlowCloud = yes;
DefineGlobalColor( "Bullish Slow Cloud", CreateColor(201, 255, 234));
DefineGlobalColor( "Bearish Slow Cloud", CreateColor(255, 105, 105));
AddCloud(if ShowSlowCloud then HAMA2 else Double.NaN, HAMA3, GlobalColor("Bullish Slow Cloud"), GlobalColor("Bearish Slow Cloud"));
Last edited: