Theo dõi xu hướng Chiến lược giao dịch ngắn hạn

Tác giả:ChaoZhang, Ngày: 2024-01-04 17:52:21
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số đánh giá xu hướng ADX và đường trung bình động để xác định và theo dõi xu hướng.

Chiến lược logic

  1. Sử dụng ADX để đánh giá hướng xu hướng. ADX trên 20 cho thấy thị trường đang có xu hướng.
  2. Sử dụng đường chéo EMA để xác định xu hướng tăng và giảm. đường chéo vàng cho xu hướng tăng và đường chéo chết cho xu hướng giảm.
  3. Sử dụng VWAP như một mức giá tham chiếu quan trọng. Giá trên VWAP cho thấy tâm lý tăng và dưới đó cho thấy tâm lý giảm.
  4. Nhập các vị trí dựa trên phân tích xu hướng toàn diện từ các chỉ số khi xác định sự đảo ngược xu hướng.

Phân tích lợi thế

  1. Phân tích xu hướng toàn diện sử dụng nhiều chỉ số cải thiện độ chính xác.
  2. VWAP tránh giao dịch trong các vùng giá không hiệu quả.
  3. Chỉ giao dịch khi ADX xác nhận xu hướng, tránh các tín hiệu sai.
  4. Giao dịch đột phá phù hợp với động lực, có khả năng thành công cao hơn

Phân tích rủi ro

  1. Việc phá vỡ thất bại dẫn đến dừng lỗ là có thể. Có thể tối ưu hóa việc đặt dừng lỗ.
  2. Tần suất giao dịch cao hơn có nguy cơ các giao dịch cá nhân bị mất.
  3. Khung thời gian và lựa chọn biểu tượng ảnh hưởng đến hiệu suất.

Hướng dẫn tối ưu hóa

  1. Tối ưu hóa các thông số ADX để xác định xu hướng tốt hơn so với phạm vi.
  2. Kiểm tra các kết hợp EMA để xác định xu hướng tốt hơn.
  3. Mở rộng stop loss để giảm chi phí giao dịch.
  4. Giảm kích thước vị trí để giảm rủi ro cho mỗi giao dịch.

Kết luận

Chiến lược này sử dụng toàn diện các đường trung bình động, chỉ số xu hướng và mức giá chính để xác định chính xác xu hướng thị trường. Nó xác định sự đảo ngược xu hướng để phá vỡ giao dịch và theo dõi hướng xu hướng mới cho lợi nhuận ngắn hạn. Tăng cường thêm có thể cải thiện hiệu suất.


