Strategi purata bergerak berganda

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

img

Ringkasan

Strategi ini menggunakan purata bergerak berganda untuk membentuk saluran dan menangkap arah trend. Isyarat perdagangan dihasilkan apabila harga memecahkan saluran. Penunjuk RSI juga dimasukkan untuk menapis pecah palsu. Ia hanya berdagang semasa sesi London dengan maksimum 5 dagangan sehari dan maksimum 2% kerugian harian.

Logika Strategi

Strategi ini menggunakan dua purata bergerak dengan panjang 5, satu dikira dari harga tertinggi dan yang lain dari harga terendah, untuk membentuk saluran harga. isyarat panjang dipicu apabila harga menutup pecah di atas jalur atas, dan isyarat pendek di bawah jalur bawah.

Untuk mengelakkan pecah palsu, penunjuk RSI ditambahkan untuk mengukur tahap overbought / oversold. Pergi panjang hanya jika RSI melebihi 80, dan pergi pendek hanya jika RSI di bawah 20.

Juga, strategi ini hanya diperdagangkan semasa sesi London (3am - 11am), dengan maksimum 5 pesanan sehari dan kerugian ekuiti maksimum 2% sehari.

Analisis Kelebihan

Mengambil trend

Saluran MA berganda dapat secara berkesan mengesan arah trend harga. Menjatuhkan jalur atas menangkap trend menaik, sementara menjatuhkan jalur bawah menangkap trend menurun.

Mengurangkan pemasangan palsu

Menggunakan penapis overbought / oversold RSI mengurangkan beberapa isyarat pecah palsu yang disebabkan oleh turun naik harga.

Kawalan risiko yang berkesan

Perdagangan hanya semasa sesi utama dan mempunyai pesanan maksimum setiap hari had kekerapan perdagangan.

Analisis Risiko

Penembusan palsu dengan turun naik

Perubahan harga yang signifikan boleh menyebabkan beberapa isyarat pecah palsu, yang membawa kepada kerugian yang tidak perlu. Parameter boleh dioptimumkan dan lebih banyak penapis ditambahkan untuk mengurangkan risiko tersebut.

Risiko SL/TP tetap

Menggunakan pip tetap untuk SL / TP berisiko berhenti / kehilangan keuntungan dalam pasaran yang tidak menentu.

Risiko sesi dagangan terhad

Pembukaan kedudukan hanya semasa sesi tetap berisiko kehilangan perdagangan berpotensi pada jam lain.

Arahan pengoptimuman

Penyesuaian parameter

Mengoptimumkan parameter seperti panjang MA, angka RSI, pips SL / TP tetap dan lain-lain untuk mencari kombinasi terbaik.

Penapis tambahan

Tambah lebih banyak penunjuk atau keadaan untuk mengesahkan isyarat, contohnya jumlah yang lebih tinggi, lebar BB yang berkurangan, dan lain-lain, untuk mengelakkan pecah palsu.

SL/TP dinamik

Gunakan stop loss berasaskan peratusan atau dinamik / mengambil keuntungan bukannya pip tetap untuk menangani pergerakan pasaran yang satu sisi dengan lebih baik.

Ulasan manual

Periksa isyarat secara manual, atau masukkan hanya pada pengosongan yang disahkan untuk mengelakkan terperangkap.

Kesimpulan

Strategi ini agak mudah dan praktikal secara keseluruhan, menggunakan saluran MA berganda untuk menentukan trend dan RSI untuk menapis pecah palsu. Pengurusan risiko melalui jam dagangan dan had kerugian juga menentukan toleransi risiko. Masih banyak ruang untuk penambahbaikan, contohnya 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 lanjut