
Strategi ini adalah strategi yang menggunakan garis rata-rata dan EMA untuk melakukan perdagangan trend merentasi jangka masa. Strategi ini mengesan arah trend dengan menggabungkan entiti SMA, EMA dan K-line dari pelbagai kitaran, untuk mencapai trend yang berisiko rendah.
Strategi ini terutamanya berdasarkan perbandingan garis rata-rata SMA tiga kitaran yang berbeza untuk menentukan pergerakan harga. Selain itu, bantuan menggunakan EMA untuk menentukan arah entiti.
Khususnya, strategi ini menggunakan garis purata SMA tiga kitaran, iaitu 3 kitaran, 8 kitaran, dan 10 kitaran. Harga di bawah tiga garis purata dianggap sebagai penurunan, dan isyarat beli dikeluarkan apabila harga kembali ke garis purata.
Selain itu, strategi ini juga menggunakan EMA 5 kitaran untuk membantu menentukan arah entiti K-line, memastikan entiti naik ketika membeli.
Dalam pengurusan pegangan, strategi menetapkan jumlah kali keuntungan atau tempoh pegangan maksimum sebagai cara menghentikan kerugian.
Strategi ini menggabungkan garis rata untuk menilai trend dalam tempoh masa yang berbeza, dapat menyaring bunyi pasaran dengan berkesan, menjejaki trend garis panjang tengah. Parameter strategi telah dioptimumkan, dan berkinerja baik dalam pengulangan sejarah.
Di samping itu, strategi untuk memasukkan penilaian EMA dapat mengelakkan pembelian entiti K-line ke bawah, yang dapat mengurangkan kehilangan slippage yang tidak perlu.
Secara keseluruhannya, strategi ini stabil, boleh dipercayai dan sesuai digunakan untuk pengesanan talian panjang dan sederhana.
Strategi ini sensitif terhadap parameter, 3 kitaran SMA atau EMA yang tidak betul akan menyebabkan penurunan kualiti isyarat perdagangan. Perlu mengoptimumkan parameter untuk pelbagai jenis.
Strategi ini tidak mengambil kira lonjakan atau jurang yang besar. Jika terdapat berita besar yang menyebabkan harga melonjak tinggi, kerugian tertentu mungkin berlaku. Anda boleh menetapkan harga berhenti untuk mengelakkan risiko ini.
Anda boleh mempertimbangkan untuk menambah lebih banyak parameter kitaran, membentuk perbandingan EMA atau SMA dalam pelbagai jangka masa, menjadikan strategi lebih tepat dalam penghakiman trend.
Anda boleh menguji seting harga stop loss untuk mengurangkan kerugian dalam keadaan yang melampau dengan jaminan keuntungan.
Anda boleh cuba memperkenalkan pembelajaran mesin untuk mengoptimumkan parameter secara dinamik, supaya parameter strategi dapat disesuaikan dengan keadaan pasaran dalam masa nyata.
Strategi ini secara keseluruhan stabil dan boleh dipercayai, menggunakan perbandingan garis rata untuk menentukan arah trend, ditambah dengan isyarat penapisan EMA. Dengan pengoptimuman parameter dan tetapan kawalan angin, anda boleh meningkatkan lagi kemenangan strategi dan kadar keuntungan.
/*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"}]
*/
//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)
// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")
// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)
// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]
// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])
// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))