fix: Use alert() function instead of alertcondition for dynamic JSON
Pine Script alertcondition() requires const string (no variables allowed)
Switched to alert() function which supports series string (dynamic values)
Changes:
- Removed alertcondition(), added if barstate.isconfirmed + alert()
- Build JSON message with all metrics dynamically
- alert.freq_once_per_bar ensures one alert per candle close
- Now includes all required fields: atr, adx, rsi, volumeRatio, pricePosition, maGap
Alert setup in TradingView:
1. Add indicator to 1-minute chart
2. Create alert on indicator
3. Condition: 'alert() function calls' (not alertcondition)
4. Frequency: Once Per Bar Close
5. Message: Use {{strategy.order.alert_message}} or leave blank
This commit is contained in:
@@ -3,7 +3,7 @@ indicator("Money Line - 1min Data Feed", overlay=false)
|
|||||||
|
|
||||||
// ==========================================
|
// ==========================================
|
||||||
// PURPOSE: Send market data every 1 minute
|
// PURPOSE: Send market data every 1 minute
|
||||||
// USAGE: Create alert with "Once Per Bar Close"
|
// USAGE: Create alert on indicator with "alert() function calls"
|
||||||
// WEBHOOK: https://flow.egonetix.de/webhook/tradingview-bot-v4
|
// WEBHOOK: https://flow.egonetix.de/webhook/tradingview-bot-v4
|
||||||
// ==========================================
|
// ==========================================
|
||||||
|
|
||||||
@@ -24,6 +24,22 @@ plot(adx, "ADX", color=color.blue, linewidth=2)
|
|||||||
hline(20, "ADX 20", color=color.gray, linestyle=hline.style_dashed)
|
hline(20, "ADX 20", color=color.gray, linestyle=hline.style_dashed)
|
||||||
hline(25, "ADX 25", color=color.orange, linestyle=hline.style_dashed)
|
hline(25, "ADX 25", color=color.orange, linestyle=hline.style_dashed)
|
||||||
|
|
||||||
// Alert condition: Every bar close (fires every 1 minute on 1-min chart)
|
// Build JSON message dynamically
|
||||||
// Message must be const string - build JSON directly in alertcondition
|
// alert() function allows series string (dynamic values)
|
||||||
alertcondition(true, title="1min Data Feed", message='{"action":"market_data_1min","symbol":"{{ticker}}","timeframe":"1","atr":{{plot_0}},"adx":{{plot_1}},"rsi":' + str.tostring(rsi) + ',"volumeRatio":' + str.tostring(volumeRatio) + ',"pricePosition":' + str.tostring(pricePosition) + ',"currentPrice":{{close}},"maGap":' + str.tostring(maGap) + ',"indicatorVersion":"v9"}')
|
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
|
||||||
|
// Use alert() instead of alertcondition() to allow dynamic message
|
||||||
|
if barstate.isconfirmed
|
||||||
|
alert(jsonMessage, alert.freq_once_per_bar)
|
||||||
|
|||||||
Reference in New Issue
Block a user