Strategi penembusan tren MA ganda


Tanggal Pembuatan: 2024-01-08 16:43:38 Akhirnya memodifikasi: 2024-01-08 16:43:38
menyalin: 0 Jumlah klik: 653
1
fokus pada
1617
Pengikut

Strategi penembusan tren MA ganda

Ringkasan

Sebuah strategi yang menggunakan pergerakan rata-rata dari dua periode yang berbeda untuk menentukan arah tren dan masuk. Strategi ini terutama menggunakan MA lambat untuk menentukan arah tren secara keseluruhan, dan menggunakan MA cepat untuk memfilter masuk, memilih untuk membalikkan garis K untuk masuk ketika arah tren di tingkat besar sesuai, untuk mengejar tingkat kemenangan dan keuntungan yang lebih tinggi.

Prinsip Strategi

Strategi ini terdiri dari beberapa bagian:

Pengertian tren:Dengan menghitung 21 siklus MA, yang didefinisikan sebagai MA lambat, posisinya relatif stabil, dapat digunakan untuk menentukan arah tren keseluruhan. Ketika harga naik mendekati nilai MA berarti tren naik, dan ketika harga turun mendekati nilai MA berarti tren turun.

Filter masuk:Perhitungan MA 5 siklus, yang didefinisikan sebagai MA cepat. Hanya ketika harga menembus MA lambat, dan juga menembus MA cepat, sinyal perdagangan dihasilkan. Desain ini terutama untuk memfilter kemungkinan lebih lanjut dari false breakout.

K-line filter:Strategi hanya melakukan over jika periode K adalah negatif, atau kosong jika periode K adalah positif. Ini mempertimbangkan bahwa ada tingkat keberhasilan yang lebih tinggi untuk masuk dengan menggunakan inversi K. Ini juga digabungkan dengan indikator RSI cepat untuk menghindari masuk ke zona overbought atau oversold.

Filter penyimpanan:Untuk pasar kripto, strategi ini menambahkan tiga kali lebih banyak kondisi penargetan untuk terobosan fluktuasi, memfilter peluang terobosan dalam penurunan skala besar.

Desain Stop Loss:Strategi mendukung stop loss bergerak. Stop loss akan diperbarui secara real-time berdasarkan persentase stop loss yang telah ditetapkan.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Desain Dual MA sederhana, praktis, dan mudah dimengerti.
    1. menggunakan filter kombinasi MA yang cepat dan dapat diandalkan untuk menilai tren;
  2. Ini adalah salah satu cara yang paling efektif untuk mendapatkan uang dari Bitcoin.
  3. Metodologi secara keseluruhan telah dipertahankan dengan baik dan sesuai untuk semua tingkat transaksi;
  4. Mendukung Stop Loss Mobile dan Mengontrol Risiko
  5. Dengan mempertimbangkan karakteristik pasar cryptocurrency, Anda dapat memperoleh keuntungan tambahan dengan menambahkan peluang overpricing.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Pada saat gempa terjadi, ada beberapa kerugian kecil yang terjadi.
  2. K-Line Reversal mungkin tidak memiliki tingkat kemenangan yang tinggi pada saat-saat tertentu.
  3. Pasar cryptocurrency berfluktuasi besar, kemungkinan besar stop loss akan dipicu.
  4. Tidak ada banyak peluang untuk menaikkan atau turun, dan volatilitas pengembalian sangat besar.

Ada beberapa cara untuk mengoptimalkan risiko ini:

  1. Meningkatkan persyaratan masuk untuk menghindari guncangan yang tidak efektif;
  2. Menyesuaikan siklus K-line atau menambahkan filter indikator lainnya;
  3. Mengoptimalkan algoritma stop loss untuk melacak stop loss di dekat sumbu tengah;
  4. Evaluasi efektifitas dari strategi over/under.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimasi parameter: Mengoptimalkan kombinasi parameter siklus MA cepat dan lambat dengan pengulangan yang lebih sistematis, meningkatkan rasio risiko-penghasilan secara keseluruhan.

  2. Identifikasi pola: Menambahkan indikator lain seperti KDJ, MACD, dan lain-lain untuk mengidentifikasi sinyal reversal yang lebih andal.

  3. Optimalisasi Stop LossPengembangan algoritma seperti floating stop loss, tracking stop loss, dan lain-lain untuk mengurangi probabilitas terjadinya stop loss.

  4. Pembelajaran Mesin: Mengumpulkan dan menandai lebih banyak data historis, menghasilkan aturan perdagangan secara otomatis menggunakan metode pembelajaran mesin.

  5. Pengiriman kuantitatif: Mengatur strategi manajemen posisi secara otomatis sesuai dengan kondisi pasar.

Meringkaskan

Strategi penembusan tren MA ganda secara keseluruhan merupakan strategi pelacakan tren yang relatif sederhana dan praktis. Strategi ini lebih mudah diartikan dan dikuasai, dan memiliki keandalan yang lebih tinggi dibandingkan dengan algoritma pembelajaran mesin yang kompleks. Dengan optimasi parameter, perluasan fungsi, dan pengenalan pembelajaran mesin, strategi ini memiliki potensi peningkatan yang besar, dan merupakan titik awal yang bagus untuk perdagangan kuantitatif.

Kode Sumber Strategi
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")

src = useohlc4 == true ? ohlc4 : close

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1 or (up2 == 1 and needex == true) or up3 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)