3EMA dengan Strategi RSI Stochastic

Penulis:ChaoZhang, Tarikh: 2023-11-15 10:47:20
Tag:

img

Ringkasan

Ini adalah strategi trend berikut yang menggabungkan beberapa penunjuk. Ia menggunakan tiga EMA dengan tempoh yang berbeza, Stochastic RSI dan ATR untuk mengenal pasti arah trend dan menubuhkan kedudukan. Ia menjadi panjang apabila EMA yang lebih cepat melintasi di atas EMA yang lebih perlahan, dengan stop loss ditetapkan pada 3 kali nilai ATR baru-baru ini dan mengambil keuntungan pada 2 kali nilai ATR baru-baru ini.

Prinsip

Strategi ini menggunakan tiga garis EMA - 8-, 14- dan 50-period EMA, yang mewakili trend harga dalam jangka masa yang berbeza. Apabila EMA 8-period melintasi di atas EMA 14-period, dan EMA 14-period melintasi di atas EMA 50-period, ia menandakan permulaan aliran menaik dan kedudukan panjang boleh dimulakan.

Indikator RSI Stochastic menggabungkan pengiraan RSI dan Stochastic untuk mengenal pasti keadaan overbought / oversold. Apabila garis RSI Stochastic K melintasi di atas garis D dari bawah, ia menunjukkan pasaran beralih dari prospek oversold ke bullish, yang membolehkan kedudukan panjang.

ATR mewakili julat turun naik baru-baru ini. Strategi menggunakan 3 kali ATR sebagai jarak stop loss dan 2 kali ATR sebagai jarak mengambil keuntungan untuk mengunci keuntungan dan mengawal risiko.

Kelebihan

  • EMA menapis bunyi bising dalam data harga dan mengenal pasti arah trend
  • Stochastic RSI mengenal pasti peluang pembalikan
  • ATR secara dinamik mengikuti stop loss/take profit berdasarkan turun naik pasaran

Risiko

  • Pelbagai penunjuk boleh menghasilkan isyarat yang bertentangan
  • Nisbah stop loss/take profit tetap tidak dapat disesuaikan dengan keadaan pasaran yang berubah
  • Pinjaman jangka pendek yang mudah berubah

Pengoptimuman boleh dilakukan dengan menyesuaikan tempoh EMA untuk mengoptimumkan kepekaan. Membuat nisbah ATR boleh disesuaikan membolehkan penyesuaian berdasarkan keadaan pasaran. Menambah penunjuk lain membantu mengesahkan isyarat dan mengelakkan kesilapan.

Peningkatan

  • Sesuaikan tempoh EMA untuk mengoptimumkan kepekaan
  • Buat nisbah ATR boleh diselaraskan
  • Tambah penunjuk lain untuk mengelakkan isyarat palsu

Kesimpulan

Strategi ini mempertimbangkan trend, tahap overbought / oversold, dan julat turun naik untuk mengenal pasti masa kemasukan. EMA dan Stochastic RSI digabungkan secara berkesan mengenal pasti trend, sementara ATR dinamik stop loss / mengambil keuntungan membantu mengawal risiko. Dengan penyesuaian parameter dan pengoptimuman, strategi boleh menjadi sistem trend yang boleh dipercayai. Tetapi isyarat palsu dan amaran stop loss / mengambil keuntungan tetap perlu diperhatikan.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)

Lebih lanjut