//@version=5
indicator("Trading Checklist", overlay=false)
// Input parameters
rsiPeriod = input.int(14, "RSI Period")
rsiOverbought = input.float(70, "RSI Overbought Level")
volumeMAperiod = input.int(50, "Volume MA Period")
priceSMAperiod = input.int(200, "Price SMA Period")
minRRRatio = input.float(2.0, "Minimum Risk:Reward Ratio")
// Calculate indicators
sma200 = ta.sma(close, priceSMAperiod)
volMA = ta.sma(volume, volumeMAperiod)
rsi = ta.rsi(close, rsiPeriod)
// Check conditions
priceAboveSMA = close > sma200
volumeAboveAvg = volume > volMA
rsiNotOverbought = rsi < rsiOverbought
// Market trend (using 50 SMA for medium-term trend)
sma50 = ta.sma(close, 50)
marketTrend = close > sma50
// Support/Resistance check (simple implementation using recent highs/lows)
highestHigh = ta.highest(high, 20)
lowestLow = ta.lowest(low, 20)
nearResistance = high >= (highestHigh * 0.98) // Within 2% of recent high
// Create score based on conditions
score = 0
score := score + (priceAboveSMA ? 1 : 0)
score := score + (volumeAboveAvg ? 1 : 0)
score := score + (rsiNotOverbought ? 1 : 0)
score := score + (marketTrend ? 1 : 0)
score := score + (not nearResistance ? 1 : 0)
// Colors for visualization
scoreColor = color.new(
score == 5 ? color.green :
score >= 3 ? color.yellow :
color.red,
20)
// Plot main panel with checklist score
plot(score, "Checklist Score", color=scoreColor, style=plot.style_columns)
hline(5, "Perfect Score", color=color.green, linestyle=hline.style_dotted)
hline(3, "Minimum Score", color=color.yellow, linestyle=hline.style_dotted)
// Plot individual conditions
plotchar(priceAboveSMA, "Above 200 SMA", "✓", location.top, priceAboveSMA ?
color.green : color.red, size=size.tiny)
plotchar(volumeAboveAvg, "Volume > Avg", "✓", location.top, volumeAboveAvg ?
color.green : color.red, size=size.tiny)
plotchar(rsiNotOverbought, "RSI < 70", "✓", location.top, rsiNotOverbought ?
color.green : color.red, size=size.tiny)
plotchar(marketTrend, "Market Trend", "✓", location.top, marketTrend ?
color.green : color.red, size=size.tiny)
plotchar(not nearResistance, "Not at Resistance", "✓", location.top, not
nearResistance ? color.green : color.red, size=size.tiny)
// Add table with detailed checklist
var table checklist = table.new(position.right, 5, 6,
bgcolor=color.new(color.black, 70))
if barstate.islast
table.cell(checklist, 0, 0, "Trading Checklist", text_color=color.white,
bgcolor=color.new(color.gray, 50))
table.cell(checklist, 0, 1, "Price > 200 SMA: " + (priceAboveSMA ? "✓" : "✗"),
text_color=priceAboveSMA ? color.green : color.red)
table.cell(checklist, 0, 2, "Volume > Avg: " + (volumeAboveAvg ? "✓" : "✗"),
text_color=volumeAboveAvg ? color.green : color.red)
table.cell(checklist, 0, 3, "RSI < 70: " + (rsiNotOverbought ? "✓" : "✗"),
text_color=rsiNotOverbought ? color.green : color.red)
table.cell(checklist, 0, 4, "Uptrend: " + (marketTrend ? "✓" : "✗"),
text_color=marketTrend ? color.green : color.red)
table.cell(checklist, 0, 5, "Clear of Resistance: " + (not nearResistance ? "✓"
: "✗"), text_color=not nearResistance ? color.green : color.red)