gogo2/Niki/niki2.pine
2024-01-12 20:06:06 +02:00

80 lines
3.2 KiB
Plaintext

//@version=5
indicator("DrNiki's Market Nuker", shorttitle="DrNiki's Market Nuker", overlay=true)
// Function to calculate RSI
rsiLength = input(14, title="RSI Length")
rsiValue = ta.rsi(close, rsiLength)
// Stochastic RSI
stochRsiLength = input(14, title="Stochastic RSI Length")
stochRsiValue = ta.stoch(close, close, close, stochRsiLength)
// Wavetrend Indicator
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
wt1 = tci
wt2 = ta.sma(wt1, 4)
// Custom implementation of On Balance Volume (OBV)
var float obv = na
obv := close > close[1] ? obv + volume : close < close[1] ? obv - volume : obv
// Money Flow Index (MFI)
mfiLength = input(7, title="MFI Length")
mfiValue = ta.mfi(close, mfiLength)
// Initialize points for each timeframe
longPointsRSI = close > close[1] ? 1 : 0
shortPointsRSI = close < close[1] ? 1 : 0
longPointsStochRSI = stochRsiValue > stochRsiValue[1] ? 1 : 0
shortPointsStochRSI = stochRsiValue < stochRsiValue[1] ? 1 : 0
longPointsWavetrend = wt1 > wt1[1] ? 1 : 0
shortPointsWavetrend = wt1 < wt1[1] ? 1 : 0
longPointsOBV = obv > obv[1] ? 1 : 0
shortPointsOBV = obv < obv[1] ? 1 : 0
longPointsMFI = mfiValue > 50 ? 1 : 0
shortPointsMFI = mfiValue < 50 ? 1 : 0
// Calculate total points for each timeframe
totalLongPoints = longPointsRSI + longPointsStochRSI + longPointsWavetrend + longPointsOBV + longPointsMFI
totalShortPoints = shortPointsRSI + shortPointsStochRSI + shortPointsWavetrend + shortPointsOBV + shortPointsMFI
// Calculate combined probabilities for each timeframe
combinedProbabilityLong = totalLongPoints / 5 * 100
combinedProbabilityShort = totalShortPoints / 5 * 100
// Display combined probabilities in a box at the top right corner
var labelBox = label.new(na, na, "")
label.set_xy(labelBox, bar_index, high)
label.set_text(labelBox, "Long: " + str.tostring(combinedProbabilityLong) + "%\nShort: " + str.tostring(combinedProbabilityShort) + "%")
label.set_color(labelBox, color.new(color.blue, 0))
label.set_style(labelBox, label.style_label_left)
// Display on different timeframes
rsiValue1H = ta.rsi(close, 14)
rsiValue2H = ta.rsi(close, 28)
rsiValue3H = ta.rsi(close, 42)
rsiValue4H = ta.rsi(close, 56)
// Odds calculation for each timeframe
odds1H = (longPointsRSI + longPointsStochRSI + longPointsWavetrend + longPointsOBV + longPointsMFI) / 5 * 100
odds2H = (shortPointsRSI + shortPointsStochRSI + shortPointsWavetrend + shortPointsOBV + shortPointsMFI) / 5 * 100
odds3H = (longPointsRSI + longPointsStochRSI + longPointsWavetrend + longPointsOBV + longPointsMFI) / 5 * 100
odds4H = (shortPointsRSI + shortPointsStochRSI + shortPointsWavetrend + shortPointsOBV + shortPointsMFI) / 5 * 100
// Plotting
plot(rsiValue1H, title="RSI 1H", color=color.new(color.red, 0), linewidth=2)
plot(rsiValue2H, title="RSI 2H", color=color.new(color.blue, 0), linewidth=2)
plot(rsiValue3H, title="RSI 3H", color=color.new(color.green, 0), linewidth=2)
plot(rsiValue4H, title="RSI 4H", color=color.new(color.purple, 0), linewidth=2)