- #Plots the average weekly range over AR_period. Once the
- #weekly low is hit, a fill to the 50% AR is very likely.
- #Difficulty is to know when the daily/weekly bottom is hit
- input timeFrame = {DAY, default WEEK, MONTH};
- input timeFrame2 = {"4 hours", default DAY, WEEK,MONTH};
- #input timeFrame3 = {DAY,default WEEK};
- #input timeFrame4 = {WEEK,default MONTH};
- input AR_period = {"1", "3","10","14", default "20","120"};
- #input AR_week ={default "26"};
- #input AR_month={default "24"};
- input showOnlyToday = yes;
- def OM = open(period = timeFrame);
- def CM = close(period = timeFrame);
- def OW = open(period = timeFrame2);
- def CW = close(period = timeFrame2);
- def AvgDayRange = high(period = timeFrame2)[AR_period] - low(period = timeFrame2)[AR_period];
- #def AvgWeekRange = high(period = timeFrame3)[AR_week] - low(period = timeFrame3)[AR_week];
- #def AvgMonthRange = high(period = timeFrame4)[AR_month] - low(period = timeFrame4)[AR_month];
- def calc_AR100 = low(period = timeFrame2) + AvgDayRange;
- def calc_AR50 = low(period = timeFrame2) + 0.5 * AvgDayRange;
- def calc_AR65 = low(period = timeFrame2) + 0.65 * AvgDayRange;
- def calc_AR0 = (high(period = timeFrame2) + low(period = timeFrame2)) / 2.0;
- def calc_mAR100 = high(period = timeFrame2) - AvgDayRange;
- def calc_mAR50 = high(period = timeFrame2) - 0.5 * AvgDayRange;
- def calc_mAR65 = high(period = timeFrame2) - 0.65 * AvgDayRange;
- AddChartLabel(yes,concat(concat(concat(concat(concat("AvgDailyRange: ",AvgDayRange)," (CurrentDayRange: "), round((high(period = timeFrame2)-low(period=timeFrame2))/AvgDayRange*100,2)),"% of ADR"),AR_period));
- #AddChartLabel(yes,concat(concat(concat(concat("AvgWeeklyRange: ",AvgWeekRange)," (CurrentWeekRange: "), round((high(period = timeFrame3)-low(period=timeFrame3))/AvgWeekRange*100,2)),"% of AWR"));
- #AddChartLabel(yes,concat(concat(concat(concat("AvgMonthlyRange: ",AvgMonthRange)," (CurrentMonthRange: "), round((high(period = timeFrame4)-low(period=timeFrame4))/AvgMonthRange*100,2)),"% of AMR"));
- AddChartLabel(yes, concat("AR Projection Up ", calc_AR100));
- AddChartLabel(yes, concat("AR Projection Down ", calc_mAR100));
- plot AR100;
- plot AR50;
- plot AR0;
- plot mAR50;
- plot mAR100;
- if (showOnlyToday and !IsNaN(close(period = timeFrame2)[-1])) or
- (getAggregationPeriod() > if timeFrame == timeFrame.WEEK then AggregationPeriod.WEEK else AggregationPeriod.MONTH)
- then {
- AR100 = Double.NaN;
- AR50 = Double.NaN;
- AR0 = Double.NaN;
- mAR50 = Double.NaN;
- mAR100 = Double.NaN;
- }
- else {
- AR100 = calc_AR100;
- AR50 = calc_AR50;
- AR0 = calc_AR0;
- mAR50 = calc_mAR50;
- mAR100 = calc_mAR100;
- }
- AR0.SetDefaultColor(color.white);
- mAR100.SetDefaultColor(color.red);
- mAR50.SetDefaultColor(color.red);
- AR50.SetDefaultColor(color.blue);
- AR100.SetDefaultColor(color.blue);
- AR0.SetStyle(Curve.FIRM);
- mAR100.SetStyle(Curve.FIRM);
- mAR100.SetLineWeight(5);
- mAR50.SetStyle(Curve.FIRM);
- AR100.SetStyle(Curve.FIRM);
- AR100.SetLineWeight(5);
- AR50.SetStyle(Curve.FIRM);