найти ценовой канал после пересечения

#pinescript-v5

#pinescript-v5

Вопрос:

пожалуйста, помогите мне с этим кодом. Я хочу добиться следующего в этом предварительном условии кода

  1. Быстрый МА кроссовер Медленный МА
  2. проверьте наклон SMA (как показано на рисунке). Если наклон начинает падать, выполните следующие действия

Требования

  1. определите максимум разворота (верхнюю границу ценового канала)
  2. нижний предел-вычитание 5xATR из максимума разворота
  3. Пока цена остается в пределах этого предела, измените цвет фона
  4. когда цена выйдет за эти пределы, не показывайте ни одного
  5. Если цена вернется в этот канал, не меняйте цвет фона.
  6. делайте это только один раз за пересечение.

Код вместе с помеченной диаграммой приведен ниже. Любые предложения или помощь будут оценены по достоинству

 *******************************CODE******************************* [enter image description here][2] //@version=5 indicator(title ="Sideways Market after rally", overlay = true)  // taking user inputs slowSMAlength = input.int(title="Slow SMA Period", defval=200) fastSMAlength = input.int(title="Fast SMA Period", defval=21) ROC_lookback = input.int(title="ROC Lookback Period", defval=15)  //calculating EMAs fastSMA = ta.sma(close, fastSMAlength) slowSMA = ta.sma(close, slowSMAlength)  //***********************************************************************************************// //finding the slope and than smoothing it  slope_sma = (ta.roc(slowSMA, ROC_lookback))*63.2 //slope of slow moving average smoothed_slope = ta.sma (slope_sma, 15) // smoothing by taking Smoothed moving average of the slope isRising = ta.rising(smoothed_slope, 10) //**********************************************************************************************//    // initial conditons for long and short entry longcondition = fastSMA gt;= slowSMA // uptrend  //Entry Conditions longentry = ta.crossover(fastSMA, slowSMA) and longcondition // when fast MA cross above the slow MA and fast MA greater than slow MA   // finding ATR atr = ta.atr(14)  //variables for finding the sideways markets float phigh = 0.0  float phigh_1 = 0.0   var bool sideways = false // variables to verify that code only execute once when the condition is true  //*******************execute this piece of code only once when these condition happens***********************************************  if (long entry and long condition and isRising==0 and sideways==false) // after fast SMA crossover slow SMA and fastSMA is greater than slow SMA and slope starts falling  sideways:= true //sideways variable becomes true so that this if statement is not executed next time before condition changes  phigh := ta.pivothigh (high, 15, 5) // find the pivot high point and it will be the upper limit of the sideways channel  phigh_1 := phigh - 4*atr // find the lower limit of the channel by subtracting 4 ATRs from the pivot high  //***********************************************************************************************************************************   if (close gt; phigh or close lt; phigh_1 and sideways == true ) // if the price goes above the defined price limits (price channel) and above code is executed  sideways := false // change the state of the variable   //plot the variables  bgcolor(close lt; phigh or close gt; phigh_1 ? color.new(color.red,90) : na) // color the background as long as the price remians in the limit "phigh" and "phigh_1" plot(series=slowSMA, title="Slow EMA", color=color.blue, linewidth=2) // plot moving averages plot(series=fastSMA, title="Fast SMA", color=color.yellow, linewidth=1) // plot moving averages  ***************************************CODE END*************************************************   

введите описание изображения здесь