//version=5
indicator("IQ Option Signals (1m) — Multi-Indicator", overlay=true)
// -------------------- Inputs --------------------
use_hl2 = input.bool(true, "Use HL2 for calculations?")
// EMA
ema_fast_len = input.int(5, "EMA Fast")
ema_slow_len = input.int(20, "EMA Slow")
// RSI
rsi_len = input.int(14, "RSI Length")
rsi_overbought = input.int(70)
rsi_oversold = input.int(30)
// Bollinger Bands
bb_len = input.int(20)
bb_dev = input.float(2.0)
// MACD
macd_fast = input.int(12)
macd_slow = input.int(26)
macd_signal = input.int(9)
// Min signals to confirm
min_signals = input.int(2, "Min confirming signals")
// -------------------- Price --------------------
price = use_hl2 ? hl2 : close
// -------------------- Indicators --------------------
ema_fast = ta.ema(price, ema_fast_len)
ema_slow = ta.ema(price, ema_slow_len)
rsi = ta.rsi(price, rsi_len)
basis = ta.sma(price, bb_len)
dev = bb_dev * ta.stdev(price, bb_len)
bb_upper = basis + dev
bb_lower = basis - dev
[macdLine, signalLine, _] = ta.macd(price, macd_fast, macd_slow, macd_signal)
macd_buy = ta.crossover(macdLine, signalLine)
macd_sell = ta.crossunder(macdLine, signalLine)
// -------------------- Build signals --------------------
bull_signals = 0
bear_signals = 0
// EMA trend
if ema_fast > ema_slow
bull_signals += 1
else
bear_signals += 1
// RSI
if rsi < rsi_oversold
bull_signals += 1
if rsi > rsi_overbought
bear_signals += 1
// Bollinger breakout
if close > bb_upper
bull_signals += 1
if close < bb_lower
bear_signals += 1
// MACD
if macd_buy
bull_signals += 1
if macd_sell
bear_signals += 1
// -------------------- Decide signal --------------------
show_buy = bull_signals >= min_signals and bull_signals > bear_signals
show_sell = bear_signals >= min_signals and bear_signals > bull_signals
getRiskText(count) =>
count >= 3 ? "เสี่ยง: ต่ำ (Low Risk)" :
count == 2 ? "เสี่ยง: กลาง (Medium Risk)" :
"เสี่ยง: สูง (High Risk)"
// -------------------- Plot --------------------
plot(ema_fast, color=color.new(color.green, 0), title="EMA Fast")
plot(ema_slow, color=color.new(color.red, 0), title="EMA Slow")
plot(bb_upper, color=color.new(color.orange, 50), title="BB Upper")
plot(bb_lower, color=color.new(color.blue, 50), title="BB Lower")
// Arrows
plotshape(show_buy, title="Buy Arrow", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.normal, text="CALL")
plotshape(show_sell, title="Sell Arrow", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.normal, text="PUT")
// Labels with risk
if show_buy
label.new(bar_index, low - tr*0.5, text=getRiskText(bull_signals) + "\nCall 1m", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
if show_sell
label.new(bar_index, high + tr*0.5, text=getRiskText(bear_signals) + "\nPut 1m", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white)
// -------------------- Optional: Signal Table --------------------
var table t = table.new(position.top_right, 1, 3)
if barstate.islast
table.cell(t, 0, 0, "Bull signals: " + str.tostring(bull_signals), text_color=color.green)
table.cell(t, 0, 1, "Bear signals: " + str.tostring(bear_signals), text_color=color.red)
table.cell(t, 0, 2, "Risk: " + (show_buy ? getRiskText(bull_signals) : show_sell ? getRiskText(bear_signals) : "N/A"))
indicator("IQ Option Signals (1m) — Multi-Indicator", overlay=true)
// -------------------- Inputs --------------------
use_hl2 = input.bool(true, "Use HL2 for calculations?")
// EMA
ema_fast_len = input.int(5, "EMA Fast")
ema_slow_len = input.int(20, "EMA Slow")
// RSI
rsi_len = input.int(14, "RSI Length")
rsi_overbought = input.int(70)
rsi_oversold = input.int(30)
// Bollinger Bands
bb_len = input.int(20)
bb_dev = input.float(2.0)
// MACD
macd_fast = input.int(12)
macd_slow = input.int(26)
macd_signal = input.int(9)
// Min signals to confirm
min_signals = input.int(2, "Min confirming signals")
// -------------------- Price --------------------
price = use_hl2 ? hl2 : close
// -------------------- Indicators --------------------
ema_fast = ta.ema(price, ema_fast_len)
ema_slow = ta.ema(price, ema_slow_len)
rsi = ta.rsi(price, rsi_len)
basis = ta.sma(price, bb_len)
dev = bb_dev * ta.stdev(price, bb_len)
bb_upper = basis + dev
bb_lower = basis - dev
[macdLine, signalLine, _] = ta.macd(price, macd_fast, macd_slow, macd_signal)
macd_buy = ta.crossover(macdLine, signalLine)
macd_sell = ta.crossunder(macdLine, signalLine)
// -------------------- Build signals --------------------
bull_signals = 0
bear_signals = 0
// EMA trend
if ema_fast > ema_slow
bull_signals += 1
else
bear_signals += 1
// RSI
if rsi < rsi_oversold
bull_signals += 1
if rsi > rsi_overbought
bear_signals += 1
// Bollinger breakout
if close > bb_upper
bull_signals += 1
if close < bb_lower
bear_signals += 1
// MACD
if macd_buy
bull_signals += 1
if macd_sell
bear_signals += 1
// -------------------- Decide signal --------------------
show_buy = bull_signals >= min_signals and bull_signals > bear_signals
show_sell = bear_signals >= min_signals and bear_signals > bull_signals
getRiskText(count) =>
count >= 3 ? "เสี่ยง: ต่ำ (Low Risk)" :
count == 2 ? "เสี่ยง: กลาง (Medium Risk)" :
"เสี่ยง: สูง (High Risk)"
// -------------------- Plot --------------------
plot(ema_fast, color=color.new(color.green, 0), title="EMA Fast")
plot(ema_slow, color=color.new(color.red, 0), title="EMA Slow")
plot(bb_upper, color=color.new(color.orange, 50), title="BB Upper")
plot(bb_lower, color=color.new(color.blue, 50), title="BB Lower")
// Arrows
plotshape(show_buy, title="Buy Arrow", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.normal, text="CALL")
plotshape(show_sell, title="Sell Arrow", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.normal, text="PUT")
// Labels with risk
if show_buy
label.new(bar_index, low - tr*0.5, text=getRiskText(bull_signals) + "\nCall 1m", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
if show_sell
label.new(bar_index, high + tr*0.5, text=getRiskText(bear_signals) + "\nPut 1m", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white)
// -------------------- Optional: Signal Table --------------------
var table t = table.new(position.top_right, 1, 3)
if barstate.islast
table.cell(t, 0, 0, "Bull signals: " + str.tostring(bull_signals), text_color=color.green)
table.cell(t, 0, 1, "Bear signals: " + str.tostring(bear_signals), text_color=color.red)
table.cell(t, 0, 2, "Risk: " + (show_buy ? getRiskText(bull_signals) : show_sell ? getRiskText(bear_signals) : "N/A"))
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.