Strategi ini menggabungkan RSI, MFI, Stoch RSI dan MACD empat indikator untuk menerapkan perdagangan intraday bitcoin.
Indikator RSI digunakan untuk menentukan apakah pasar terlalu banyak dibeli atau terlalu banyak dijual.
Indikator MFI menilai arus modal di pasar. Ini menghasilkan sinyal beli ketika MFI di bawah 23 dan sinyal jual ketika MFI di atas 80.
Indikator Stoch RSI menentukan apakah pasar terlalu banyak dibeli atau terlalu banyak dijual.
Indikator MACD menilai tren dan momentum pasar. Ini menghasilkan sinyal beli ketika garis cepat berada di bawah garis lambat dan histogram negatif, dan sinyal jual untuk skenario sebaliknya.
Menggabungkan empat indikator utama meningkatkan akurasi sinyal dan menghindari kerugian yang disebabkan oleh kegagalan satu indikator.
Perintah hanya ditempatkan ketika beberapa indikator memberikan sinyal secara bersamaan, yang sangat mengurangi kemungkinan sinyal palsu.
Mengadopsi strategi perdagangan intraday menghindari risiko overnight dan mengurangi biaya modal.
Frekuensi perdagangan strategi mungkin relatif rendah, dengan risiko waktu tertentu.
Masih ada kemungkinan bahwa indikator dapat memberikan sinyal yang salah. Algoritma pembelajaran mesin dapat diperkenalkan untuk membantu menilai keandalan sinyal indikator.
Ada beberapa risiko overbought dan oversold. parameter indikator dapat disesuaikan sesuai atau lebih indikator logika dapat ditambahkan.
Tambahkan fungsi parameter indikator adaptif. Sesuaikan parameter indikator secara real time berdasarkan volatilitas pasar dan kecepatan perubahan.
Tambahkan logika stop loss. Stop loss exit jika kerugian melebihi persentase tertentu untuk secara efektif mengendalikan kerugian tunggal.
Menggabungkan indikator sentimen. Meningkatkan penilaian multidimensi seperti panas pasar dan ketakutan pasar untuk meningkatkan ruang keuntungan strategi.
Dengan memverifikasi sinyal melalui empat indikator utama, strategi ini dapat secara efektif mengurangi tingkat sinyal palsu dan merupakan strategi keuntungan frekuensi tinggi yang relatif stabil.
/*backtest start: 2023-11-29 00:00:00 end: 2023-12-06 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('John Day Stop Loss', overlay=false, pyramiding=1, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000, currency='USD', precision=2) strategy.risk.allow_entry_in(strategy.direction.long) from_day = input.int(defval=1, title='From Day', minval=1) from_month = input.int(defval=1, title='From Month', minval=1) from_year = input.int(defval=2021, title='From Year', minval=2020) to_day = input.int(defval=1, title='To Day', minval=1) to_month = input.int(defval=1, title='To Month', minval=1) to_year = input.int(defval=2025, title='To Year', minval=2020) time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and time < timestamp(to_year, to_month, to_day, 00, 00) //time_cond = true //Stop Loss longProfitPerc = input.float(title="Stop Loss Profit (%)", defval=2.1) / 100 longExitPrice = strategy.position_avg_price * (1 - longProfitPerc) //RSI - yellow up = ta.rma(math.max(ta.change(close), 0), 14) down = ta.rma(-math.min(ta.change(close), 0), 14) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(rsi, "RSI", color=#00FFFF) buy_rsi = true // rsi < 40 sell_rsi = true //rsi > 70 //MFI - cyan mf = ta.mfi(hlc3, 14) plot(mf, "MF", color=#FFFF00) buy_mfi = mf < input.int(defval=23, title='Max MF', minval=1) sell_mfi = mf > input.int(defval=80, title='Min MF', minval=1) //Stoch RSI OverBought_StochRSI = input(80) OverSold_StochRSI = input(34) smoothK = input.int(3, "K", minval=1) smoothD = input.int(2, "D", minval=1) lengthRSI = input.int(14, "RSI Length", minval=1) lengthStoch = input.int(14, "Stochastic Length", minval=1) srcRSI = input(close, title="RSI Source") rsi1 = ta.rsi(srcRSI, lengthRSI) kStochRSI = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = ta.sma(kStochRSI, smoothD) co = ta.crossover(kStochRSI,d) cu = ta.crossunder(kStochRSI,d) buy_stochRSI = co and kStochRSI < OverSold_StochRSI sell_stochRSI = cu and kStochRSI > OverBought_StochRSI plot(kStochRSI, "K", color=#2962FF) plot(d, "D", color=#FF6D00) h0 = hline(OverBought_StochRSI, "Upper Band", color=#787B86) h1 = hline(OverSold_StochRSI, "Lower Band", color=#787B86) fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background") //MACD // Getting inputs fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) src = input(title="Source", defval=close) signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) // Plot colors //col_macd = input(#2962FF, "MACD Line ", group="Color Settings", inline="MACD") //col_signal = input(#FF6D00, "Signal Line ", group="Color Settings", inline="Signal") //col_grow_above = input(#26A69A, "Above Grow", group="Histogram", inline="Above") //col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above") //col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below") //col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below") // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal buy_MACD = macd < signal and hist < 0 sell_MACD = macd > signal and hist > 0 //buy_MACD = true //sell_MACD = true //plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below))) //plot(macd, title="MACD", color=col_macd) //plot(signal, title="Signal", color=col_signal) sessionColor = color(na) if time_cond if (not na(kStochRSI) and not na(d)) cmt = str.tostring(close) if (buy_stochRSI and buy_MACD and buy_mfi and buy_rsi) strategy.entry("BUY", strategy.long, comment='BUY @ ' + cmt) if longProfitPerc != 0 strategy.exit(id="x", stop=longExitPrice, comment='EXIT @ ' + str.tostring(longExitPrice)) sessionColor := input.color(#0000FF, "buy") //red if (sell_stochRSI and sell_MACD and sell_mfi and sell_rsi) strategy.entry("SELL", strategy.short, comment='SELL @ ' + cmt) sessionColor := input.color(#FF0000, "sell") //green bgcolor(sessionColor)