Yauheni

YK Fuller Bars

The script highlights "Fuller's pins" and generates alerts when these bars are appearing
オープンソーススクリプト

TradingViewの精神に則り、このスクリプトの作者は、トレーダーが理解し検証できるようにオープンソースで公開しています。作者に敬意を表します!無料で使用することができますが、このコードを投稿で再利用するには、ハウスルールに準拠する必要があります。 お気に入りに登録してチャート上でご利用頂けます。

免責事項

これらの情報および投稿は、TradingViewが提供または保証する金融、投資、取引、またはその他の種類のアドバイスや推奨を意図したものではなく、またそのようなものでもありません。詳しくは利用規約をご覧ください。

チャートでこのスクリプトを利用したいですか?
study("YK Fuller Bars", overlay=true)

pTail = input(title="Tail (default 45), %", type=integer, defval=45,  minval=0, maxval=100)
tail = pTail * 0.01
tail1 = 1 - tail

ema1Value = input(title="EMA (default 8)", type=integer, defval=8,  minval=1)
ema2Value = input(title="EMA (default 21)", type=integer, defval=21,  minval=1)

minRlDistance = input(title="Minimum distance from Pin-Bar to the round level", type=float, defval=0,  minval=0)
floatCount = input(title="The count of digits after the decimal point (for example, 3 - for GBPJPY, 5 - for EURUSD )", type=integer, defval=5,  minval=3, maxval=5)

rDelimeter = (floatCount == 3) ? 1000 : (floatCount == 4 ? 10000 : 100000)

intRoundLevel = close * rDelimeter
intRemainder = intRoundLevel % 1000
toRound = (intRemainder >= 500) ? 1000 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
rlDistance = abs(close - roundLevel)

showRl = input(title="Show round levels?", type=bool, defval=false)
roundLevelPlot = iff(showRl, roundLevel, na)
plot(roundLevelPlot, title='Round Level', color=lime, style=circles, linewidth=2)

iIb = input(title="Ignore inside bars?", type=bool, defval=true)
insideBar = iIb and 
            ((high <= high[1] and 
            low >= low[1]) 
            or
            (high <= high[2] and 
            low >= low[2] 
            and 
            high[1] <= high[2] and 
            low[1] >= low[2]) 
            or
            (high <= high[3] and 
            low >= low[3]
            and 
            high[2] <= high[3] and 
            low[2] >= low[3]
            and 
            high[1] <= high[3] and 
            low[1] >= low[3])
            or
            (high <= high[4] and 
            low >= low[4]
            and 
            high[3] <= high[4] and 
            low[3] >= low[4]
            and 
            high[2] <= high[4] and 
            low[2] >= low[4]
            and 
            high[1] <= high[4] and 
            low[1] >= low[4])
            or
            (high <= high[5] and 
            low >= low[5]
            and 
            high[4] <= high[5] and 
            low[4] >= low[5]
            and 
            high[3] <= high[5] and 
            low[3] >= low[5]
            and 
            high[2] <= high[5] and 
            low[2] >= low[5]
            and 
            high[1] <= high[5] and 
            low[1] >= low[5])
            or
            (high <= high[6] and 
            low >= low[6]
            and 
            high[5] <= high[6] and 
            low[5] >= low[6]
            and 
            high[4] <= high[6] and 
            low[4] >= low[6]
            and 
            high[3] <= high[6] and 
            low[3] >= low[6]
            and 
            high[2] <= high[6] and 
            low[2] >= low[6]
            and 
            high[1] <= high[6] and 
            low[1] >= low[6])
            or
            (high <= high[7] and 
            low >= low[7]
            and 
            high[6] <= high[7] and 
            low[6] >= low[7]
            and 
            high[5] <= high[7] and 
            low[5] >= low[7]
            and 
            high[4] <= high[7] and 
            low[4] >= low[7]
            and 
            high[3] <= high[7] and 
            low[3] >= low[7]
            and 
            high[2] <= high[7] and 
            low[2] >= low[7]
            and 
            high[1] <= high[7] and 
            low[1] >= low[7])
            or
            (high <= high[8] and 
            low >= low[8]
            and 
            high[7] <= high[8] and 
            low[7] >= low[8]
            and 
            high[6] <= high[8] and 
            low[6] >= low[8]
            and 
            high[5] <= high[8] and 
            low[5] >= low[8]
            and 
            high[4] <= high[8] and 
            low[4] >= low[8]
            and 
            high[3] <= high[8] and 
            low[3] >= low[8]
            and 
            high[2] <= high[8] and 
            low[2] >= low[8]
            and 
            high[1] <= high[8] and 
            low[1] >= low[8]) 
            or
            (high <= high[9] and 
            low >= low[9]
            and 
            high[8] <= high[9] and 
            low[8] >= low[9]
            and 
            high[7] <= high[9] and 
            low[7] >= low[9]
            and 
            high[6] <= high[9] and 
            low[6] >= low[9]
            and 
            high[5] <= high[9] and 
            low[5] >= low[9]
            and 
            high[4] <= high[9] and 
            low[4] >= low[9]
            and 
            high[3] <= high[9] and 
            low[3] >= low[9]
            and 
            high[2] <= high[9] and 
            low[2] >= low[9]
            and 
            high[1] <= high[9] and 
            low[1] >= low[9]) 
            or
            (high <= high[10] and 
            low >= low[10]
            and 
            high[9] <= high[10] and 
            low[9] >= low[10]
            and 
            high[8] <= high[10] and 
            low[8] >= low[10]
            and 
            high[7] <= high[10] and 
            low[7] >= low[10]
            and 
            high[6] <= high[10] and 
            low[6] >= low[10]
            and 
            high[5] <= high[10] and 
            low[5] >= low[10]
            and 
            high[4] <= high[10] and 
            low[4] >= low[10]
            and 
            high[3] <= high[10] and 
            low[3] >= low[10]
            and 
            high[2] <= high[10] and 
            low[2] >= low[10]
            and 
            high[1] <= high[10] and 
            low[1] >= low[10])) 
            ? true : false
            
