Nhiều chiến lược theo xu hướng


Ngày tạo: 2023-11-17 17:19:37 sửa đổi lần cuối: 2023-11-17 17:19:37
sao chép: 1 Số nhấp chuột: 664
1
tập trung vào
1617
Người theo dõi

Nhiều chiến lược theo xu hướng

Tổng quan

Chiến lược theo dõi xu hướng đa dạng sử dụng tổng hợp bốn chỉ số MACD, RSI, ATR và DEMA để xác định xu hướng ngắn hạn và dài hạn của cổ phiếu, giao dịch theo xu hướng. Chiến lược này kết hợp lợi thế của giao dịch phá vỡ và giao dịch theo xu hướng, có thể nắm bắt xu hướng dài hơn và tìm kiếm thời gian vào cửa tốt hơn trên đường ngắn.

Nguyên tắc chiến lược

Chiến lược giao dịch MACD

MACD là chỉ số phân tán trung bình di chuyển, một chỉ số theo dõi xu hướng. MACD bao gồm trung bình di chuyển nhanh và trung bình di chuyển chậm, các tham số thường được sử dụng là đường nhanh 12 ngày EMA, đường chậm 26 ngày EMA, đường tín hiệu là MACD 9 ngày EMA.

Chiến lược bán tháo RSI

RSI là chỉ số tương đối mạnh và yếu, phản ánh tình trạng mua bán quá mức của cổ phiếu. RSI được xác định bằng cách so sánh mức tăng trung bình và mức giảm trung bình trong một khoảng thời gian.

Phân tích lợi thế

Chiến lược này kết hợp bốn chỉ số MACD, RSI, ATR và DEMA, kết hợp theo dõi xu hướng và giao dịch phá vỡ, có thể tìm kiếm thời gian nhập cảnh tốt hơn trong xu hướng, với các lợi thế sau:

  1. MACD có thể xác định hiệu quả hướng và biến đổi của xu hướng trung và dài hạn của giá cổ phiếu.

  2. RSI có thể đánh giá xem cổ phiếu có đang mua quá mức hay bán quá mức trong thời gian ngắn, tránh theo đuổi giá cao và giá thấp khi xu hướng đảo ngược.

  3. ATR động điều chỉnh vị trí đường dừng để kiểm soát hiệu quả tổn thất đơn.

  4. DEMA là một chỉ số phán đoán phụ trợ, có thể lọc một phần tiếng ồn.

  5. Một sự kết hợp của nhiều chỉ số có thể làm tăng độ tin cậy của tín hiệu giao dịch.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Các chỉ số đa dạng có thể gây ra sự khác biệt và dẫn đến các tín hiệu giao dịch sai.

  2. ATR là một chỉ số dừng lỗ động, dễ bị phá vỡ trong biến động lớn dẫn đến thua lỗ.

  3. DEMA được sử dụng như một chỉ số của xu hướng, có thể lọc ra các cơ hội giao dịch ngắn hạn mạnh mẽ hơn.

  4. Các tham số chiến lược không phù hợp có thể dẫn đến giao dịch thường xuyên, tăng chi phí giao dịch và mất điểm trượt.

Để kiểm soát rủi ro, các tham số chỉ số có thể được điều chỉnh thích hợp, đồng thời thêm các chỉ số phán đoán hỗ trợ khác để xác nhận. Phát triển các chiến lược giao dịch định lượng đòi hỏi phân tích tỉ mỉ dữ liệu lịch sử, kiểm tra ngược mạnh mẽ và quản lý rủi ro thận trọng.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa bằng cách:

  1. Kiểm tra các tổ hợp tham số khác nhau để tìm ra tham số tối ưu.

  2. Tăng các chiến lược dừng lỗ, chẳng hạn như dừng di chuyển, dừng trung bình, để kiểm soát rủi ro hơn nữa.

  3. Thêm nhiều chỉ số phán đoán phụ trợ như KDJ, Brin và nhiều hơn nữa để tăng độ chính xác của tín hiệu.

  4. Tối ưu hóa các lựa chọn thời gian đầu tư, như chiến lược kết hợp với đột phá để tìm kiếm điểm mua tốt hơn.

  5. Phân biệt thị trường đa đầu và thị trường trống, sử dụng các tham số khác nhau.

  6. Mô hình hóa phân loại theo đặc điểm của cổ phiếu, làm cho chiến lược thích ứng hơn.

Tóm tắt

Chiến lược theo dõi xu hướng đa dạng sử dụng tổng hợp bốn chỉ số MACD, RSI, ATR và DEMA, thực hiện sự kết hợp hữu cơ của theo dõi xu hướng và phá vỡ xu hướng. So với chiến lược chỉ số đơn, chiến lược này có thể cung cấp tín hiệu giao dịch đáng tin cậy hơn, tránh một số tín hiệu giả.

Mã nguồn chiến lược
/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
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/
// © prim722

// © OTS Music

//@version=4
strategy("Atrend by OTS", overlay=true)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
if (crossover(delta, 0))
	strategy.entry("MACD buy", strategy.long, comment="MACD buy")
if (crossunder(delta, 0))
	strategy.entry("MACD sell", strategy.short, comment="MACD sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
length = input( 18 )
overSold = input( 30 )
overBought = input( 70 )
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
if (not na(vrsi))
	if (co)
		strategy.entry("RSI buy", strategy.long, comment="RSI buy")
	if (cu)
		strategy.entry("RSI sell", strategy.short, comment="RSI sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=false)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.white)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="", text="", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.white, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_line, linewidth=2, color=color.gray)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="", text="", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.white : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.gray : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="ATrend Buy", message="ATrend Buy!")
alertcondition(sellSignal, title="ATrend Sell", message="ATrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="ATrend Direction Change", message="ATrend has changed direction!")

length1 = input(25, minval=1)
srcb = input(close, title="Source")
e1 = ema(srcb, length1)
e2 = ema(e1, length)
dema = 2 * e1 - e2
plot(dema, "DEMA", color.red)