Code:function transform(input) {
var data = input.triggerResult || {};
var headline = data.headline || '';
var sentiment = (data.sentiment || '').toLowerCase();
var tickers = data.tickers || [];
if (sentiment !== 'bullish' && sentiment !== 'bearish') {
return { trade: false, reason: 'Neutral or unknown sentiment: ' + sentiment };
}
var h = headline.toLowerCase();
var bull = ['surge','soar','rally','beat','upgrade','record','gain','boost','jump','rise'];
var bear = ['crash','drop','plunge','miss','downgrade','loss','weak','decline','fall','sink'];
var bs = 0, brs = 0;
for (var i = 0; i < bull.length; i++) { if (h.indexOf(bull[i]) !== -1) bs++; }
for (var i = 0; i < bear.length; i++) { if (h.indexOf(bear[i]) !== -1) brs++; }
if (sentiment === 'bullish' && brs > bs && brs > 0) {
return { trade: false, reason: 'Mismatch: tagged bullish but headline bearish' };
}
if (sentiment === 'bearish' && bs > brs && bs > 0) {
return { trade: false, reason: 'Mismatch: tagged bearish but headline bullish' };
}
var map = { BTC:'BTC', BITCOIN:'BTC', ETH:'ETH', ETHEREUM:'ETH', SOL:'SOL', DOGE:'DOGE', XRP:'XRP', AVAX:'AVAX', LINK:'LINK', ADA:'ADA', DOT:'DOT', ARB:'ARB', OP:'OP', SUI:'SUI', APT:'APT', NEAR:'NEAR', ATOM:'ATOM', UNI:'UNI', AAVE:'AAVE', PEPE:'PEPE', WIF:'WIF', ONDO:'ONDO', HYPE:'HYPE' };
var coin = null;
for (var i = 0; i < tickers.length; i++) {
var t = tickers[i].toUpperCase();
if (map[t]) { coin = map[t]; break; }
}
if (!coin) return { trade: false, reason: 'No HL asset for: ' + tickers.join(', ') };
return { trade: true, coin: coin, side: sentiment === 'bullish' ? 'buy' : 'sell', sentiment: sentiment, reason: sentiment + ' on ' + coin };
}
Input:{"triggerResult":"{{root.result}}"}