/*backtest
start: 2023-12-27 00:00:00
end: 2023-12-29 23:00:00
period: 3m
basePeriod: 1m
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/
// © mariocastel

//@version=5
strategy("Wave Rider", overlay=true, initial_capital = 100000)

session = input(defval = "1400-1500", title = "Session Time")
t = not na(time(timeframe.period,session))
RR = input.float(1.5, "Risk to reward", step=0.5)
var bool movetoBE = input(false, "Move to Break Even")
BE = input.float(1, "Break Even at", step=0.5)

vwap_mult = 0.001 * input(3, "VWAP Multiplier")
aboveVWAP = ta.vwap(close) * (1 + vwap_mult)
belowVWAP = ta.vwap(close) * (1 - vwap_mult)
sym = input("BTC_USDT:swap", "VWAP Source")

QQQaboveVWAP = request.security(sym, "3", aboveVWAP)
QQQbelowVWAP = request.security(sym, "3", belowVWAP)
QQQclose = request.security(sym, "3", close)

ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema60 = ta.ema(close, 60)
ema9 = ta.ema(close, 9)

opentrades = strategy.opentrades > 0

aboveEMA = close > ema60
belowEMA = close < ema60

uptrend = aboveEMA and aboveEMA[1] and aboveEMA[2] and aboveEMA[3] and aboveEMA[4] and aboveEMA[5] and aboveEMA[6] and aboveEMA[7] and aboveEMA[8] and aboveEMA[9] and aboveEMA[10] and aboveEMA[11] and aboveEMA[12] and aboveEMA[13] and aboveEMA[14] and aboveEMA[15] and aboveEMA[16] and aboveEMA[17] and aboveEMA[18] and aboveEMA[19] and aboveEMA[20] and aboveEMA[21] and aboveEMA[22] and aboveEMA[23] and aboveEMA[24] and aboveEMA[25] and aboveEMA[26] and aboveEMA[27] and aboveEMA[28] and aboveEMA[29]
downtrend = belowEMA and belowEMA[1] and belowEMA[2] and belowEMA[3] and belowEMA[4] and belowEMA[5] and belowEMA[6] and belowEMA[7] and belowEMA[8] and belowEMA[9] and belowEMA[10] and belowEMA[11] and belowEMA[12] and belowEMA[13] and belowEMA[14] and belowEMA[15] and belowEMA[16] and belowEMA[17] and belowEMA[18] and belowEMA[19] and belowEMA[20] and belowEMA[21] and belowEMA[22] and belowEMA[23] and belowEMA[24] and belowEMA[25] and belowEMA[26] and belowEMA[27] and belowEMA[28] and belowEMA[29]

buy = (low < ema20 and low > ema50 and close > ema9) and QQQclose > QQQaboveVWAP  or (low[1] < ema20 and low[1] > ema50 and close > ema9) and QQQclose > QQQaboveVWAP and uptrend
sell = (high > ema20 and high < ema50 and close < ema9) and QQQclose < QQQbelowVWAP  or (high[1] > ema20 and high[1] < ema50 and close < ema9) and QQQclose < QQQbelowVWAP and downtrend

var float entry = na
var float sl = na
var float qty = na
var float tp = na
var float be = na

if ema20 > ema50 and ema9 > ema20 
    if buy and not opentrades and t and uptrend
        alert("Wave Rider Setup")
        entry := close
        sl := ema50
        qty := 1000/(close - sl) * 1
        if close - sl > syminfo.mintick*300
            tp := close + ((close - sl)*1)
        else 
            tp := close + ((close - sl)*RR)
        be := close + ((close - sl)*BE)
        strategy.entry("Buy", strategy.long, qty=qty)
        strategy.exit("Close Buy", "Buy",qty=qty, stop=sl, limit=tp)

if ema20 < ema50 and ema9 < ema20 
    if sell and not opentrades and t and downtrend
        alert("Wave Rider Setup")
        entry := close
        sl := ema50
        qty := 1000/(sl - close) * 1
        if sl - close > syminfo.mintick*300
            tp := close - ((sl - close)*1)
        else
            tp := close - ((sl - close)*RR)
        be := close - ((sl - close)*BE)
        strategy.entry("Sell", strategy.short, qty=qty)
        strategy.exit("Close Sell", "Sell", qty=qty, stop=sl, limit=tp)

// Adjust BEs
if movetoBE == true
    if strategy.position_size > 0
        if high >= be
            sl := entry
            strategy.cancel("Close Buy")
            strategy.exit("Close Buy", "Buy", qty=qty, stop=sl, limit=tp)   
    if strategy.position_size < 0
        if low <= be
            sl := entry
            strategy.cancel("Close Sell")  
            strategy.exit("Close Sell", "Sell", qty=qty, stop=sl, limit=tp)  


EoD_time = timestamp(year, month, dayofmonth, 15, 58, 00)
EoD = time == EoD_time
if EoD
    strategy.close_all()

barcolor(color=buy ? color.rgb(191, 255, 131): na)
barcolor(color=sell ? color.rgb(255, 149, 149): na)
ema20plot = plot(ema20, color=color.rgb(168, 131, 131, 55))
ema50plot = plot(ema50, color=color.black)
fill(ema20plot, ema50plot, color=color.rgb(168, 131, 131, 85))
plot(ema9, color=color.red)
plot(ema60, color=color.purple)
plot(QQQaboveVWAP)
plot(QQQbelowVWAP)
plotshape(uptrend, style=shape.triangleup, location=location.belowbar, color=color.black)
plotshape(downtrend, style=shape.triangledown, location=location.abovebar, color=color.black)


Thêm nữa