//@version=6 indicator("Money Line - 1min Data Feed", overlay=false) // ========================================== // PURPOSE: Send market data every 1 minute // USAGE: Create alert on indicator with "alert() function calls" // WEBHOOK: https://flow.egonetix.de/webhook/tradingview-bot-v4 // ========================================== // Calculate indicators (same as v9 for consistency) atr = ta.atr(14) [diPlus, diMinus, adx] = ta.dmi(14, 14) // ADX returns tuple in Pine v5+ rsi = ta.rsi(close, 14) volumeRatio = volume / ta.sma(volume, 20) pricePosition = (close - ta.lowest(low, 100)) / (ta.highest(high, 100) - ta.lowest(low, 100)) * 100 // Moving averages for MA gap analysis ma50 = ta.sma(close, 50) ma200 = ta.sma(close, 200) maGap = math.abs((ma50 - ma200) / ma200 * 100) // Display values (optional - for visual confirmation) plot(adx, "ADX", color=color.blue, linewidth=2) hline(20, "ADX 20", color=color.gray, linestyle=hline.style_dashed) hline(25, "ADX 25", color=color.orange, linestyle=hline.style_dashed) // Build JSON message dynamically (single line - Pine v6 doesn't support multi-line concatenation) jsonMessage = '{"action":"market_data_1min","symbol":"' + syminfo.ticker + '","timeframe":"1","atr":' + str.tostring(atr) + ',"adx":' + str.tostring(adx) + ',"rsi":' + str.tostring(rsi) + ',"volumeRatio":' + str.tostring(volumeRatio) + ',"pricePosition":' + str.tostring(pricePosition) + ',"currentPrice":' + str.tostring(close) + ',"maGap":' + str.tostring(maGap) + ',"timestamp":' + str.tostring(time) + ',"indicatorVersion":"v9"}' // Send alert every bar close if barstate.isconfirmed alert(jsonMessage, alert.freq_once_per_bar)