
Strategi ini menggabungkan empat indikator RSI, MFI, Stoch RSI, dan MACD untuk memungkinkan perdagangan Bitcoin dalam sehari. Strategi ini hanya melakukan order untuk mengendalikan risiko ketika beberapa indikator mengirimkan sinyal beli atau jual secara bersamaan.
Indikator RSI digunakan untuk menilai apakah pasar telah overbought atau oversold. RSI menghasilkan sinyal beli ketika berada di bawah 40, dan menghasilkan sinyal jual ketika berada di atas 70.
Indikator MFI menilai aliran dana di pasar. MFI menghasilkan sinyal beli ketika di bawah 23 dan menghasilkan sinyal jual ketika di atas 80.
Stoch RSI menilai apakah pasar terlalu beli atau terlalu jual. Garis K di bawah 34 menghasilkan sinyal beli, di atas 80 menghasilkan sinyal jual.
Indikator MACD menilai tren dan dinamika pasar. Garis cepat lebih rendah dari garis lambat dan pilar negatif menghasilkan sinyal beli, sebaliknya menghasilkan sinyal jual.
Kombinasi dari empat indikator untuk meningkatkan akurasi sinyal dan menghindari kerugian akibat kegagalan satu indikator.
Ini akan mengurangi kemungkinan sinyal palsu secara signifikan.
Mengadopsi strategi perdagangan dalam sehari, menghindari risiko malam hari, dan mengurangi biaya modal.
Frekuensi perdagangan strategi mungkin lebih rendah, ada risiko waktu tertentu. Parameter indikator dapat dilonggarkan secara tepat, meningkatkan jumlah perdagangan.
Probabilitas sinyal yang salah dari indikator masih ada. Algoritma pembelajaran mesin dapat diperkenalkan untuk membantu menilai keandalan sinyal indikator.
Ada beberapa risiko overbought dan oversold. Parameter indikator dapat disesuaikan sesuai atau menambahkan logika penilaian indikator lainnya.
Menambahkan fungsi parameter indikator yang dapat disesuaikan sendiri. Menyesuaikan parameter indikator secara real-time sesuai dengan volatilitas pasar dan kecepatan perubahan.
Tambahkan logika stop loss. Jika kerugian melebihi persentase tertentu, stop loss akan keluar, dan secara efektif mengendalikan kerugian tunggal.
Menggabungkan indikator sentimen. Meningkatkan penilaian multi-dimensi seperti kehangatan pasar, tingkat kepanikan pasar, meningkatkan ruang keuntungan strategi.
Strategi ini menghasilkan sinyal dengan cara saling memverifikasi empat indikator utama, yang secara efektif mengurangi tingkat sinyal palsu, dan merupakan strategi keuntungan frekuensi tinggi yang relatif stabil. Dengan terus-menerus mengoptimalkan parameter dan model, kemenangan dan kemampuan keuntungan dari strategi ini diharapkan dapat ditingkatkan lebih lanjut.
/*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)