Strategi ini menggunakan indikator EMA untuk mengidentifikasi tren harga dan menggabungkan standar deviasi untuk menghitung sinyal beli dan jual untuk tren setelah perdagangan.
Strategi ini pertama-tama menghitung perbedaan v antara harga penutupan dan EMA dari panjang ema_length. Kemudian menghitung dev deviasi standar v selama periode ema_length. Selanjutnya menentukan koefisien arah k, dengan k=1 untuk panjang dan k=-1 untuk pendek. Batas dev_limit sinyal beli dihitung oleh k * dev * faktor limit. Ketika v melintasi dev_limit, sinyal beli dipicu. Sinyal keluar adalah ketika v melintasi 0.
Strategi ini menyediakan dua mode:
Beli pendek, pergi panjang ketika v melintasi di bawah negatif dev_limit, untuk mengikuti downtrend.
Beli panjang, pergi panjang ketika v melintasi di atas positif dev_limit, untuk mengikuti uptrend.
Singkatnya, strategi secara dinamis menghitung standar deviasi dari perbedaan antara harga dan EMA untuk menetapkan ambang batas dan mengikuti tren. Faktor mengontrol sensitivitas sinyal beli. ema_length menentukan periode EMA. Mode beli mengontrol arah pesanan.
Keuntungan dari strategi ini meliputi:
EMA mengidentifikasi arah tren dengan baik dengan meratakan harga.
Batas dinamis berdasarkan standar deviasi beradaptasi lebih baik daripada batas tetap.
Dua mode beli memungkinkan mengikuti tren naik atau turun.
Faktor ini memberikan fleksibilitas dalam menyesuaikan sensitivitas pembelian. ema_length memungkinkan optimasi periode EMA.
Logikanya sederhana dan mudah dimengerti dan dimodifikasi.
Ukuran posisi dapat dikonfigurasi secara fleksibel untuk mengikuti tren agresif.
Risiko dari strategi:
EMA memiliki keterlambatan dan mungkin melewatkan titik balik tren.
Ini bergantung pada optimasi parameter. pengaturan yang tidak benar menyebabkan sensitivitas yang tidak cukup atau oversensitivity.
Tren yang mengikuti risiko kerugian yang lebih besar ketika tren berbalik.
Sering beralih panjang/pendek meningkatkan frekuensi perdagangan.
Sinyal yang sering terjadi di pasar yang berbeda-beda meningkatkan biaya.
Untuk mengatasi risiko, pertimbangkan untuk menambahkan stop loss, mengoptimalkan parameter, menambahkan filter untuk menghindari overtrading, dll.
Strategi dapat dioptimalkan dengan:
Mencoba periode EMA yang berbeda untuk menemukan panjang yang optimal.
Memeriksa nilai faktor yang berbeda untuk menemukan sensitivitas terbaik.
Mengoptimalkan strategi ukuran posisi, misalnya piramida.
Menambahkan filter untuk menghindari perdagangan yang salah di pasar yang bergolak.
Menggabungkan stop loss untuk mengendalikan kerugian perdagangan tunggal.
Mengoptimalkan parameter secara terpisah untuk dua mode pembelian.
Menelusuri sinyal pembalikan tren untuk menghentikan tren yang mengikuti.
Strategi ini mengidentifikasi tren dengan EMA dan menghasilkan perintah ambang dinamis untuk mengikuti tren. Logika sederhana dan jelas. Ukuran posisi dapat agresif untuk mengejar tren. Ini memiliki risiko yang perlu ditangani melalui optimasi parameter dan stop loss. Ini berfungsi sebagai contoh yang baik untuk mempelajari kombinasi indikator dan tuning parameter.
/*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)