Strategi perdagangan kuantitas silang EMA dua arah

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

img

Gambaran umum

Strategi ini menggunakan indikator EMA bidirectional untuk menentukan arah tren utama pasar, dan menggabungkan indikator RSI sebagai waktu pemilihan entri, yang termasuk dalam strategi perdagangan algoritma tren berikut.

Prinsip Strategi

  1. Menghitung beberapa kelompok EMA dengan siklus yang berbeda untuk mengidentifikasi arah tren utama pasar dalam tiga dimensi: jangka pendek, jangka menengah dan jangka panjang
  2. Ketika EMA jangka pendek melintasi di atas EMA jangka menengah panjang, ditentukan bahwa tren bullish telah terbentuk
  3. Ketika EMA jangka pendek melintasi di bawah EMA jangka menengah panjang, ditentukan bahwa tren penurunan telah terbentuk
  4. Menggabungkan indikator RSI untuk menemukan waktu masuk yang tepat. indikator RSI dapat digunakan untuk menentukan zona overbought dan oversold
  5. Dalam tren naik, pergi panjang ketika indikator RSI berada di tingkat rendah; Dalam tren turun, pergi pendek ketika indikator RSI berada di tingkat tinggi

Strategi di atas terutama menerapkan indikator EMA bidirectional untuk menentukan arah tren utama, dan menggunakan indikator RSI sebagai pilihan sinyal masuk, yang merupakan tren khas yang mengikuti strategi perdagangan algoritma.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia dapat dengan jelas menentukan arah tren utama pasar, dan memilih waktu masuk yang lebih baik berdasarkan indikator RSI.

  1. Menggunakan beberapa set EMA untuk mengidentifikasi arah tren utama pasar di bawah beberapa dimensi waktu
  2. Perhitungan indikator EMA sederhana dengan lebih sedikit kebisingan dan menentukan tren utama pasar dengan akurat dan dapat diandalkan
  3. Indikator RSI dapat secara efektif menentukan titik entry dan stop loss untuk secara signifikan mengoptimalkan retr
  4. Struktur algoritma jelas dan mudah dipahami dan dimodifikasi.
  5. Ini dapat secara fleksibel dikombinasikan dengan indikator teknis lainnya untuk meningkatkan kinerja strategi lebih lanjut

Analisis Risiko

Strategi ini juga memiliki beberapa risiko, terutama dalam aspek berikut:

  1. Ketika tren berbalik, titik stop loss mungkin terlalu ideal, sehingga meningkatkan kerugian
  2. Tidak dapat secara efektif menentukan titik pembalikan tren, mungkin kehilangan kesempatan untuk menghentikan kerugian pada waktunya
  3. Parameter EMA dan parameter RSI perlu diuji dan dioptimalkan berulang kali, jika tidak dapat menyebabkan ketidakstabilan
  4. Tidak dapat menjamin bahwa setiap entri adalah waktu yang sempurna, mungkin ada beberapa pengulangan yang tidak perlu
  5. Sulit untuk secara efektif menghindari kesenjangan besar di bawah pengaruh peristiwa mendadak

Untuk mengatasi risiko di atas, optimasi dapat dilakukan di bidang berikut:

  1. Tentukan titik stop loss yang wajar untuk mencegah kerugian yang berlebihan
  2. Meningkatkan indikator lain untuk menentukan pembalikan tren untuk memastikan stop loss yang tepat waktu
  3. Mengoptimalkan kombinasi parameter untuk beradaptasi dengan kondisi pasar yang lebih luas
  4. Mengubah masuk dan stop loss logika untuk mengurangi jumlah pengulangan
  5. Meningkatkan penilaian pengecualian untuk menghindari efek negatif dari kesenjangan pasar

Arahan Optimasi

Dari keuntungan dan risiko dari strategi ini, kita dapat mendapatkan arah yang dapat dioptimalkan berikut:

  1. Pada kerangka kerja EMA bidirectional yang ada, memperkenalkan indikator seperti MACD dan BOLL untuk menilai titik pembalikan tren, sehingga mengoptimalkan strategi mengambil keuntungan dan menghentikan kerugian
  2. Memperkenalkan model pembelajaran mesin untuk memprediksi kemungkinan pembalikan tren dan meningkatkan kinerja strategi
  3. Menerapkan filter canggih untuk secara otomatis mengidentifikasi kondisi pasar yang tidak normal dan secara efektif mencegah kerugian
  4. Menggunakan algoritma genetik, pembelajaran penguatan mendalam dan metode lain untuk mengoptimalkan parameter secara otomatis sehingga strategi dapat beradaptasi dengan lebih banyak jenis pasar
  5. Tambahkan modul stop loss otomatis, dapat secara dinamis menyesuaikan titik stop loss sesuai dengan situasi yang sebenarnya

Dengan memperkenalkan lebih banyak indikator, model prediksi, optimasi parameter, modul pengendalian risiko dan sarana lainnya, strategi ini dapat ditingkatkan lebih lanjut untuk beradaptasi dengan kondisi pasar yang lebih kompleks dan tidak stabil.

Kesimpulan

Artikel ini secara rinci memperkenalkan isi utama strategi perdagangan kuantitatif silang EMA bidirectional. Pertama, ia menguraikan ide-ide utama dan prinsip operasi strategi. Kemudian keuntungan dari strategi itu dianalisis secara menyeluruh. Pada saat yang sama, ia juga menganalisis risiko potensial utama dalam strategi. Atas dasar ini, beberapa arah utama yang dapat dioptimalkan diusulkan. Singkatnya, strategi ini memiliki keuntungan dalam menentukan tren utama pasar, dan juga memiliki beberapa ruang untuk optimasi, yang merupakan strategi perdagangan kuantitatif yang khas. Melalui perbaikan dan optimasi terus-menerus, strategi ini dapat menjadi pilihan penting bagi investor perdagangan algoritmik.


/*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 banyak