Strategi Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-02-21 14:43:26
Tag:

img

Gambaran umum

Strategi ini menggunakan rata-rata bergerak ganda untuk membentuk saluran dan menangkap arah tren. Sinyal perdagangan dihasilkan ketika harga menembus saluran. Indikator RSI juga dimasukkan untuk menyaring breakout palsu. Ini hanya diperdagangkan selama sesi London dengan max 5 perdagangan per hari dan max 2% kerugian harian.

Logika Strategi

Strategi ini menggunakan dua rata-rata bergerak dengan panjang 5, satu dihitung dari harga tertinggi dan yang lainnya dari harga terendah, untuk membentuk saluran harga.

Untuk menghindari pecah palsu, indikator RSI ditambahkan untuk mengukur tingkat overbought/oversold.

Juga, strategi hanya diperdagangkan selama sesi London (3am - 11am), dengan maksimal 5 order per hari dan kerugian ekuitas maksimum 2% per hari.

Analisis Keuntungan

Menangkap tren

Saluran MA ganda dapat secara efektif mendeteksi arah tren harga.

Mengurangi kebohongan

Menggunakan RSI overbought/oversold filter mengurangi beberapa sinyal palsu yang disebabkan oleh fluktuasi harga.

Kontrol risiko yang efektif

Perdagangan hanya selama sesi utama dan memiliki pesanan maksimum per hari batas frekuensi perdagangan.

Analisis Risiko

Penembusan palsu dengan volatilitas

Pergeseran harga yang signifikan dapat menyebabkan beberapa sinyal breakout palsu, yang mengarah pada kerugian yang tidak perlu. Parameter dapat dioptimalkan dan lebih banyak filter ditambahkan untuk mengurangi risiko tersebut.

Risiko SL/TP tetap

Menggunakan pips tetap untuk SL/TP berisiko dihentikan / kehilangan keuntungan di pasar yang tidak stabil.

Risiko sesi perdagangan terbatas

Pembukaan posisi hanya selama sesi tetap berisiko kehilangan perdagangan potensial pada jam lain. Pertimbangkan untuk memperluas sesi atau menyesuaikan secara dinamis berdasarkan situasi real-time.

Arahan Optimasi

Pengaturan parameter

Mengoptimalkan parameter seperti panjang MA, angka RSI, pips SL / TP tetap dll untuk menemukan kombinasi terbaik.

Filter tambahan

Tambahkan lebih banyak indikator atau kondisi untuk memverifikasi sinyal, misalnya volume yang lebih tinggi, lebar BB yang berkurang, dll, untuk menghindari kebocoran palsu.

Dinamis SL/TP

Menggunakan stop loss berbasis persentase atau dinamis / mengambil keuntungan alih-alih pips tetap untuk menangani pergerakan pasar yang sepihak dengan lebih baik.

Peninjauan manual

Periksa sinyal secara manual, atau masukkan hanya pada saat terkonfirmasi untuk mencegah terjebak.

Kesimpulan

Strategi ini cukup sederhana dan praktis secara keseluruhan, menggunakan saluran MA ganda untuk menentukan tren dan RSI untuk menyaring breakout palsu. Manajemen risiko melalui jam perdagangan dan batas kerugian juga mendefinisikan toleransi risiko. Masih banyak ruang untuk perbaikan, misalnya penyesuaian parameter, mekanisme SL / TP yang lebih baik dll.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-16 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/
// © SoftKill21
//@version=4
strategy(title="Moving Average", shorttitle="MA", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
len = input(5, minval=1, title="Length")
src = input(high, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out = sma(src, len)
plot(out, color=color.white, title="MA", offset=offset)

len2 = input(5, minval=1, title="Length")
src2 = input(low, title="Source")
offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out2 = sma(src2, len2)
plot(out2, color=color.white, title="MA", offset=offset2)

length = input( 5 )
overSold = input( 10 )
overBought = input( 80 )
price = input(close, title="Source RSI")

vrsi = rsi(price, length)

longcond= close > out and close > out2 and vrsi > overBought
shortcont = close < out and close < out2 and vrsi < overSold
tp=input(150,title="tp")
sl=input(80,title="sl")


strategy.entry("long",1,when=longcond)
//strategy.close("long",when= close < out2)
strategy.exit("long_exit","long",profit=tp,loss=sl)

strategy.entry("short",1,when=shortcont)
//strategy.close("short",when=close >out)
strategy.exit("short_exit","short",profit=tp,loss=sl)

// maxOrder = input(6, title="max trades per day")
// maxRisk = input(2,type=input.float, title="maxrisk per day")
// strategy.risk.max_intraday_filled_orders(maxOrder)

// strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity)


// strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))






Lebih banyak