Strategi Perdagangan Kuantiti Saluran Dua Arah EMA

Penulis:ChaoZhang, Tarikh: 2024-01-24 17:31:41
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk EMA dua arah untuk menentukan arah trend utama pasaran, dan menggabungkan penunjuk RSI sebagai masa pemilihan kemasukan, yang tergolong dalam trend mengikuti strategi dagangan algoritma.

Prinsip Strategi

  1. Mengira pelbagai kumpulan EMA dengan kitaran yang berbeza untuk mengenal pasti arah trend utama pasaran dalam tiga dimensi: jangka pendek, jangka sederhana dan jangka panjang
  2. Apabila EMA jangka pendek melintasi di atas EMA jangka menengah dan panjang, ia ditentukan bahawa trend menaik telah terbentuk
  3. Apabila EMA jangka pendek melintasi di bawah EMA jangka menengah dan panjang, ia ditentukan bahawa trend menurun telah terbentuk
  4. Menggabungkan penunjuk RSI untuk mencari masa kemasukan yang sesuai.
  5. Dalam trend menaik, pergi panjang apabila penunjuk RSI berada pada tahap yang rendah; Dalam trend menurun, pergi pendek apabila penunjuk RSI berada pada tahap yang tinggi

Strategi di atas terutamanya menggunakan penunjuk EMA dua arah untuk menentukan arah trend utama, dan menggunakan penunjuk RSI sebagai pemilihan isyarat kemasukan, yang tergolong dalam trend tipikal yang mengikuti strategi perdagangan algoritma.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia dapat menentukan dengan jelas arah trend utama pasaran, dan memilih masa kemasukan yang lebih baik berdasarkan penunjuk RSI.

  1. Menggunakan pelbagai set EMA untuk mengenal pasti arah trend utama pasaran di bawah pelbagai dimensi masa
  2. Pengiraan penunjuk EMA adalah mudah dengan kurang bunyi bising dan ia menentukan trend utama pasaran dengan tepat dan boleh dipercayai
  3. Indikator RSI boleh menentukan titik kemasukan dan henti kehilangan dengan berkesan untuk mengoptimumkan retribusi pulangan dengan ketara
  4. Struktur algoritma adalah jelas dan mudah difahami dan diubah suai.
  5. Ia boleh digabungkan dengan fleksibel dengan penunjuk teknikal lain untuk meningkatkan lagi prestasi strategi

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko, terutamanya dalam aspek berikut:

  1. Apabila trend berbalik, titik stop loss mungkin terlalu ideal, sehingga meningkatkan kerugian
  2. Tidak dapat menentukan titik pembalikan trend dengan berkesan, mungkin kehilangan peluang untuk menghentikan kerugian pada waktunya
  3. Parameter EMA dan parameter RSI memerlukan ujian dan pengoptimuman berulang, jika tidak, ia boleh menyebabkan ketidakstabilan
  4. Tidak boleh menjamin bahawa setiap entri adalah masa yang sempurna, mungkin terdapat berulang kali yang tidak perlu
  5. Sukar untuk mengelakkan jurang besar secara berkesan di bawah pengaruh peristiwa tiba-tiba

Untuk menangani risiko di atas, pengoptimuman boleh dibuat dalam bidang berikut:

  1. Titik stop loss yang ditetapkan dengan munasabah untuk mengelakkan kerugian yang berlebihan
  2. Meningkatkan penunjuk lain untuk menentukan pembalikan trend untuk memastikan stop loss tepat pada masanya
  3. Mengoptimumkan kombinasi parameter untuk menyesuaikan diri dengan keadaan pasaran yang lebih luas
  4. Mengubah logik masuk dan stop loss untuk mengurangkan bilangan pengulangan
  5. Meningkatkan penghakiman pengecualian untuk mengelakkan kesan buruk jurang pasaran

Arahan pengoptimuman

Dari kelebihan dan risiko strategi ini, kita boleh mendapatkan arah optimum berikut:

  1. Pada rangka kerja EMA dua hala yang sedia ada, memperkenalkan penunjuk seperti MACD dan BOLL untuk menilai titik pembalikan trend, dengan itu mengoptimumkan mengambil keuntungan dan strategi berhenti kerugian
  2. Memperkenalkan model pembelajaran mesin untuk meramalkan kebarangkalian pembalikan trend dan meningkatkan lagi prestasi strategi
  3. Menggunakan penapis canggih untuk mengenal pasti keadaan pasaran yang tidak normal secara automatik dan berkesan mencegah kerugian
  4. Menggunakan algoritma genetik, pembelajaran penguatan mendalam dan kaedah lain untuk mengoptimumkan parameter secara automatik supaya strategi dapat disesuaikan dengan lebih banyak jenis pasaran
  5. Tambah modul kehilangan henti automatik, boleh secara dinamik menyesuaikan titik kehilangan henti mengikut keadaan sebenar

