Ищет ситуации, когда базы на круглых уровнях пробиваются. В этом случае сигнал показывается до тех пор, пока цена не уходит слишком далеко от пробития. Указать нужное расстояние ухода цены можно в дополнительной настройке — Максимальное отклонения для пробития.
#BaseBreakout.Ищет только что пробитые базы из N последних свечей, на уровнях 50 и 100 центов.
#Cнять галочку Include Extended Session
def iDiff = 0.01; # максимальное отклонение для базы в центах
def iDiff2 = 0.40; # максимальное отклонение для пробития в центах
def iBars = 4; #число баров для просмотра базы
def iLowest = lowest(low,iBars);
def iHighest = highest(high,iBars);
def bBaseLow = fold Lbar = 0 to iBars with Lsumm=1 do if ((low[Lbar]-iLowest)<=iDiff) then Lsumm*1 else Lsumm*0;
def bBaseHigh = fold Hbar = 0 to iBars with Hsumm=1 do if ((iHighest-high[Hbar])<=iDiff) then Hsumm*1 else Hsumm*0;
def iFigureLow = fold FLbar = 1 to iBars+1 with FLsumm do if (low[FLbar] == (Floor(low[FLbar]*2))/2) then FLsumm+1 else FLsumm;
def iFigureHigh = fold FHbar = 1 to iBars+1 with FHsumm do if (high[FHbar] == (Ceil(high[FHbar]*2))/2) then FHsumm+1 else FHsumm;
def bBreakoutLow = (iLowest — close) <= iDiff2 and (iLowest — close)>0;
def bBreakoutHigh = (close — iHighest) <= iDiff2 and (close — iHighest)>0;
plot bBase = if (bBaseLow and iFigureLow and bBreakoutLow) then 1 else if (bBaseHigh and iFigureHigh and bBreakoutHigh) then 2 else 100;
AssignBackgroundColor (if (bBase == 2) then Color.LIGHT_GREEN else if (bBase == 1) then Color.LIGHT_RED else Color.black);
bBase.AssignValueColor (if (bBase == 100) then Color.white else Color.black);