Trend Crossover Strategi Perdagangan


Tarikh penciptaan: 2023-10-07 09:56:30 Akhirnya diubah suai: 2023-10-07 09:56:30
Salin: 0 Bilangan klik: 637
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini menggunakan prinsip persilangan rata-rata bergerak untuk menentukan arah trend melalui persilangan garis cepat dan lambat untuk memberi isyarat membeli dan menjual. Strategi ini mudah dan boleh dipercayai, sesuai untuk pelabur yang mencari pendapatan yang stabil.

Prinsip

Strategi ini menggunakan dua rata-rata bergerak, masing-masing adalah rata-rata 7 hari sebagai garis cepat, dan rata-rata bulan sebagai garis perlahan. Garis cepat dapat menangkap perubahan harga dengan lebih cepat, garis perlahan menghapuskan kebisingan, dan menentukan arah trend. Apabila garis cepat menerobos garis perlahan dari arah bawah, anggap sebagai isyarat pasar lembu, lakukan lebih banyak; apabila garis cepat jatuh dari arah atas dan memecahkan garis perlahan, anggap sebagai isyarat pasar beruang, lakukan kosong.

Khususnya, strategi ini dihasilkan dengan mengira purata bergerak mudah 7 hari dan purata bergerak mudah Mei, dan digambarkan pada carta harga. Apabila garis 7 hari memotong garis Mei dari bawah, ia menghasilkan isyarat beli. Apabila garis 7 hari jatuh dari atas, ia menghasilkan isyarat jual.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Teori ini adalah asas yang mudah dan boleh dipercayai, berdasarkan kepada prinsip persilangan purata bergerak yang terkenal.

  2. Dengan hanya menggunakan dua purata bergerak, pilihan parameter mudah dan mudah dilaksanakan.

  3. Garis laju dan garis perlahan digunakan bersama-sama untuk mengenal pasti trend dan menapis bunyi pasaran.

  4. Garis purata berkala yang berbeza digunakan untuk menangkap perubahan trend pada skala masa yang berbeza.

  5. Ia mudah dilaksanakan, kodnya mudah difahami, logiknya jelas.

  6. Tanda-tanda visual memberi isyarat yang jelas dan intuitif, dan keputusan operasi lebih jelas.

Risiko

Strategi ini mempunyai beberapa risiko:

  1. Operasi bersilang linear hanya boleh menyebabkan isyarat yang salah.

  2. Tidak dapat menilai trend yang kuat atau lemah, dan mungkin sering dihentikan semasa berlakunya gempa.

  3. Siklus garis purata tetap tidak dapat menyesuaikan diri dengan perubahan pasaran dan perlu mengoptimumkan parameter.

  4. Tidak dapat menentukan tempat membeli dan menjual, terdapat risiko tertentu untuk beroperasi di pasaran.

  5. Berdasarkan teori yang lebih mudah, kesan mungkin diskaun, ruang keuntungan terhad.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menambah petunjuk lain untuk menentukan titik jual beli, seperti petunjuk KDJ untuk menilai overbought dan oversold.

  2. Menambah mekanisme penangguhan kerugian, seperti menjejaki penangguhan kerugian, untuk mengelakkan peningkatan kerugian.

  3. Mengoptimumkan parameter kitaran garis purata supaya dapat menyesuaikan diri dengan kitaran yang berbeza.

  4. Meningkatkan penapisan lalu lintas untuk mengelakkan penembusan palsu.

  5. Penilaian kecenderungan yang kuat dan lemah, seperti pengiraan slope garis rata-rata, operasi intensiti yang berbeza.

  6. Ia juga boleh digunakan untuk mengkaji kebarangkalian trend, dengan menggunakan lebih banyak analisis kitaran masa.

ringkaskan

Strategi ini berdasarkan prinsip persilangan rata-rata bergerak, mudah dan boleh dipercayai untuk mengenal pasti trend bullish dan bearish. Kelebihannya adalah mudah dan mudah dikendalikan, kelemahan adalah terdapat risiko mengikuti trend secara buta.

Kod sumber strategi
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 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/
// © dadashkadir

//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma
    ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al  = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al,  title = "Giriş",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

FromDay    = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear   = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay      = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if al
    strategy.entry("Al", strategy.long, when=Timerange())
if sat
    strategy.entry("Sat", strategy.short, when=Timerange())