Strategi mengikut arah aliran berdasarkan penunjuk EMA


Tarikh penciptaan: 2023-11-06 09:53:27 Akhirnya diubah suai: 2023-11-06 09:53:27
Salin: 0 Bilangan klik: 691
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berdasarkan penunjuk EMA

Gambaran keseluruhan

Strategi ini menggunakan indikator EMA untuk mengenal pasti trend harga saham, dan digabungkan dengan pengiraan perbezaan piawai untuk membeli dan menjual isyarat, untuk mewujudkan strategi perdagangan untuk mengesan trend. Gagasan utama adalah untuk mengira perbezaan harga semasa dengan EMA, dan menetapkan pembelian harga.

Prinsip Strategi

Strategi pertama mengira perbezaan antara harga tutup dan EMA dengan panjang ema_length v. Kemudian mengira perbezaan piawai dalam tempoh ema_length v. Kemudian menentukan faktor arah pembelian k, k adalah 1 untuk membeli bullish dan k - 1 untuk membeli bullish. Kemudian mengira had sinyal pembelian dev_limit, yang k kalikan dengan dev dan kemudian kalikan dengan faktor had. Apabila v melebihi dev_limit, ia menghasilkan isyarat pembelian. Isyarat keluar adalah v melalui sumbu 0.

Strategi ini menawarkan dua model:

  1. Beli turun, beli apabila v berada di bawah dev_limit negatif, iaitu mengikuti trend menurun.

  2. Membeli matawang, apabila dev_limit yang berpasangan pada v membeli matawang, iaitu mengikuti trend kenaikan.

Secara keseluruhannya, strategi ini membolehkan trend dijejaki dengan menetapkan ambang harga beli dengan perbezaan standard harga dan EMA secara dinamik. Parameter faktor mengawal kepekaan isyarat beli. Panjang EMA mengawal kitaran EMA.

Analisis kelebihan strategi

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan indikator EMA untuk mengenal pasti arah trend harga, indikator EMA meluruskan harga, mengenal pasti trend berkesan.

  2. Pengiraan nilai terhad dinamik yang digabungkan dengan perbezaan piawai lebih mudah untuk menyesuaikan diri dengan perubahan pasaran berbanding dengan nilai terhad tetap.

  3. Kedua-dua mod pembelian boleh memilih untuk mengesan trend naik atau turun.

  4. Parameter factor menyediakan ruang untuk menyesuaikan kepekaan pembelian. Parameter ema_length dapat menyesuaikan parameter pengoptimuman kitaran EMA.

  5. Logik strategi jelas dan mudah difahami dan diubah suai.

  6. Anda boleh mengatur pengurusan kedudukan dengan fleksibel dan menggunakan strategi positif untuk mengejar trend turun naik.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Indeks EMA terlewat dan mungkin terlepas titik perubahan trend.

  2. Bergantung kepada parameter yang dioptimumkan, jika parameter yang ditetapkan tidak betul, mungkin terlalu sensitif atau lambat.

  3. Risiko mengejar trend, yang boleh menyebabkan kerugian besar jika trend berbalik.

  4. Transformasi multiroom yang kerap menyebabkan transaksi yang kerap.

  5. Dalam kes-kes yang teruk, isyarat sering berlaku, dan kos kos dagangan meningkat.

Untuk menangani risiko ini, anda boleh mempertimbangkan untuk menambah strategi kawalan risiko stop loss, mengoptimumkan ujian kombinasi parameter untuk mencari parameter terbaik, menambah syarat penapis untuk mengelakkan perdagangan yang terlalu kerap, dan sebagainya.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Uji kesan parameter dari pelbagai kitaran EMA untuk mencari panjang kitaran EMA yang optimum.

  2. Uji faktor dengan nilai yang berbeza untuk mencari sensitiviti nilai terendah yang optimum.

  3. Mengoptimumkan strategi pengurusan kedudukan terbuka, contohnya dengan cara menaikkan kedudukan mengikut trend.

  4. Tambah penapis kepada petunjuk lain untuk mengelakkan perdagangan yang salah dalam keadaan yang tidak menentu.

  5. Meningkatkan strategi hentikan kerugian dan mengawal kerugian tunggal.

  6. Mengoptimumkan parameter untuk kedua-dua model pembelian, mencari kombinasi parameter terbaik.

  7. Kaji isyarat pembalikan trend, dan setkan untuk mematikan trend tracking.

ringkaskan

Strategi ini berdasarkan kepada EMA untuk mengenal pasti arah trend, dan secara dinamik mengira nilai terhad untuk menghasilkan isyarat beli dan jual, untuk menjejaki trend. Logik strategi mudah dan jelas, dan boleh dikonfigurasi secara fleksibel untuk menguruskan kedudukan untuk menjejaki trend secara aktif. Strategi ini juga mempunyai risiko tertentu, yang memerlukan ujian optimum terhadap kombinasi parameter, dan dikendalikan dengan strategi StopIteration.

Kod sumber strategi
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
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/
// © Azzrael

// Based on EMA and EMA Oscilator https://www.tradingview.com/script/qM9wm0PW-EMA-Oscilator-Azzrael/

// (EMA - close) + Std Dev + Factor = detecting oversell/overbuy
// Long only!
// Pyramiding - sometimes, depends on ...
// There 2 enter strategies in one script 
// 1 - Classic, buy on entering to OverSell zone (more profitable ~> 70%)
// 2 - Crazy, buy on entering to OverBuy zone (catching trend and pyramiding, more net profit)
// Exit - crossing zero of (EMA - close)

//@version=5
strategy("STR:EMA Oscilator [Azzrael]", overlay=false, 
 margin_long=100, 
 margin_short=100, 
 currency=currency.USD,
 default_qty_type=strategy.percent_of_equity,
 default_qty_value=30,
 pyramiding=3)

entry_name="Buy"

ema_length = input.int(200, "Period", minval=2, step=10)
limit = input.float(1.7, "Factor", minval=1, step=0.1, maxval=10)
dno = input.string(defval="Buy on enter to OverSell", title="Model", options=["Buy on enter to OverSell", "Buy on enter to OverBuy"]) == "Buy on enter to OverSell"

v = close - ta.ema(close, ema_length)
dev = ta.stdev(v, ema_length)
k = dno ? -1 : 1
dev_limit = k*dev*limit

cond_long = dno ? ta.crossunder(v, dev_limit) : ta.crossover(v, dev_limit)
cond_close = ta.cross(v, 0) 

// dev visualization
sig_col = (dno and v <= dev_limit) or (not dno and v >= dev_limit) ? color.green : color.new(color.blue, 80)
plot(dev_limit, color=color.green)
plot(k*dev, color=color.new(color.blue, 60))
plot(v, color=sig_col )
hline(0)

// Make love not war
strategy.entry(entry_name, strategy.long, when=cond_long)
strategy.close(entry_name, when=cond_close)