3EMA với Chiến lược RSI Stochastic

Tác giả:ChaoZhang, Ngày: 2023-11-15 10:47:20
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng kết hợp nhiều chỉ số. Nó sử dụng ba EMA với các khoảng thời gian khác nhau, Stochastic RSI và ATR để xác định hướng xu hướng và thiết lập các vị trí. Nó sẽ dài khi EMA nhanh hơn vượt qua EMA chậm hơn, với mức dừng lỗ đặt ở mức 3 lần giá trị ATR gần đây và lấy lợi nhuận ở mức 2 lần giá trị ATR gần đây.

Nguyên tắc

Chiến lược này sử dụng ba đường EMA - 8-, 14 và 50 giai đoạn EMA, đại diện cho xu hướng giá trong các khung thời gian khác nhau. Khi EMA 8 giai đoạn vượt qua trên EMA 14 giai đoạn và EMA 14 giai đoạn vượt qua trên EMA 50 giai đoạn, nó báo hiệu sự khởi đầu của xu hướng tăng và một vị trí dài có thể được bắt đầu.

Chỉ số Stochastic RSI kết hợp các tính toán RSI và Stochastic để xác định các điều kiện mua quá mức / bán quá mức. Khi đường Stochastic RSI K vượt qua trên đường D từ bên dưới, nó cho thấy thị trường đang chuyển từ quá mức bán sang triển vọng tăng, cho phép một vị trí dài.

ATR đại diện cho phạm vi biến động gần đây. Chiến lược sử dụng 3 lần ATR như khoảng cách dừng lỗ và 2 lần ATR như khoảng cách lấy lợi nhuận để khóa lợi nhuận và kiểm soát rủi ro.

Ưu điểm

  • EMA lọc tiếng ồn trong dữ liệu giá và xác định hướng xu hướng
  • Stochastic RSI xác định cơ hội đảo ngược
  • ATR theo dõi động stop loss/take profit dựa trên biến động thị trường

Rủi ro

  • Nhiều chỉ số có thể tạo ra các tín hiệu mâu thuẫn
  • Tỷ lệ dừng lỗ / lấy lợi nhuận cố định không thể thích nghi với các điều kiện thị trường thay đổi
  • Các hợp đồng dài hạn ngắn hạn có khả năng đảo ngược

Tối ưu hóa có thể được thực hiện bằng cách điều chỉnh thời gian EMA để tối ưu hóa độ nhạy. Làm cho tỷ lệ ATR có thể điều chỉnh cho phép tùy chỉnh dựa trên điều kiện thị trường. Thêm các chỉ số khác giúp xác nhận tín hiệu và tránh sai lầm.

Tăng cường

  • Điều chỉnh thời gian EMA để tối ưu hóa độ nhạy
  • Làm cho tỷ lệ ATR điều chỉnh
  • Thêm các chỉ số khác để tránh tín hiệu sai

Kết luận

Chiến lược này xem xét xu hướng, mức mua quá mức / bán quá mức và phạm vi biến động để xác định thời gian nhập cảnh. EMA và Stochastic RSI kết hợp hiệu quả xác định xu hướng, trong khi ATR động dừng lỗ / lấy lợi nhuận giúp kiểm soát rủi ro. Với điều chỉnh tham số và tối ưu hóa, chiến lược có thể trở thành một hệ thống theo xu hướng đáng tin cậy. Nhưng cần phải cảnh giác với các tín hiệu sai và các cảnh báo dừng lỗ / lấy lợi nhuận cố định.


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

Thêm nữa