Strategi ini didasarkan pada persilangan dua rata-rata bergerak dengan pengaturan parameter yang berbeda untuk mengirim sinyal beli dan jual. Sinyal beli dikirim ketika rata-rata bergerak dengan periode yang lebih pendek menerobos rata-rata bergerak dengan periode yang lebih lama dari arah bawah; Sinyal jual dikirim ketika rata-rata bergerak dengan periode yang lebih pendek menerobos rata-rata bergerak dengan periode yang lebih lama dari arah atas.
Strategi ini ditulis menggunakan bahasa skrip pine. Pertama-tama, dengan input didefinisikan jenis, panjang, dan sumber harga dari dua rata-rata bergerak, masing-masing diberi nama p1 dan p2. Di mana p1 mewakili rata-rata periode yang lebih pendek, dan p2 mewakili rata-rata periode yang lebih lama.
Fungsi crossover dan crossunder menentukan persimpangan dua garis rata. Ketika p1 dari arah bawah menembus p2, sinyal beli akan dikirim; Ketika p1 dari arah atas menembus p2, sinyal jual akan dikirim.
Untuk melakukan transaksi, strategi menggunakan fungsi strategy.entry untuk membuat posisi overhead atau kosong saat sinyal dikirim. Jika parameter shortOnly diaktifkan, hanya transaksi yang menjual sinyal.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Anda dapat mengurangi sinyal yang tidak valid dengan menyesuaikan panjang garis rata-rata, memasukkan kondisi penyaringan, dan lain-lain. Anda juga dapat mengkombinasikan indikator tren untuk menentukan pergerakan saham besar.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Memperkenalkan Volume weighted average price atau typical price sebagai sumber harga, meningkatkan reliabilitas sinyal crossover
Peningkatan Validation Period Peningkatan Validation Period untuk menghindari short-term crossover error
Termasuk ATR Stop loss, yang ditetapkan sebagai kerugian maksimum yang dapat ditanggung berdasarkan volatilitas pasar
Menggunakan parameter optimasi pencocokan kurva untuk mencari kombinasi parameter optimal
Pertimbangkan untuk mengirim sinyal perdagangan ketika tren siklus besar konsisten
Strategi silang dua garis rata ini mudah dipahami dan diterapkan secara keseluruhan, dengan sinyal perdagangan yang dibentuk oleh silang dua garis rata, dapat disesuaikan secara tinggi. Namun, mungkin juga menghasilkan lebih banyak sinyal yang tidak efektif dalam situasi getaran. Risiko dapat dikurangi dengan pengoptimalan parameter dan pengoptimalan aturan, ruang pengoptimalan yang lebih besar, layak untuk diteliti lebih lanjut.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © RafaelPiccolo
//@version=4
strategy("Double MA Cross", overlay=true)
type1 = input("SMA", "MA Type 1", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len1 = input(10, minval=1, title="Length 1")
src1 = input(close, "Source 1", type=input.source)
type2 = input("SMA", "MA Type 2", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len2 = input(50, minval=2, title="Length 2")
src2 = input(close, "Source 2", type=input.source)
shortOnly = input(false, "Short only")
tema(src, len)=>
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
return = 3 * (ema1 - ema2) + ema3
getPoint(type, len, src)=>
return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)
p1 = getPoint(type1, len1, src1)
p2 = getPoint(type2, len2, src2)
shortCondition = crossunder(p1, p2)
longCondition = crossover(p1, p2)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (longCondition)
if (shortOnly)
strategy.close("Short")
else
strategy.entry("Long", strategy.long)
plot(p1, "MA 1", p1 < p2 ? color.red : color.green)
plot(p2, "MA 2", color.blue)