Strategi EMAskeleton

Penulis:ChaoZhang, Tanggal: 2023-12-07 17:20:44
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator EMA dan RSI untuk mengidentifikasi peluang penyesuaian jangka pendek di Bitcoin. Ini terutama menggunakan EMA sebagai alat grafis utama dan RSI sebagai indikator penilaian tambahan untuk menemukan pola penyesuaian yang jelas. Sinyal perdagangan dihasilkan ketika harga pecah di bawah atau naik kembali di atas garis EMA. Ini juga memiliki kontrol stop loss dan take profit yang dapat diparameterkan.

Prinsip Strategi

Strategi ini terutama menggunakan garis EMA 50 periode dan indikator RSI 25 periode. Garis EMA dianggap sebagai indikator grafis utama dan RSI digunakan untuk menentukan kondisi overbought dan oversold untuk membantu menghasilkan sinyal perdagangan. Sinyal jual dihasilkan ketika harga jatuh di bawah garis EMA, dan sinyal beli dihasilkan ketika harga melanggar di atas garis EMA dan indikator RSI menunjukkan sinyal non-overbought (nilai RSI kurang dari 70). Untuk mengurangi kemungkinan entri yang salah, strategi ini juga menggabungkan garis EMA jangka panjang (seperti 70 periode) sebagai kondisi filter tambahan.

Setelah memasuki perdagangan, strategi ini juga menetapkan stop loss dan take profit level. Jarak stop loss dapat disesuaikan, default menjadi 5,1%; jarak take profit juga dapat disesuaikan, default menjadi 9,6%. Ini secara efektif membatasi kerugian maksimum per perdagangan.

Singkatnya, strategi ini terutama mengandalkan pola garis EMA, dilengkapi dengan indikator RSI untuk menghindari kondisi overbought dan oversold, sementara memiliki kontrol stop loss dan take profit.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Kombinasi EMA dan RSI membuat sinyal lebih dapat diandalkan daripada hanya mengandalkan satu indikator.

  2. Ini secara efektif membatasi kerugian per perdagangan dan merupakan alat kontrol risiko yang sangat penting.

  3. Panjang EMA, panjang RSI dan lainnya adalah parameter yang dapat disesuaikan. Pengguna dapat menemukan set parameter optimal untuk kondisi pasar yang berbeda.

  4. Strategi ini memungkinkan pengaturan kisaran tanggal backtest secara internal untuk memverifikasi kinerja.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko, terutama dari:

  1. BT Bitcoin memiliki pergerakan yang tidak stabil, stop dapat dijalankan. Meskipun stop ditetapkan, BT Bitcoin sering memiliki perubahan harga yang besar yang dapat mengambil stop yang mengarah pada kerugian yang lebih besar dari yang diharapkan.

  2. Risiko penarikan. Strategi ini tidak mempertimbangkan kontrol penarikan secara keseluruhan.

  3. Sinyal yang lebih lemah dalam tren yang kuat. Tren BT Bitcoin dapat menjadi cukup diperpanjang selama kondisi pasar tertentu. Sinyal jangka pendek cenderung berkinerja buruk yang menyebabkan berhenti dari perdagangan yang baik.

Untuk mengendalikan dan mengurangi risiko ini:

  1. Mengizinkan rentang stop loss yang lebih luas. Selama kondisi tren yang kuat, rentang stop loss dapat diperluas, seperti hingga 10%, untuk menghindari berhenti terlalu dini.

  2. Tambahkan filter indikator lainnya. indikator yang mengikuti tren dapat ditambahkan untuk menghindari perdagangan selama periode konsolidasi yang berkepanjangan.

  3. Mengoptimalkan parameter. parameter tes diatur di berbagai kondisi pasar. parameter switch diatur ketika tren kuat muncul untuk meningkatkan kualitas sinyal.

Arahan Optimasi

Ada ruang tambahan untuk mengoptimalkan strategi ini:

  1. Tambahkan kontrol total penarikan. Bisa menetapkan persentase penarikan maksimum, seperti 20%, yang menghentikan perdagangan ketika mencapai untuk membatasi kerugian.

  2. Batasi frekuensi masuk. Dapat membatasi jumlah perdagangan per satuan waktu, seperti 2 perdagangan per jam maksimal, untuk mencegah over-trading.

  3. Optimalkan parameter. Uji kombinasi parameter untuk kondisi pasar yang berbeda. Buat template parameter untuk beralih antara dalam waktu nyata yang sesuai dengan kondisi saat ini.

  4. Menggabungkan dengan indikator lain Mengintegrasikan tren, volatilitas dan metrik lainnya untuk menciptakan aturan masuk sistem perdagangan yang lebih komprehensif.

Ringkasan

Secara keseluruhan, strategi ini terutama mengandalkan pola penyesuaian BT Bitcoin jangka pendek, menggunakan EMA dan RSI untuk menghasilkan sinyal perdagangan yang jelas, sambil memiliki kontrol stop loss dan take profit.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 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/
// © mmoiwgg

//@version=4
strategy(title="EMA+RSI Pump & Drop Swing Sniper (With Alerts & SL+TP) - Strategy", shorttitle="EMA+RSI Swing Strategy", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=50, minval=0)
emarsiSource = input(close, title="EMA+RSI Source")
condSource = input(high, title="Long+Short Condition Source")
emaVal = ema(emarsiSource, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(emarsiSource, rsiLength)

//Safety 
emaLength2 = input(title="Safety EMA Length", type=input.integer, defval=70, minval=0)
emaSource2 = input(close, title="Safety EMA Source")
ema = ema(emaSource2, emaLength2)
emaColorSource2 = close
emaBSource2 = close

// Backtest+Dates
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)        // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest end window
window()  => time >= start and time <= finish ? true : false       // create function - add window() to entry/exit/close

// Conditions
exit_long = crossover(emaVal, condSource)
longCond = crossunder(emaVal, condSource) and close > ema

//Stoploss + TakeProfit
sl = input(0.051, step=0.001, title="Stop Loss")
tp = input(0.096, step=0.001, title="Take Profit")

// Plots Colors
colors = emarsiSource > emaVal and rsiVal > 14 ? color.green : color.red
emaColorSource = input(close, title="Line Color Source")
emaBSource = input(close, title="Line Color B Source")

// Plots
plot(ema, color=emaColorSource2[1] > ema and emaBSource2 > ema ? color.green : color.red, linewidth=1)
plot(emaVal, color=emaColorSource[1] > emaVal and emaBSource > emaVal ? color.green : color.red, linewidth=3)
plotcandle(open, high, low, close, color=colors)


//Strategy Entry+Exits
strategy.entry("long",1,when=window() and longCond)
strategy.close("long",when=window() and exit_long)
strategy.exit("long tp/sl", "long", profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick)


Lebih banyak