# HorizonalLines_Multiple_Percentage
input mode_timeframe = {default input_agg, chart_agg};
input start_percentage = .5;
input price = FundamentalType.CLOSE;
input offset = 1;
input aggregationPeriod = AggregationPeriod.DAY;
def mode_price = if mode_timeframe == mode_timeframe.input_agg
then Fundamental(price, period = aggregationPeriod)[offset]
else Fundamental(price)[offset];
def zero_price = if IsNaN(close) then zero_price[1] else mode_price;
plot zero = if !IsNaN(close) then Double.NaN else zero_price;
plot pz1 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 1;
plot pz2 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 2 ;
plot pz3 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 3;
plot pz4 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 4;
plot pz5 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 5;
plot pz6 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 6;
plot pz7 = if !IsNaN(close) then Double.NaN else zero_price + Round(zero_price * (start_percentage / 100)) * 7;
plot pz1_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 1;
plot pz2_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 2 ;
plot pz3_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 3;
plot pz4_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 4;
plot pz5_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 5;
plot pz6_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 6;
plot pz7_ = if !IsNaN(close) then Double.NaN else zero_price - Round(zero_price * (start_percentage / 100)) * 7;
input bubble = yes;
input bubblemover = 3;
def mover = bubble and IsNaN(close[bubblemover]) and !IsNaN(close[bubblemover + 1]);
AddChartBubble(mover, zero, "0%", zero.TakeValueColor());
AddChartBubble(mover, pz1, AsPercent(start_percentage / 100 * 1), pz1.TakeValueColor());
AddChartBubble(mover, pz2, AsPercent(start_percentage / 100 * 2), pz2.TakeValueColor());
AddChartBubble(mover, pz3, AsPercent(start_percentage / 100 * 3), pz3.TakeValueColor());
AddChartBubble(mover, pz4, AsPercent(start_percentage / 100 * 4), pz4.TakeValueColor());
AddChartBubble(mover, pz5, AsPercent(start_percentage / 100 * 5), pz5.TakeValueColor());
AddChartBubble(mover, pz6, AsPercent(start_percentage / 100 * 6), pz6.TakeValueColor());
AddChartBubble(mover, pz7, AsPercent(start_percentage / 100 * 7), pz7.TakeValueColor());
AddChartBubble(mover, pz1_, AsPercent(-start_percentage / 100 * 1), pz1_.TakeValueColor());
AddChartBubble(mover, pz2_, AsPercent(-start_percentage / 100 * 2), pz2_.TakeValueColor());
AddChartBubble(mover, pz3_, AsPercent(-start_percentage / 100 * 3), pz3_.TakeValueColor());
AddChartBubble(mover, pz4_, AsPercent(-start_percentage / 100 * 4), pz4_.TakeValueColor());
AddChartBubble(mover, pz5_, AsPercent(-start_percentage / 100 * 5), pz5_.TakeValueColor());
AddChartBubble(mover, pz6_, AsPercent(-start_percentage / 100 * 6), pz6_.TakeValueColor());
AddChartBubble(mover, pz7_, AsPercent(-start_percentage / 100 * 7), pz7_.TakeValueColor());
#