Help with script what am i doing wrong here?

J

joshua74133

Member
the goal is to only get arrows when the 3ema crosses the 6ema above the 50ema

Code:
input price = close;
input fastLength = 10;
input slowLength = 20;
input averageType = AverageType.EXPONENTIAL;

plot FastMA = MovingAverage(averageType, price, fastLength);
plot SlowMA = MovingAverage(averageType, price, slowLength);
FastMA.AssignValueColor(if FastMA > SlowMA then color.green else color.red);
SlowMA.AssignValueColor(if FastMA > SlowMA then color.green else color.red);

plot ArrowDN = if FastMA crosses SlowMA < ema45
then high
else double.nan;

else double.nan;
ArrowDN.SetPaintingStrategy(PaintingStrategy.Arrow_DOWN);
ArrowDN.SetLineWeight(3);
ArrowDN.SetDefaultColor(Color.Red);
 
STB

STB

Member
@joshua74133

Try This

Code:
input price = close;
input length1 = 3;
input length2 = 6;
input averageType1 = AverageType.EXPONENTIAL;
input averageType2 = AverageType.EXPONENTIAL;
input crossingType = {default above, below};

PLOT AVG1 = MovingAverage(averageType1, price, length1);
PLOT AVG2 = MovingAverage(averageType2, price, length2);
PLOT EMA50 = ExpAverage(price, 50);

PLOT SIGNAL = AVG1 CROSSES ABOVE AVG2 && AVG1 > EMA50 && AVG2 >EMA50;


signal.DefineColor("Above", GetColor(6));
signal.DefineColor("Below", GetColor(7));
signal.AssignValueColor(if crossingType == crossingType.above then signal.Color("Above") else signal.Color("Below"));

signal.SetPaintingStrategy(if crossingType == crossingType.above
    then PaintingStrategy.BOOLEAN_ARROW_UP
    else PaintingStrategy.BOOLEAN_ARROW_DOWN);
 
Last edited:
STB

STB

Member
@joshua74133
add this to the bottom if you want a paint bar.



Code:
AssignPriceColor(if signal == 1 && avg1> avg2 or avg1>avg2 && avg1 > EMA50 && avg2> EMA50  
then Color.green else if signal ==0 then Color.gray else Color.GRAY);
 
STB

STB

Member
add this
Code:
Alert( signal , " EMA Cross Over!!! ", Alert.BAR, Sound.RING);
 
Top