
Strategi ini adalah sistem perdagangan gabungan yang menggabungkan indikator CCI, indikator RSI, dan dua rata-rata bergerak. Sistem ini dapat menangkap tren konvensional, sementara menggunakan indikator RSI yang bersilang untuk menambah konfirmasi saat masuk, untuk menyaring beberapa kebisingan.
Strategi ini terutama didasarkan pada indikator CCI untuk menentukan arah tren. Jika nilai indikator CCI lebih tinggi dari 100 adalah pasar overhead, jika lebih rendah dari 100 adalah pasar overhead. Sistem ini menggunakan dua persilangan rata-rata bergerak untuk membantu menentukan arah tren.
Setelah menentukan tren overhead, sistem kemudian menggunakan silang dari dua parameter RSI dengan panjang yang berbeda sebagai verifikasi masuk. Sebagai contoh, dalam pasar multihead, jika indikator RSI berjangka pendek melewati indikator RSI berjangka panjang, untuk sinyal pembelian akhir.
Strategi ini hanya membuka posisi pada waktu perdagangan yang ditentukan, dan secara aktif menutup seluruh posisi 15 menit sebelum penutupan, untuk menghindari risiko semalam. Setelah membuka posisi, Anda akan menggunakan stop loss bergerak untuk mengunci keuntungan.
Strategi ini secara komprehensif mempertimbangkan penilaian tren dan cross-verifikasi indikator, memastikan efektivitas sinyal perdagangan sambil mengendalikan risiko. Dengan pengoptimalan parameter dan penyesuaian logis, strategi ini dapat lebih meningkatkan ruang keuntungan dan mengurangi peluang kehilangan. Ini adalah ide perdagangan yang sangat potensial.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rwestbrookjr
//@version=5
strategy("EMA with RSI Cross Strategy", overlay=true)
//EMA
fastLen = input(title='Fast EMA Length', defval=9)
slowLen = input(title='Slow EMA Length', defval=20)
fastEMA = ta.ema(close, fastLen)
slowEMA = ta.ema(close, slowLen)
fema = plot(fastEMA, title='FastEMA', color=color.new(color.green, 0), linewidth=1, style=plot.style_line)
sema = plot(slowEMA, title='SlowEMA', color=color.new(color.red, 0), linewidth=1, style=plot.style_line)
fill(fema, sema, color=fastEMA > slowEMA ? color.new(#417505, 50) : color.new(#890101, 50), title='Cloud')
// Bull and Bear Alerts
//Bull = ta.crossover(fastEMA, slowEMA)
Bull = fastEMA > slowEMA
//Bear = ta.crossunder(fastEMA, slowEMA)
Bear = fastEMA < slowEMA
//RSIs
rsiLength1Input = input.int(9, minval=1, title="RSI Length", group="RSI Settings")
rsiSource1Input = input.source(close, "Source", group="RSI Settings")
rsiLength2Input = input.int(20, minval=1, title="RSI Length", group="RSI Settings")
rsiSource2Input = input.source(close, "Source", group="RSI Settings")
up1 = ta.rma(math.max(ta.change(rsiSource1Input), 0), rsiLength1Input)
down1 = ta.rma(-math.min(ta.change(rsiSource1Input), 0), rsiLength1Input)
rsi = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1))
up2 = ta.rma(math.max(ta.change(rsiSource2Input), 0), rsiLength2Input)
down2 = ta.rma(-math.min(ta.change(rsiSource2Input), 0), rsiLength2Input)
rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2))
//CCI
cciLength = input.int(20, minval=1)
src = input(hlc3, title="Source")
ma = ta.sma(src, cciLength)
cci = (src - ma) / (0.015 * ta.dev(src, cciLength))
//Trail Stop Setup
trstp = input.float(title="Trail Loss($)", minval = 0.0, step = 0.01, defval = 0.5)
longStop = 0.0, shortStop = 0.0
longStop := if Bull
stopValue = close - trstp
math.max(stopValue, longStop[1])
else
0.0
shortStop := if Bear
stopValue = close + trstp
math.min(stopValue, shortStop[1])
else
999999
//Session Setup
open_session=input(defval="0930-1545")
session = time("1", open_session)
validSession=(na(session) ? 0 : 1)
//Trade Signals
longCondition = Bull and cci > 100 and ta.crossover(rsi,rsi2) and validSession
if (longCondition)
strategy.entry("Long", strategy.long, 1)
//longExit = close > strategy.opentrades.entry_price(0) + 1.5 or close < strategy.opentrades.entry_price(0) - 0.75
longExit = close < longStop or not validSession
if (longExit)
strategy.close("Long")
shortCondition = Bear and cci < 100 and ta.crossunder(rsi,rsi2) and validSession
if (shortCondition)
strategy.entry("Short", strategy.short, 1)
//shortExit = close < strategy.opentrades.entry_price(0) - 1.5 or close > strategy.opentrades.entry_price(0) + 0.75
shortExit = close > shortStop or not validSession
if (shortExit)
strategy.close("Short")