Dengan memperkenalkan lebih banyak penunjuk, model ramalan, pengoptimuman parameter, modul kawalan risiko dan cara lain, strategi ini boleh ditingkatkan lagi untuk menyesuaikan diri dengan keadaan pasaran yang lebih kompleks dan tidak menentu.

Kesimpulan

Artikel ini secara terperinci memperkenalkan kandungan utama strategi perdagangan kuantitatif silang EMA dua hala. Pertama, ia menggariskan idea utama dan prinsip operasi strategi. Kemudian kelebihan strategi itu dianalisis sepenuhnya. Pada masa yang sama, ia juga menganalisis risiko berpotensi utama dalam strategi. Atas dasar ini, beberapa arah utama yang dapat dioptimumkan dicadangkan. Ringkasnya, strategi ini mempunyai kelebihan menentukan trend utama pasaran, dan juga mempunyai beberapa ruang untuk pengoptimuman, yang merupakan strategi perdagangan kuantitatif biasa. Melalui peningkatan dan pengoptimuman berterusan, strategi ini boleh menjadi pilihan penting bagi pelabur perdagangan algoritma.


/*backtest
start: 2023-01-23 00:00:00
end: 2024-01-23 00:00:00
period: 4h
basePeriod: 15m
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/
// © Investoz
// Indikatorn är byggd som ett utbildningsyfte och är därför ingen rekommendation för köp/sälj av aktier. Tanken är att skapa en visuell form i en graf
// som visar om det finns någon trend såväl positiv som negativ. En dialogruta med en varning talar om vilken trend som råder. I koden finns en möjlighet
// att ta position eller gå ur position om man vill skapa en startegi kring denna trendindikator. Rekommenderar dock starkt att inte enbart förlita sig på denna
// indikator som beslut för köp/sälj då resultaten blir negativa om man köper på psoitiv trend och säljer på negativ trend. Det måste kombineras med andra idéer
// och därför fungerar denna skript mer som ett komplement till sin egen strategi.
// Det är fritt fram för vem som helst att använda sig av denna indikator.  
//@version=4
//Skapar en strategiskript med 5 % av eget kapital som ett exempel. Detta går att ändra i skriptets inställningar, välj egenskaper och sedan ändra orderstorlek
//till ett annat värde av % på eget kapital.
strategy("© Investoz trendvarningar", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
//Lägger till inmatningar till skriptindikatorn. Användaren kan se och redigera inmatningar i objektdialogen efter eget val.
ema1 = input(21, minval=1, maxval=500, title="Lila linje")
valema1=input(true, title="Visa lila linje")
ema2 = input(34, minval=1, maxval=500, title="Blå linje")
valema2=input(true, title="Visa blå linje")
ema3 = input(55, minval=1, maxval=500, title="Grön linje")
valema3=input(true, title="Visa grön linje")
ema4 = input(89, minval=1, maxval=500, title="Gul linje")
valema4=input(true, title="Visa gul linje")
ema5 = input(141, minval=1, maxval=500, title="Orange linje")
valema5=input(true, title="Visa orange linje")
ema6 = input(230, minval=1, maxval=500, title="Röd linje")
valema6=input(true, title="Visa röd linje")
ema7 = input(371, minval=1, maxval=500, title="Röd linje")
valema7=input(true, title="Visa röd linje")
//Inmatningar för antal staplar
startbar = input(1, minval=1, maxval=1, title="Första stapeln")
Endbar = bar_index
//Källa input, stängning. Användaren kan själv byta till vilken källa som önskas.
src = input(close, title="Source")
//Antal staplar sedan den längsta ema började och framåt. 
tid=Endbar + startbar - 371
//EMA loop
aema1 = ema(src, ema1)
bema2 = ema(src, ema2)
cema3 = ema(src, ema3)
dema4 = ema(src, ema4)
eema5 = ema(src, ema5)
fema6 = ema(src, ema6)
gema7 = ema(src, ema7)
//Skriver ut linjer i diagrammet om förhållandet är sant, annars falskt.
h=plot(valema1 ? aema1 : na, title="Lila linje", style=plot.style_line, linewidth=1, color=color.purple)
i=plot(valema2 ? bema2 : na, title="Blå linje", style=plot.style_line, linewidth=1, color=color.blue)
j=plot(valema3 ? cema3 : na, title="Grön linje", style=plot.style_line, linewidth=1, color=color.green)
k=plot(valema4 ? dema4 : na, title="Gul linje", style=plot.style_line, linewidth=1, color=color.yellow)
l=plot(valema5 ? eema5 : na, title="Orange linje", style=plot.style_line, linewidth=1, color=color.orange)
m=plot(valema6 ? fema6 : na, title="Röd linje", style=plot.style_line, linewidth=1, color=color.red)
n=plot(valema7 ? gema7 : na, title="Brun linje", style=plot.style_line, linewidth=1, color=color.maroon)
//Fyller bakgrunden mellan två linjer med en viss färg.
fill(h, i, color = color.purple,transp=34)
fill(i, j, color = color.blue,transp=34)
fill(j, k, color = color.green,transp=34)
fill(k, l, color = color.yellow,transp=34)
fill(l, m, color = color.orange,transp=34)
fill(m, n, color = color.red,transp=34)
//Skapa en algoritm för positiv trend
PositivTrend = crossover(aema1,gema7)?1:0
TrendPositiv = ema(close,1) > aema1 and aema1 > bema2?1:0
//Skapa en algoritm för negativ trend
NegativTrend = crossunder(aema1,gema7)?1:0
TrendNegativ = ema(close,1) < aema1 and aema1 < bema2?1:0
//Skapar en textruta med varningstext för positiv trend
varningtextpositiv = "Varning för positiv trend."+"\n" + "Leta efter att ta position!"
// if PositivTrend
//     varningpositiv=label.new(
//      bar_index, 
//      low,  
//      xloc=xloc.bar_index, 
//      yloc=yloc.price,
//      color=color.black, 
//      textcolor=color.green,
//      text=varningtextpositiv,
//      style=label.style_label_down,
//      textalign=text.align_left)
//Skapar en textruta med varningstext för negativ trend
varningtextnegativ = "Varning för negativ trend."+"\n" + "Leta efter utgången!"
// if NegativTrend
//     varningnegativ=label.new(
//      bar_index, 
//      low,  
//      xloc=xloc.bar_index, 
//      yloc=yloc.price,
//      color=color.black, 
//      textcolor=color.red,
//      text=varningtextnegativ,
//      style=label.style_label_up,
//      textalign=text.align_left)
//Köp om positiv trend
if (PositivTrend) 
    strategy.entry("Ta position", strategy.long, when = PositivTrend)
//Sälj om negativ trend
if (NegativTrend)
    strategy.close("Ta position", when = NegativTrend, comment="Gå ur position")
//Beräkning av positiv trend
vspositiv(positiv)=>valuewhen(Endbar==startbar,positiv,0)
vepositiv(positiv)=>valuewhen(Endbar==Endbar,positiv,0)
positivmean(TrendPositiv)=>
    csumpositiv = cum(TrendPositiv)
//Slut//   
    a = vepositiv(csumpositiv)
//Start//
    b = vspositiv(csumpositiv)
//Slut - Start// 
    (a - b)/(tid)
positivmeanpositiv = positivmean(TrendPositiv) 
//Beräkning av negativ trend
vsnegativ(negativ)=>valuewhen(Endbar==startbar,negativ,0)
venegativ(negativ)=>valuewhen(Endbar==Endbar,negativ,0)
negativmean(TrendNegativ)=>
    csumnegativ = cum(TrendNegativ)
//Slut//   
    a = venegativ(csumnegativ)
//Start//
    b = vsnegativ(csumnegativ)
//Slut - Start// 
    (a - b)/(tid)
negativmeannegativ = negativmean(TrendNegativ) 
//Inmatning av text som ska in i texruta som visar antal staplar i trend
logga = "© Investoz: Trend i tid"+ "\n"
streck = "--------------------------------------------------------"
totalastaplar = "\n" + "Dagar totalt: " + tostring(tid)+ " dagar "+"\n"+ streck + "\n"
totalpositiv = "Dagar totalt i positiv trend "+" 📈 : "  +tostring(positivmeanpositiv*tid, "##.##") +" dagar " + "\n"
totalnegativ = "\n" + "Dagar totalt i negativ trend" + " 📉 : "  +tostring(negativmeannegativ*tid, "##.##") +" dagar " 
//Textruta för antal staplar i trend
// if barstate.ishistory
//     barcountlbl=label.new(
//      bar_index, 
//      low,  
//      xloc=xloc.bar_index, 
//      yloc=yloc.price,
//      color=color.black, 
//      textcolor=color.yellow,
//      text=logga+streck+totalastaplar+totalpositiv+streck+totalnegativ,
//      style=label.style_label_lower_left,
//      textalign=text.align_left)
//     label.delete(barcountlbl[1])
////////////////////////////////// 

Lebih lanjut