latest changes

This commit is contained in:
Dobromir Popov 2024-01-12 19:21:29 +02:00
parent 1bfb5670b8
commit ed545a1ddb

View File

@ -3,17 +3,40 @@ indicator("DrNiki's Market Nuker", shorttitle="DrNiki's Market Nuker", overlay=t
// Function to calculate RSI // Function to calculate RSI
rsiLength = input(14, title="RSI Length") rsiLength = input(14, title="RSI Length")
calcRSI() => ta.rsi(close, rsiLength)
// Function to calculate Stochastic RSI
stochRsiLength = input(14, title="Stochastic RSI Length") stochRsiLength = input(14, title="Stochastic RSI Length")
calcStochRSI() => ta.stoch(close, close, close, stochRsiLength)
// Function to calculate Wavetrend
n1 = input(10, "Channel Length") n1 = input(10, "Channel Length")
n2 = input(21, "Average Length") n2 = input(21, "Average Length")
calcWavetrend() => mfiLength = input(7, title="MFI Length")
ap = hlc3
// calcRSI() => ta.rsi(close, rsiLength)
// // Function to calculate Stochastic RSI
// calcStochRSI() => ta.stoch(close, close, close, stochRsiLength)
// // Function to calculate Wavetrend
// calcWavetrend() =>
// 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)
// [wt1, wt2]
// // Function to calculate On Balance Volume (OBV)
// calcOBV() =>
// var float obv = na
// obv := close > close[1] ? obv + volume : close < close[1] ? obv - volume : obv
// obv
// // Function to calculate MFI
// calcMFI() => ta.mfi(close, mfiLength)
calcRSI(source) => ta.rsi(source, rsiLength)
calcStochRSI(source) => ta.stoch(source, source, source, stochRsiLength)
calcWavetrend(source) =>
ap = source
esa = ta.ema(ap, n1) esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1) d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d) ci = (ap - esa) / (0.015 * d)
@ -22,23 +45,20 @@ calcWavetrend() =>
wt2 = ta.sma(wt1, 4) wt2 = ta.sma(wt1, 4)
[wt1, wt2] [wt1, wt2]
// Function to calculate On Balance Volume (OBV) calcOBV(source, volumeSource) =>
calcOBV() =>
var float obv = na var float obv = na
obv := close > close[1] ? obv + volume : close < close[1] ? obv - volume : obv obv := close > close[1] ? obv + volume : close < close[1] ? obv - volume : obv
obv obv
// Function to calculate MFI calcMFI(source) => ta.mfi(source, mfiLength)
mfiLength = input(7, title="MFI Length")
calcMFI() => ta.mfi(close, mfiLength)
// Function to calculate points for a symbol // Function to calculate points for a symbol
calcPoints(symbol) => calcPoints(symbol) =>
rsiValue = calcRSI() rsiValue = request.security(symbol, timeframe.period, calcRSI(close), barmerge.gaps_off, barmerge.lookahead_on)
stochRsiValue = calcStochRSI() stochRsiValue = request.security(symbol, timeframe.period, calcStochRSI(close), barmerge.gaps_off, barmerge.lookahead_on)
[wt1, wt2] = calcWavetrend() [wt1, wt2] = request.security(symbol, timeframe.period, calcWavetrend(close), barmerge.gaps_off, barmerge.lookahead_on)
obv = calcOBV() obv = request.security(symbol, timeframe.period, calcOBV(close, volume), barmerge.gaps_off, barmerge.lookahead_on)
mfiValue = calcMFI() mfiValue = request.security(symbol, timeframe.period, calcMFI(close), barmerge.gaps_off, barmerge.lookahead_on)
longPoints = 0 longPoints = 0
shortPoints = 0 shortPoints = 0
@ -58,22 +78,39 @@ calcPoints(symbol) =>
// Symbols array // Symbols array
symbols = array.new_string(5) symbols = array.new_string(5)
array.set(symbols, 0, syminfo.tickerid) array.set(symbols, 0, syminfo.ticker) // Replace with the symbol of your chart
array.set(symbols, 1, "GOLD") array.set(symbols, 1, "GOLD")
array.set(symbols, 2, "DXY") array.set(symbols, 2, "DXY")
array.set(symbols, 3, "BTCUSDT.P") array.set(symbols, 3, "BTCUSDT.P")
array.set(symbols, 4, "US30") array.set(symbols, 4, "US30")
var string[] list = array.from(syminfo.ticker, "GOLD", "DXY", "BTCUSDT.P", "US30")
var string sym = ""
for i in list
log.info(i)
[longPoints, shortPoints] = calcPoints(i)
sym := i + " "
var logMessage = "| sym: " + sym + " " + i
barTimeStr = str.format_time(time, "yyyy-MM-dd HH:mm:ss", "Europe/Sofia")
log.info(logMessage)
log.info("-------------------------")
// Calculate points for each symbol // Calculate points for each symbol
var symbolPoints = array.new_int(size=array.size(symbols) * 2, initial_value=0) var symbolPoints = array.new_int(size=array.size(symbols) * 2, initial_value=0)
for symbol in symbols for i in list
// Change symbol context using security() function var sm = i +" "
[longPoints, shortPoints] = calcPoints(symbol)
barTimeStr = str.format_time(time, "yyyy-MM-dd HH:mm:ss", "Europe/Sofia") barTimeStr = str.format_time(time, "yyyy-MM-dd HH:mm:ss", "Europe/Sofia")
var logMessage = barTimeStr + "| Symbol: " + symbol + ", Long: " + str.tostring(longPoints) + ", Short: " + str.tostring(shortPoints) var logMessage = barTimeStr + "| Symbol: " + i + "sm: " + sm
log.info(logMessage) log.info(logMessage)
array.set(symbolPoints, 0, array.get(symbolPoints, 0) + longPoints) //rsiValue = request.security(symbol, timeframe.period, calcRSI(close), barmerge.gaps_off, barmerge.lookahead_on)
array.set(symbolPoints, 1, array.get(symbolPoints, 1) + shortPoints)
// Change symbol context using security() function
// [longPoints, shortPoints] = calcPoints(symbol.symbol)
// array.set(symbolPoints, 0, array.get(symbolPoints, 0) + longPoints)
// array.set(symbolPoints, 1, array.get(symbolPoints, 1) + shortPoints)
// Calculate total long and short probabilities // Calculate total long and short probabilities
totalLongPoints = array.get(symbolPoints, 0) totalLongPoints = array.get(symbolPoints, 0)
@ -87,3 +124,6 @@ label.set_xy(labelBox, bar_index, high)
label.set_text(labelBox, "Combined Probabilities\nLong: " + str.tostring(combinedProbabilityLong) + "%\nShort: " + str.tostring(combinedProbabilityShort) + "%") label.set_text(labelBox, "Combined Probabilities\nLong: " + str.tostring(combinedProbabilityLong) + "%\nShort: " + str.tostring(combinedProbabilityShort) + "%")
label.set_color(labelBox, color.new(color.blue, 0)) label.set_color(labelBox, color.new(color.blue, 0))
label.set_style(labelBox, label.style_label_left) label.set_style(labelBox, label.style_label_left)