EMA Slope Cross Trend Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2023-10-17 17:02:30
Tag:

img

Ringkasan

Strategi ini menggunakan persimpangan cerun dua EMA dengan panjang yang berbeza untuk menjana trend mengikuti isyarat.

Keadaan yang membuat strategi memasuki pasaran adalah:

  • Peningkatan Peningkatan Peningkatan Peningkatan Peningkatan Peningkatan dan harga > EMA 200: pergi Long
  • Pendapatan yang cepat < Pendapatan yang perlahan dan harga < EMA 200: pergi pendek

Apabila cerun mudah bersilang ke arah yang bertentangan, ia menutup kedudukan.

Strategi ini berfungsi dengan baik pada Bitcoin dan altcoin yang paling cair dan bermodal, tetapi berfungsi dengan baik pada aset yang tidak menentu juga, terutamanya jika mereka sering menjadi tren. Ia berfungsi dengan baik dalam jangka masa 4 jam.

Terdapat juga penapis Volatiliti pilihan, yang membuka kedudukan hanya jika perbezaan antara dua cerun adalah lebih daripada nilai tertentu.

Nikmatilah!

Logika Strategi

Inti strategi ini adalah untuk membandingkan cerun dua EMA dengan panjang yang berbeza.

Pertama, EMA dengan panjang 130 dan 400 dikira, kemudian cerun masing-masing dikira, kemudian EMA panjang 3 dikira pada setiap cerun untuk mendapatkan lengkung cerun yang halus.

Apabila cerun EMA cepat melintasi di atas cerun EMA perlahan, isyarat beli dihasilkan.

Untuk menapis bunyi bising, EMA tempoh 200 boleh digunakan sebagai penapis trend, mempertimbangkan isyarat panjang hanya apabila harga di atas EMA, dan isyarat pendek hanya apabila di bawah EMA.

Di samping itu, penapis turun naik boleh digunakan, menghasilkan isyarat hanya apabila perbezaan antara dua cerun lebih besar daripada ambang, untuk mengelakkan kes di mana cerun bersilang tetapi turun naik tidak mencukupi.

Apabila cerun cepat dan perlahan bersilang secara berlawanan, kedudukan ditutup untuk menghentikan keuntungan / kerugian.

Analisis Kelebihan

  1. Menggunakan persimpangan cerun untuk menjana isyarat boleh dengan berkesan mengesan trend

  2. Penyesuaian gabungan tempoh EMA boleh disesuaikan dengan keadaan pasaran yang berbeza

  3. Penapis trend mengelakkan disesatkan oleh tindakan harga yang bergolak

  4. Penapis turun naik menapis isyarat palsu

  5. Logik yang mudah dan jelas, mudah difahami dan dilaksanakan

  6. Boleh digunakan pada pelbagai jangka masa

Analisis Risiko

  1. Pembukaan dan penutupan yang kerap mungkin berlaku di pasaran yang luas

  2. Tempoh EMA yang tidak sesuai boleh terlepas titik perubahan trend

  3. Parameter harus disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berubah

  4. Seperti sistem MA, trend besar boleh berbalik pada melampau

Arahan pengoptimuman

  1. Cuba kombinasi tempoh EMA yang berbeza untuk mencari parameter optimum

  2. Pilih parameter mengikut ciri aset dan keadaan pasaran

  3. Pertimbangkan untuk menambah strategi stop loss untuk mengawal risiko

  4. Pertimbangkan penyesuaian dinamik tempoh EMA

  5. Uji nilai ambang turun naik yang berbeza

  6. Keberkesanan ujian merentasi jangka masa

Ringkasan

Strategi ini mempunyai logik yang jelas, mudah difahami, menggunakan persimpangan kemiringan EMA untuk menjana isyarat dan mengesan trend dengan berkesan. Penapis trend dan turun naik mengurangkan perdagangan yang bising. Penyesuaian kombinasi tempoh EMA menyesuaikan dengan keadaan pasaran yang berbeza. Secara keseluruhan strategi trend berikut yang mudah dan praktikal yang bernilai diuji dan dioptimumkan dalam perdagangan langsung.


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy(title="Slopes",initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.06, slippage = 2, default_qty_value=30, overlay=false)

//definizione input

start = timestamp(input(2018, "start year"), input(1, "start month"), input(1, "start day"), 00, 00)
end = timestamp(input(2020, "end year"), input(1, "end month"), input(1, "end day"), 00, 00)

average = input (title="Source MA Type", type=input.string, defval="EMA",options=["EMA","SMA"])

len1=input(130,title="Fast MA Length")
len2=input(400,title="Slow MA Length")

smoothingavg = input (title="Smoothing MAs Type", type=input.string, defval="EMA",options=["EMA","SMA"])
smoothingavglen = input (3,title="Smoothing MAs Length")

trendfilter=input(true,title="Trend Filter")
trendfilterperiod=input(200,title="Trend Filter MA Period")
trendfiltertype=input (title="Trend Filter MA Type", type=input.string, defval="EMA",options=["EMA","SMA"])

volatilityfilter=input(false,title="Volatility Filter")
volatilitydelta=input(0.0003,step=0.0001,title="Delta Slopes EMA")

//variabili

m1 = if average == "EMA" 
    ema(close,len1)
else
    sma(close,len1)

m2=if average == "EMA" 
    ema(close,len2)
else
    sma(close,len2)

slp1=(m1-m1[1])/m1
slp2=(m2-m2[1])/m2

e1=if smoothingavg == "EMA" 
    ema(slp1,smoothingavglen)
else
    sma(slp1,smoothingavglen)

e2=if smoothingavg == "EMA" 
    ema(slp2,smoothingavglen)
else
    sma(slp2,smoothingavglen)

plot(e1,color=color.yellow)
plot(e2,color=color.red)
//plot (abs(e1-e2),color=color.white)
//plot (ema(e1-e2,9),color=color.yellow)

//variabili accessorie e condizioni

TrendConditionL=if trendfiltertype =="EMA"
    close>ema(close,trendfilterperiod)
else
    close>sma(close,trendfilterperiod)
    
TrendConditionS=if trendfiltertype =="EMA"
    close<ema(close,trendfilterperiod)
else
    close<sma(close,trendfilterperiod)
    
VolatilityCondition = abs(e1-e2) > volatilitydelta

ConditionEntryL= if trendfilter == true
    if volatilityfilter == true
        e1>e2 and TrendConditionL and VolatilityCondition
    else
        e1>e2 and TrendConditionL
else
    if volatilityfilter == true
        e1>e2 and VolatilityCondition
    else 
        e1>e2

ConditionEntryS= if trendfilter == true
    if volatilityfilter == true
        e1<e2 and TrendConditionS and VolatilityCondition
    else 
        e1<e2 and TrendConditionS
else
    if volatilityfilter == true
        e1<e2 and VolatilityCondition
    else
        e1<e2

ConditionExitL=crossunder(e1,e2)
ConditionExitS=crossover(e1,e2)

if true
    if ConditionExitS
        if strategy.position_size < 0
            strategy.close("SLPShort")

if true
    if ConditionExitL
        if strategy.position_size > 0
            strategy.close("SLPLong")

if true
    if ConditionEntryL
        strategy.entry ("SLPLong",long=true)
        
if true
    if ConditionEntryS 
        strategy.entry("SLPShort",long=false)

Lebih lanjut