add pinbar
This commit is contained in:
80
pinbar.pine
Normal file
80
pinbar.pine
Normal file
@@ -0,0 +1,80 @@
|
||||
//@version=5
|
||||
indicator("Pinbar trend", overlay=true)
|
||||
|
||||
// Strategy Settings
|
||||
// strategy("Pinbar Trend Strategy", overlay=true)
|
||||
|
||||
// Parameters
|
||||
threshold = 0.6667
|
||||
riskRewardRatio = 2
|
||||
|
||||
// Calculate the length of upper and lower wicks
|
||||
upperWickLength = high - math.max(close, open)
|
||||
lowerWickLength = math.min(close, open) - low
|
||||
|
||||
// Input for EMA length
|
||||
emaFastInput = input.int(10, title="EMA Fast", minval=1)
|
||||
emaMidInput = input.int(20, title="EMA Mid", minval=1)
|
||||
emaSlowInput = input.int(60, title="EMA Slow", minval=1)
|
||||
emafast = ta.ema(close, emaFastInput)
|
||||
emamid = ta.ema(close, emaMidInput)
|
||||
emaslow = ta.ema(close, emaSlowInput)
|
||||
|
||||
// Input for lookback period to calculate the slope of EMA
|
||||
// lookbackPeriod = input.int(5, title="Lookback Period for EMA Slope", minval=1)
|
||||
|
||||
// closeSlope = (close - close[lookbackPeriod]) / lookbackPeriod
|
||||
|
||||
// Calculate total range of the bar
|
||||
totalRange = high - low
|
||||
|
||||
// Conditions for bearish and bullish signal bars
|
||||
isBearishSignalBar = (upperWickLength >= threshold * totalRange and upperWickLength > lowerWickLength)
|
||||
isBullishSignalBar = (lowerWickLength >= threshold * totalRange and lowerWickLength > upperWickLength)
|
||||
|
||||
// Condition to check if the bar touches the EMA line
|
||||
// isTouchingEMA = (emafast >= low and emafast <= high) or (emamid >= low and emamid <= high)
|
||||
isTouchingEMA = (isBearishSignalBar and ((emafast >= math.max(close, open) and emafast <= high) or (emamid >= math.max(close, open) and emamid <= high))) or (isBullishSignalBar and ((emafast <= math.min(close, open) and emafast >= low) or (emamid <= math.min(close, open) and emamid >= low)))
|
||||
|
||||
// Condition to check if the bar is below or above the EMA
|
||||
isBelowEMA = high < emafast
|
||||
isAboveEMA = low > emafast
|
||||
|
||||
// Final conditions to highlight bars
|
||||
highlightBearishBar = isBearishSignalBar and (isTouchingEMA)
|
||||
highlightBullishBar = isBullishSignalBar and (isTouchingEMA)
|
||||
|
||||
weakHighlightBearishBar = isBearishSignalBar and (not isTouchingEMA)
|
||||
weakHighlightBullishBar = isBullishSignalBar and (not isTouchingEMA)
|
||||
|
||||
|
||||
|
||||
// Plotting the bars
|
||||
barcolor(highlightBearishBar ? color.yellow : na, title = "Bearish bar color")
|
||||
barcolor(highlightBullishBar ? color.yellow : na, title = "Bullish bar color")
|
||||
barcolor(weakHighlightBearishBar ? color.rgb(33, 150, 243, 40) : na, title = "Weak bearish bar color")
|
||||
barcolor(weakHighlightBullishBar ? color.rgb(33, 150, 243, 40): na, title = "Weak bullish bar color")
|
||||
|
||||
// Adding markers for bearish and bullish bars
|
||||
plotchar(series=highlightBearishBar, location=location.abovebar, char='▼', color=color.red, size=size.tiny, title = "Bearish indicator")
|
||||
plotchar(series=highlightBullishBar, location=location.belowbar, char='▲', color=color.green, size=size.tiny, title = "Bullish indicator")
|
||||
plotchar(series=weakHighlightBearishBar, location=location.abovebar, char='▼', color=color.rgb(255,82, 82, 60), size=size.tiny, title = "Weak bearish")
|
||||
plotchar(series=weakHighlightBullishBar, location=location.belowbar, char='▲', color=color.rgb(76, 175, 80, 60), size=size.tiny, title = "Weak bullish")
|
||||
|
||||
|
||||
// Adding alerts
|
||||
alertcondition(highlightBearishBar or highlightBullishBar, title="Pinbar Signal", message='{"ticker": "{{ticker}}", "exchange": "{{exchange}}", "interval": "{{interval}}"}')
|
||||
|
||||
// Trading strategy for bullish signal bars
|
||||
// if (highlightBullishBar and closeSlope > 0)
|
||||
// longStopLoss = low
|
||||
// longTakeProfit = close + (close - longStopLoss) * riskRewardRatio
|
||||
// strategy.entry("Bullish Signal", strategy.long, when=highlightBullishBar and closeSlope > 0)
|
||||
// strategy.exit("Take Profit/Stop Loss", "Bullish Signal", stop=longStopLoss, limit=longTakeProfit)
|
||||
|
||||
// // Trading strategy for bearish signal bars
|
||||
// if (highlightBearishBar and closeSlope < 0)
|
||||
// shortStopLoss = high
|
||||
// shortTakeProfit = close - (shortStopLoss - close) * riskRewardRatio
|
||||
// strategy.entry("Bearish Signal", strategy.short, when=highlightBearishBar and closeSlope < 0)
|
||||
// strategy.exit("Take Profit/Stop Loss", "Bearish Signal", stop=shortStopLoss, limit=shortTakeProfit)
|
||||
Reference in New Issue
Block a user