
Strategi perdagangan dua rata-rata dengan menghitung rata-rata bergerak cepat dan rata-rata bergerak lambat, dan menghasilkan sinyal perdagangan berdasarkan persilangan dua rata-rata bergerak. Strategi multi-head digunakan ketika melewati rata-rata bergerak lambat di atas rata-rata bergerak cepat; strategi kosong digunakan ketika melewati rata-rata bergerak lambat di bawah rata-rata bergerak cepat.
Strategi ini pertama-tama menetapkan panjang rata-rata bergerak cepat (maFastLength) dan panjang rata-rata bergerak lambat (maSlowLength). Kemudian menghitung rata-rata bergerak cepat (fastMA) dan rata-rata bergerak lambat (slowMA). Rata-rata bergerak cepat lebih sensitif terhadap perubahan harga dan dapat digunakan untuk menilai tren saat ini; rata-rata bergerak lambat lebih lambat untuk menilai perubahan harga dan dapat digunakan untuk menilai arah tren.
Ketika bergerak cepat di atas rata-rata bergerak lambat, mengambil beberapa strategi, menghasilkan goLong () sinyal. Ketika bergerak cepat di bawah rata-rata bergerak bergerak lambat, mengambil posisi yang lebih rendah, menghasilkan killLong () sinyal.
Anda dapat memilih untuk melakukan longonly, shorting, atau swapping.
Ketika melakukan strategi berganda, buka lebih banyak posisi saat sinyal goLong ((() keluar; tutup posisi saat sinyal killLong ((() keluar.
Ketika melakukan strategi shorting, buka posisi shorting saat sinyal killLong () keluar; tutup posisi saat sinyal goLong () keluar.
Dalam perdagangan dua arah, buka lebih banyak posisi saat sinyal goLong () keluar; tutup lebih banyak posisi dan buka posisi kosong saat sinyal killLong () keluar.
Selain itu, strategi juga menyiapkan fitur-fitur seperti stop loss, tracking stop loss, dan trading notification, yang memungkinkan Anda untuk memilih secara fleksibel apakah akan digunakan atau tidak.
Strategi ini sederhana, mudah dipahami, dan mudah diterapkan.
Anda bebas memilih untuk melakukan perdagangan over, short, atau two-way.
Fleksibilitas untuk memilih apakah akan menggunakan fitur manajemen risiko seperti Stop Loss, Tracking Stop Loss.
Anda dapat menyesuaikan pesan transaksi, memberi tahu Anda secara real-time tentang tindakan transaksi.
Strategi garis rata-rata cepat dan lambat sensitif terhadap perubahan tren pasar dan dapat menangkap tren yang lebih kuat.
Parameter strategi dapat disesuaikan, dapat disesuaikan dengan parameter yang berbeda untuk pasar, dan sangat mudah beradaptasi.
Ketika pasar tidak memiliki tren yang jelas, sinyal palsu dapat muncul lebih banyak, yang memicu overtrading.
Sistem linier tidak sensitif terhadap kejadian yang tidak terduga dan mungkin melewatkan kesempatan yang tidak terduga.
Perlu memilih parameter rata-rata yang masuk akal, parameter yang dipilih dengan tidak tepat dapat mempengaruhi efek strategi.
Untuk menghindari transaksi acak, sinyal strategi harus dipatuhi secara ketat.
Perlu diperhatikan dampak biaya transaksi terhadap profitabilitas strategi.
Indikator lain seperti RSI dapat diperkenalkan untuk memverifikasi sinyal perdagangan dan menghindari sinyal yang salah.
Anda dapat mengatur fungsi optimasi parameter untuk mencari kombinasi parameter yang optimal secara otomatis.
Anda dapat mengatur stop loss dinamis untuk mengunci keuntungan dan menyesuaikan stop loss sesuai kebutuhan.
Model pembelajaran mesin dapat dimasukkan untuk membantu menentukan arah tren.
Anda dapat mengoptimalkan fitur peringatan pesan agar lebih sesuai dengan kebiasaan trading Anda.
Strategi perdagangan lini ganda secara keseluruhan lebih praktis, lebih sensitif terhadap perubahan tren pasar, dan dapat menangkap peluang perdagangan yang dibawa oleh tren yang lebih kuat. Namun, perlu juga berhati-hati untuk mencegah perdagangan yang salah di pasar tanpa tren, dan menyesuaikan parameter dengan tepat untuk beradaptasi dengan lingkungan pasar yang berbeda. Selain itu, penambahan indikator teknologi bantu dan fungsi optimasi yang tepat dapat meningkatkan stabilitas dan kemampuan beradaptasi strategi.
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)
// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)
// Trade direction
shorting = input(defval=false, title="Short only?")
longonly = input(defval=true, title="Long only?")
swapping = input(defval=false, title="Swap orders?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)
// Messages for buy and sell
message_long_entry = input("Long entry message", title="Long entry message")
message_long_exit = input("Long exit message", title="Long exit message")
message_short_entry = input("Short entry message", title="Short entry message")
message_short_exit = input("Short exit message", title="Short exit message")
// Calculate start/end date and time condition
startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
time_cond = true
// === Vars and Series ===
fastMA = sma(maFastSource, maFastLength)
slowMA = sma(maSlowSource, maSlowLength)
plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)
goLong() =>
crossover(fastMA, slowMA)
killLong() =>
crossunder(fastMA, slowMA)
// Long only
if longonly
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit)
// Short only
if shorting
strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit)
// Order Swapping
if swapping
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
if useStop
strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit)
strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)