
Strategi perdagangan kuantitatif yang dinamakan “7 dalam 1 Super Indicator Strategy” menggunakan 7 indikator teknikal yang popular, termasuk RSI (Relative Strength Index), MACD, Stochastic, Bollinger Bands, SMA, EMA, dan Volume. Dengan menggabungkan isyarat dari indikator ini bersama-sama, strategi ini bertujuan untuk mengenal pasti keadaan pasaran yang terlalu banyak dan terlalu banyak dijual untuk mencari peluang jual beli yang terbaik.
Prinsip teras strategi ini adalah penggunaan bersepadu beberapa petunjuk teknikal untuk mendapatkan isyarat perdagangan yang lebih komprehensif dan dipercayai. Setiap petunjuk mempunyai kaedah pengiraan dan sudut pandang yang unik untuk mentafsirkan pergerakan pasaran. Sebagai contoh, RSI mengukur kelajuan dan kekuatan perubahan harga; MACD menilai trend berdasarkan persilangan purata bergerak; Indikator rawak menentukan tahap overbought dan oversold dengan membandingkan harga amaran dengan julat harga dalam jangka masa tertentu;
Strategi ini menilai kekuatan isyarat pelbagai indikator dengan menetapkan titik tolak. Isyarat beli dan jual akan dihasilkan apabila indikator memenuhi syarat gabungan tertentu. Pada masa yang sama, strategi ini juga mempertimbangkan maklumat pasaran lain seperti jumlah transaksi untuk mengesahkan pergerakan harga.
Kelebihan utama “strategi 7 dalam 1 super indikator” adalah kemanjuran dan fleksibiliti. Dengan mempertimbangkan pelbagai indikator secara menyeluruh, strategi dapat mengesahkan isyarat pasaran dari pelbagai sudut, meningkatkan kemungkinan menghasilkan peluang perdagangan yang boleh dipercayai.
Di samping itu, strategi ini juga menyediakan banyak pilihan parameter, yang boleh disesuaikan oleh pengguna mengikut keutamaan dan gaya dagangan mereka sendiri. Kombinasi parameter yang berbeza dapat menghasilkan sensitiviti dan frekuensi isyarat yang berbeza untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Walaupun terdapat banyak kelebihan, strategi ini juga mempunyai beberapa risiko yang berpotensi. Pertama, prestasi strategi sangat bergantung kepada keabsahan parameter yang dipilih. Tetapan parameter yang tidak sesuai boleh menyebabkan isyarat menjadi salah dan mengakibatkan keputusan perdagangan yang salah. Kedua, strategi ini berdasarkan pada data sejarah dan peraturan statistik, dan keadaan pasaran berubah-ubah dengan cepat, peraturan masa lalu tidak semestinya berlaku untuk masa depan.
Di samping itu, dalam keadaan yang melampau, beberapa petunjuk mungkin gagal pada masa yang sama, menyebabkan strategi membuat keputusan yang salah. Strategi juga mungkin sering menghasilkan isyarat yang bertentangan di pasaran yang bergolak, yang menyebabkan perdagangan berlebihan dan kehabisan dana dengan cepat.
Untuk meningkatkan lagi kebolehpercayaan dan potensi keuntungan strategi, ia boleh dioptimumkan dalam beberapa aspek:
Dengan pengoptimuman ini, strategi ini diharapkan dapat meningkatkan lagi kebolehannya untuk menghadapi keadaan pasaran yang kompleks, sambil mengekalkan kelebihan, dan membawa keuntungan yang lebih mantap kepada pengguna.
Secara keseluruhannya, “7 dalam 1 Super Indicator Strategy” adalah strategi perdagangan kuantitatif yang kuat dan dirancang secara menyeluruh. Ia menggabungkan 7 indikator teknikal yang biasa digunakan dengan bijak, dapat menangkap denyutan pasaran dari pelbagai sudut, memberikan isyarat jual beli yang boleh dipercayai kepada pedagang.
Walau bagaimanapun, prestasi strategi masih dipengaruhi oleh faktor-faktor seperti pilihan parameter, keadaan pasaran, dan pedagang perlu menyesuaikan berdasarkan pengalaman dan hasil tinjauan mereka sendiri. Dengan memperkenalkan lebih banyak dimensi penunjuk, mengoptimumkan logik stop-loss, dan menyempurnakan penapisan masa perdagangan, strategi ini dijangka meningkatkan lagi ketahanan risiko dan potensi keuntungan, menjadi pembantu yang baik untuk pedagang kuantitatif.
/*backtest
start: 2024-04-22 00:00:00
end: 2024-05-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='Super Indicator 7 in 1', shorttitle='Super Indicator 7 in 1', overlay=true, initial_capital=100, pyramiding=0, default_qty_value=10000, default_qty_type=strategy.cash)
// Defining indicator parameters
show_plots = input(false, title="Show Plots", group="Visibility")
show_indicators = input(false, title="Show Indicators", group="Visibility")
show_trades = input(true, title="Show Trades", group="Visibility")
show_labels = input(false, title="Show Labels", group="Visibility")
start_hour = input.int(0, title="Start Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
end_hour = input.int(24, title="End Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
stop_trading = input(false, "Stop Trading", group="Time-Based Filter")
trade_time = (hour >= start_hour and hour <= end_hour)
bgcolor(trade_time and (start_hour != 0 or end_hour != 24) ? color.new(color.blue, 90) : na)
volume_length = input.int(1, title="Volume SMA Length", group="Volume", minval=1, step=1)
sma_period = input.int(50, title="SMA Period", group="Moving Averages")
ema_period = input.int(50, title="EMA Period", group="Moving Averages")
bb_length = input.int(20, title='Bollinger Bands Length', group="Bollinger Bands")
mult = input.float(2.0, title='Bollinger Bands MultFactor', group="Bollinger Bands")
src = input(close, title='Bollinger Bands Source', group="Bollinger Bands")
rsi_length = input.int(14, title='RSI Length', group="RSI")
macd_fast_length = input.int(12, title='MACD Fast Length', group="MACD")
macd_slow_length = input.int(26, title='MACD Slow Length', group="MACD")
macd_signal_length = input.int(9, title='MACD Signal Smoothing', group="MACD")
stoch_length = input.int(14, title='Stochastic Length', group="Stochastic")
smoothK = input.int(3, title='Stochastic %K Smoothing', group="Stochastic")
smoothD = input.int(3, title='Stochastic %D Smoothing', group="Stochastic")
tp_percent = input.float(0.14, title="Take Profit (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
sl_percent = input.float(0.25, title="Stop Loss (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
// Calculating indicators
dev = mult * ta.stdev(src, bb_length)
upper = ta.sma(src, bb_length) + dev
lower = ta.sma(src, bb_length) - dev
rsi_value = ta.rsi(close, rsi_length)
stoch_value = ta.stoch(close, high, low, stoch_length)
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
k = ta.sma(stoch_value, smoothK)
d = ta.sma(k, smoothD)
sma = ta.sma(close, sma_period)
ema = ta.ema(close, ema_period)
volume_ma = ta.sma(volume, volume_length)
volume_condition = volume >= volume_ma
// Signal definitions(-10%, Normal, +10% and ! failed indicator)
min_buy_signal = rsi_value < 33 and rsi_value > 30 and stoch_value < 22 and stoch_value > 20 and low < lower and macd_line < 0 and volume_condition
min_sell_signal = rsi_value > 63 and rsi_value < 70 and stoch_value > 72 and stoch_value < 80 and high > upper and macd_line > 0 and volume_condition
buy_signal = rsi_value < 30 and stoch_value < 20 and low < lower and macd_line < 0 and volume_condition
sell_signal = rsi_value > 70 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
max_buy_signal = rsi_value < 27 and stoch_value < 18 and low < lower and macd_line < 0 and volume_condition
max_sell_signal = rsi_value > 77 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
buy_condition = (rsi_value < 30 ? 1 : 0) + (stoch_value < 20 ? 1 : 0) + (macd_line < 0 ? 1 : 0) + (low < lower ? 1 : 0) + (volume_condition ? 1 : 0) == 4
sell_condition = (rsi_value > 70 ? 1 : 0) + (stoch_value > 80 ? 1 : 0) + (macd_line > 0 ? 1 : 0) + (high > upper ? 1 : 0) + (volume_condition ? 1 : 0) == 4
// Plotting buy and sell signals
plotshape(show_plots and min_buy_signal, style=shape.triangleup, location=location.belowbar, color=#00ffb7, size=size.small, title="Min Buy Signal")
plotshape(show_plots and min_sell_signal, style=shape.triangledown, location=location.abovebar, color=#efa803, size=size.small, title="Min Sell Signal")
plotshape(show_plots and buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#004cff, size=size.small, title="Buy Signal")
plotshape(show_plots and sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffff00, size=size.small, title="Sell Signal")
plotshape(show_plots and max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#1eff00, size=size.small, title="Max Buy Signal")
plotshape(show_plots and max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ff0000, size=size.small, title="Max Sell Signal")
plotshape(show_plots and buy_condition and not min_buy_signal and not buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#ffffff, size=size.small, title="Buy Condition")
plotshape(show_plots and sell_condition and not min_sell_signal and not sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffffff, size=size.small, title="Sell Condition")
// Plotting moving averages
plot(show_indicators ? sma : na, color=#fc0000, linewidth=2, title="SMA")
plot(show_indicators ? ema : na, color=#00aaff, linewidth=2, title="EMA")
// Crossover labels for moving averages
BullCross = ta.crossover(ema, sma)
BearCross = ta.crossunder(ema, sma)
if (show_labels)
if (BullCross)
label.new(bar_index, sma, color=color.green, textcolor=color.white, style=label.style_cross, size=size.huge)
if (BearCross)
label.new(bar_index, sma, color=color.red, textcolor=color.white, style=label.style_cross, size=size.huge)
// Calculating take profit and stop loss
long_take_profit = close * (1 + tp_percent)
long_stop_loss = close * (1 - sl_percent)
short_take_profit = close * (1 - tp_percent)
short_stop_loss = close * (1 + sl_percent)
// Opening long and short orders based on signals
if (show_trades and trade_time and not stop_trading)
if (min_buy_signal or buy_signal or max_buy_signal or buy_condition)
strategy.entry("Open Long", strategy.long)
strategy.exit("TP/SL Long", limit=long_take_profit, stop=long_stop_loss)
if (min_sell_signal or sell_signal or max_sell_signal or sell_condition)
strategy.entry("Open Short", strategy.short)
strategy.exit("TP/SL Short", limit=short_take_profit, stop=short_stop_loss)