|
glendale ca usa
Posts: 97 since Sep 2017
Thanks Given: 11
Thanks Received: 88
|
declare lower;
###MTF_RSI###5MIN, 10MIN, 15,MIN
###############################################
input length2 = 4;
input over_Bought2 = 75;
input over_Sold2 = 25;
input averageType2 = AverageType.WILDERS;
INPUT PRICE = close;
def NetChgAvg2 = MovingAverage(averageType2, price - price[1], length2);
def TotChgAvg2 = MovingAverage(averageType2, AbsValue(price - price[1]), length2);
def ChgRatio = if TotChgAvg2 != 0 then NetChgAvg2 / TotChgAvg2 else 0;
##
plot RSI2 = 50 * (ChgRatio + 1);
#plot OverSold30 = over_Sold30;
#plot OverBough30 = over_Bought30;
RSI2.DefineColor("OverBought", Color.LIGHT_ORANGE);
RSI2.DefineColor("Normal", GetColor(9));
RSI2.DefineColor("OverSold", Color.LIGHT_RED);
RSI2.AssignValueColor(if RSI2 > over_Bought2 then RSI2.Color("OverBought") else if RSI2 < over_Sold2 then RSI2.Color("OverSold") else RSI2.Color("Normal"));
#OverSold30.SetDefaultColor(GetColor(8));
#OverBough30.SetDefaultColor(GetColor(8));
RSI2.SetLineWeight(4);
#plot Zero = 0;
RSI2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_DOWN);
#############################################
input length30 = 4;
input over_Bought30 = 75;
input over_Sold30 = 25;
input averageType30 = AverageType.WILDERS;
def NetChgAvg30 = MovingAverage(averageType30, close(period = AggregationPeriod.FIVE_MIN) - close(period = AggregationPeriod.FIVE_MIN)[1], length30);
def TotChgAvg30 = MovingAverage(averageType30, AbsValue(close(period = AggregationPeriod.FIVE_MIN) - close(period = AggregationPeriod.FIVE_MIN)[1]), length30);
def ChgRatio30 = if TotChgAvg30 != 0 then NetChgAvg30 / TotChgAvg30 else 0;
plot RSI30 = 50 * (ChgRatio30 + 1);
#plot OverSold30 = over_Sold30;
#plot OverBough30 = over_Bought30;
RSI30.DefineColor("OverBought", Color.LIGHT_ORANGE);
RSI30.DefineColor("Normal", GetColor(9));
RSI30.DefineColor("OverSold", Color.LIGHT_RED);
RSI30.AssignValueColor(if RSI30 > over_Bought30 then RSI30.Color("OverBought") else if RSI30 < over_Sold30 then RSI30.Color("OverSold") else RSI30.Color("Normal"));
#OverSold30.SetDefaultColor(GetColor(8));
#OverBough30.SetDefaultColor(GetColor(8));
RSI30.SetLineWeight(4);
plot Zero = 0;
RSI30.SetPaintingStrategy(PaintingStrategy.bOOLEAN_WEDGE_UP);
###
input length15 = 4;
input over_Bought15 = 75;
input over_Sold15 = 25;
input averageType15 = AverageType.WILDERS;
def NetChgAvg15 = MovingAverage(averageType15, close(period = AggregationPeriod.TEN_MIN) - close(period = AggregationPeriod.TEN_MIN)[1], length15);
def TotChgAvg15 = MovingAverage(averageType15, AbsValue(close(period = AggregationPeriod.TEN_MIN) - close(period = AggregationPeriod.TEN_MIN)[1]), length15);
def ChgRatio15 = if TotChgAvg15 != 0 then NetChgAvg15 / TotChgAvg15 else 0;
plot RSI15 = 50 * (ChgRatio15 + 1);
#plot OverSold15 = over_Sold15;
#plot OverBough15 = over_Bought15;
RSI15.DefineColor("OverBought", Color.LIGHT_ORANGE);
RSI15.DefineColor("Normal", GetColor(9));
RSI15.DefineColor("OverSold", Color.LIGHT_RED);
RSI15.AssignValueColor(if RSI15 > over_Bought15 then RSI15.Color("OverBought") else if RSI15 < over_Sold15 then RSI15.Color("OverSold") else RSI15.Color("Normal"));
#OverSold15.SetDefaultColor(GetColor(8));
#OverBough15.SetDefaultColor(GetColor(8));
RSI15.SetLineWeight(4);
RSI15.SetPaintingStrategy(PaintingStrategy.booLEAN_POINTS);
###
###
input length31 = 4;
input over_Bought31 = 75;
input over_Sold31 = 25;
input averageType31 = AverageType.WILDERS;
def NetChgAvg31 = MovingAverage(averageType31, close(period = AggregationPeriod.FIFTEEN_MIN) - close(period = AggregationPeriod.FIFTEEN_MIN)[1], length30);
def TotChgAvg31 = MovingAverage(averageType31, AbsValue(close(period = AggregationPeriod.FIFTEEN_MIN) - close(period = AggregationPeriod.FIFTEEN_MIN)[1]), length31);
def ChgRatio31 = if TotChgAvg31 != 0 then NetChgAvg31 / TotChgAvg31 else 0;
plot RSI31 = 50 * (ChgRatio31 + 1);
#plot OverSold31 = over_Sold31;
#plot OverBough31 = over_Bought31;
RSI31.DefineColor("OverBought", Color.LIGHT_ORANGE);
RSI31.DefineColor("Normal", GetColor(9));
RSI31.DefineColor("OverSold", Color.LIGHT_RED);
RSI31.AssignValueColor(if RSI31 > over_Bought31 then RSI31.Color("OverBought") else if RSI31 < over_Sold31 then RSI31.Color("OverSold") else RSI15.Color("Normal"));
#OverSold31.SetDefaultColor(GetColor(8));
#OverBough31.SetDefaultColor(GetColor(8));
RSI31.SetLineWeight(2);
RSI31.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
##############################################
######TREND LINE##############################
###############################################
input fastLengthTrend = 7;#7
input slowLengthTrend = 15;#15
input trendLength = 4;#4
input noiseType = {default linear, squared};
input noiseLength = 250;
input correctionFactor = 2;
assert(trendLength > 0, "'trend length' must be positive: " + trendLength);
assert(correctionFactor > 0, "'correction factor' must be positive: " + correctionFactor);
def smf = 2 / (1 + trendLength);
def reversal = TrendPeriods(fastLengthTrend, slowLengthTrend);
def cpc = if isNaN(reversal[1]) then 0 else if reversal[1] != reversal then 0 else cpc[1] + close - close[1];
def trend = if isNaN(reversal[1]) then 0 else if reversal[1] != reversal then 0 else trend[1] * (1 - smf) + cpc * smf;
def noise;
def diff = AbsValue(cpc - trend);
switch(noiseType) {
case linear:
noise = correctionFactor * Average(diff, noiseLength);
case squared:
noise = correctionFactor * Sqrt(Average(diff*diff, noiseLength));
}
plot TQ = if noise == 0 then 0 else trend / noise;
#plot ZeroLine = 0;
TQ.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
TQ.SetLineWeight(3);
TQ.DefineColor("Positive", Color.UPTICK);
TQ.DefineColor("Negative", Color.DOWNTICK);
TQ.AssignValueColor(if TQ > 0 then TQ.color("Positive") else TQ.color("Negative"));
#ZeroLine.SetDefaultColor(GetColor(5));
###############################################
|