emaCrossing = input(title="ЕМА crossing?", type=bool, defval=true)

ema1 = ema(close, ema1Value)
ema2 = ema(close, ema2Value)

height = high - low
bodyHeight = abs(open - close)

fakeHighUp = high - close
fakeLowUp = open - low

pinHeightUp = height - min(fakeHighUp, fakeLowUp)

getPinBarUp(ema1, ema2) => open < close and
           ((rlDistance > minRlDistance and
           fakeHighUp * 2 < fakeLowUp and 
           bodyHeight > fakeHighUp and 
           ema1 >= low and
           close > ema1 and
           open > ema1 and
           close > ema2 and
           open > ema2 and
           ((emaCrossing and ema1 > ema2) or emaCrossing == false) and
           open > (close - pinHeightUp * tail1) and
           close > (high - pinHeightUp * tail1)) 
           or 
           (rlDistance > minRlDistance and
           fakeHighUp > fakeLowUp * 2 and
           bodyHeight > fakeLowUp and
           high >= ema1 and
           close < ema1 and
           close < ema2 and
           ((emaCrossing and ema1 < ema2) or emaCrossing == false) and
           open < (high - pinHeightUp * tail) and
           close < (high - pinHeightUp * tail))) 
           ? true : false
           
pinBarUp = getPinBarUp(ema1, ema2)
          
fakeHighDn = high - open
fakeLowDn = close - low

pinHeightDn = height - min(fakeHighDn, fakeLowDn)

getPinBarDn(ema1, ema2) => open > close and
           ((rlDistance > minRlDistance and
           fakeHighDn > fakeLowDn * 2 and
           bodyHeight > fakeLowDn and
           high >= ema1 and
           close < ema1 and
           open < ema1 and
           close < ema2 and
           open < ema2 and
           ((emaCrossing and ema1 < ema2) or emaCrossing == false) and
           open < (high - pinHeightDn * tail) and
           close < (high - pinHeightDn * tail))
           or 
           (rlDistance > minRlDistance and
           fakeHighDn * 2 < fakeLowDn and
           bodyHeight > fakeHighDn and
           ema1 >= low and
           ema1 < close and
           ema2 < close and
           ((emaCrossing and ema1 > ema2) or emaCrossing == false) and 
           open > (open - pinHeightDn * tail1) and
           close > (open - pinHeightDn * tail1)))
           ? true : false

pinBarDn = getPinBarDn(ema1, ema2)

highlightBars = input(title="Highlight bars", type=bool, defval=true)
enableAlerts = input(title="Enable alerts", type=bool, defval=true)

 
//Temporary fix for alerts  
hl2Change = ((pinBarUp or pinBarDn) and enableAlerts and insideBar == false) ? 999 : -999
plot(hl2 + hl2Change, title='Alert', style=area, transp=100, editable=false)


barcolor((pinBarUp and highlightBars and insideBar == false) ? lime : na, title="Bullish bar")
barcolor((pinBarDn and highlightBars and insideBar == false) ? red : na, title="Bearish bar")