Berdasarkan strategi double moving average golden cross dan death cross


Tanggal Pembuatan: 2024-02-27 16:21:02 Akhirnya memodifikasi: 2024-02-27 16:21:02
menyalin: 0 Jumlah klik: 686
1
fokus pada
1617
Pengikut

Berdasarkan strategi double moving average golden cross dan death cross

Ringkasan

Strategi ini adalah strategi lintas rata-rata bergerak yang khas, yang menggunakan dua set rata-rata, satu set rata-rata cepat, dan satu set rata-rata lambat secara bersamaan. Ketika rata-rata cepat melewati rata-rata lambat, sinyal beli dihasilkan; Ketika rata-rata cepat melewati rata-rata lambat, sinyal jual dihasilkan. Strategi ini menggunakan kedua rata-rata EMA dan SMA secara bersamaan, membentuk dua set rata-rata cepat dan lambat.

Prinsip Strategi

Logika utama dari strategi ini adalah berdasarkan pada persilangan dua set garis rata-rata cepat dan lambat untuk menilai waktu masuk dan keluar.

Pertama, perhitungkan dua set rata-rata cepat dan lambat:

  • EMA Rapid 1 berlangsung selama 8 hari.
  • EMA cepat kedua, durasi 21 hari
  • Grup pertama SMA lambat, 50 hari
  • SMA 2 dengan durasi 200 hari

Kemudian, pertimbangkan apakah EMA cepat adalah Gold Fork atau SMA lambat adalah Dead Fork:

  • Jika EMA pada hari ke-8 melewati SMA pada hari ke-50, itu adalah sinyal garpu.
  • Jika 8 hari EMA di bawah melewati 50 hari SMA, untuk sinyal dead fork

Untuk menyaring sinyal palsu, kelompok kedua dari EMA dan SMA dikonfirmasi:

  • Sebuah sinyal perdagangan hanya akan dikirim ketika 21 hari EMA juga telah naik atau turun melewati 50 hari SMA

Dengan demikian, dengan dua set konfirmasi garis lurus cepat dan lambat, banyak sinyal palsu dapat disaring, sehingga meningkatkan keandalan sinyal.

Ketika penilaian menghasilkan sinyal beli, masuk lebih banyak; Ketika penilaian menghasilkan sinyal jual, masuk kosong.

Selain itu, strategi ini juga menyertakan logika stop loss. Saat memegang posisi, harga stop loss dan stop loss akan dilacak berdasarkan rasio untung rugi yang telah disetel.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Menggunakan kombinasi dua garis sejajar, dapat secara efektif memfilter sinyal palsu, meningkatkan akurasi sinyal
  2. Menggunakan kombinasi EMA dan SMA, yang menggabungkan sensitivitas EMA terhadap perubahan harga terbaru dan kelancaran SMA
  3. Set Stop Loss, kunci keuntungan, dan kendalikan risiko
  4. Prinsip-prinsip yang sederhana, mudah dipahami dan dimodifikasi
  5. Parameter yang dapat disesuaikan untuk lingkungan pasar yang berbeda

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Strategi garis rata cenderung menghasilkan lebih banyak keuntungan kecil dan kerugian kecil yang bergoyang
  2. Pada saat tren berubah secara dramatis, kemungkinan kerugian yang lebih besar
  3. Pengaturan parameter yang tidak tepat juga dapat menyebabkan efisiensi yang buruk.

Untuk mengendalikan risiko, disarankan:

  1. Menyesuaikan kombinasi parameter yang sesuai dengan kondisi pasar yang berbeda
  2. Parameter pengoptimalan berdasarkan hasil pengamatan ulang, membuat strategi lebih sesuai dengan target pasar
  3. Set Stop Loss untuk Mengontrol Besarnya Kerugian Tunggal

Arah optimasi

Strategi ini juga dapat dioptimalkan dalam beberapa hal:

  1. Uji lebih banyak kombinasi garis rata-rata cepat dan lambat untuk mencari kombinasi parameter yang optimal
  2. Menggunakan pembelajaran mesin atau algoritma genetik untuk menemukan parameter yang optimal secara otomatis
  3. Meningkatkan indikator penilaian tren untuk menghindari perdagangan berlawanan arah
  4. Meningkatkan stop loss bergerak atau stop loss bergerak untuk lebih baik mengunci keuntungan
  5. Peningkatan keandalan sinyal yang dikombinasikan dengan volume transaksi atau indikator volatilitas
  6. Kombinasi multi-strategi/multi-varietas, memanfaatkan risiko yang terdistribusi yang tidak relevan

Meringkaskan

Secara keseluruhan, strategi biner linear Forex ini memiliki beberapa fitur sederhana, intuitif, dan mudah diterapkan. Strategi ini dapat dioptimalkan berdasarkan parameter pasar dan kebutuhan, dan dapat digunakan dengan indikator teknis lainnya atau kombinasi strategi.

Kode Sumber Strategi
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-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/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)