Xu hướng theo chiến lược dựa trên EMA Crossover

Tác giả:ChaoZhang, Ngày: 2023-09-15 11:51:34
Tags:

Bài viết này giải thích chi tiết về một chiến lược theo xu hướng sử dụng EMA crossover để tạo ra tín hiệu giao dịch. Nó nhằm mục đích cải thiện độ vững chắc của chiến lược thông qua tối ưu hóa các thông số trung bình động.

I. Chiến lược logic

Các quy tắc chính là:

  1. Thiết lập EMA nhanh và EMA chậm, với EMA nhanh cho sự nhạy cảm thay đổi giá và EMA chậm cho xu hướng.

  2. Đi dài trên EMA nhanh vượt qua EMA chậm, và đi ngắn trên crossover bên dưới.

  3. Đặt tỷ lệ EMA khi thời gian chậm ≥ 3 lần thời gian nhanh, để giảm tín hiệu sai.

  4. Tùy chọn cho chế độ chỉ dài để tránh giao dịch ngược xu hướng.

  5. Thời gian thử nghiệm ngược có thể tùy chỉnh để tối ưu hóa tham số.

Bằng cách điều chỉnh các thông số EMA, độ nhạy và sự ổn định có thể được cân bằng để tận dụng xu hướng.

II. Lợi thế của Chiến lược

Ưu điểm lớn nhất là sự đơn giản để dễ sử dụng, phù hợp với các nhà giao dịch hạn chế thời gian.

Một lợi thế khác là khả năng giảm whipsaws thông qua tối ưu hóa tham số.

Cuối cùng, chế độ chỉ dài tránh giao dịch ngược xu hướng và phù hợp với một số thị trường nhất định như cổ phiếu.

III. Những điểm yếu tiềm tàng

Tuy nhiên, một số vấn đề vẫn tồn tại:

Thứ nhất, EMA vốn có vấn đề chậm trễ, gây ra việc bỏ lỡ các mục nhập tối ưu.

Thứ hai, cài đặt không đúng có thể lọc quá mức gây ra các giao dịch bị bỏ lỡ.

Cuối cùng, các cơ chế dừng lỗ và lấy lợi nhuận cần được cải thiện.

IV. Tóm tắt

Tóm lại, bài viết này đã giải thích một chiến lược theo xu hướng dựa trên giao thoa EMA. Nó nhằm mục đích cải thiện độ bền bằng cách điều chỉnh các thông số EMA. Với các quy tắc đơn giản và rõ ràng, nó dễ thực hiện nhưng các rủi ro như sự chậm trễ của EMA cần ngăn ngừa.


/*backtest
start: 2023-08-15 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
//
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 
// I think it's due to poor choice in choosing EMA lengths: Market Wizard Ed Seykota has a guideline for moving average crossovers: the slow line should be at least 3x the fast line.
// This removes a lot of the whipsaws inherent in moving average systems, which means greater profitability.
// His other piece of advice: long-only strategies are best in stock markets where there's a lot more upside potential.
//
// Using these simple rules, we can reduce a lot of the whipsaws and low profitability trades! This strategy was made so you can see for yourself before trading.
//
// === HOW TO USE THIS INDICATOR ===
// 1) Choose your market and timeframe.
// 2) Choose the length.
// 3) Choose the multiplier.
// 4) Choose if the strategy is long-only or bidirectional. 
//
// Don't overthink the above! We don't know the best answers, that's why this strategy exists! We're going to test and find out.
//  After you find a good combination, set up an alert system with the default Exponential Moving Average indicators provided by TradingView.
//
// === TIPS ===
// Increase the multiplier to reduce whipsaws (back and forth trades).
// Increase the length to take fewer trades, decrease the length to take more trades.
// Try a Long-Only strategy to see if that performs better.
//
strategy(title="EMA Crossover Strategy", shorttitle="EMA COS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, currency=currency.USD,commission_type=strategy.commission.percent,commission_value=0.1)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
length = input(type=input.integer,defval=20,minval=1,title="Length")
ratio = input(type=input.integer,defval=3,title="Multiplier (3x length, 4x length, etc)",options=[3,4,5,6,7,8,9,10])
longOnly = input(type=input.bool,defval=false,title="Long Only")
fast = ema(hl2,length)
slow = ema(hl2,length * ratio)
plot(fast,linewidth=2,color=color.orange,title="Fast")
plot(slow,linewidth=2,color=color.blue,title="Slow")

longEntry = crossover(fast,slow)
shortEntry = crossunder(fast,slow)

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    crossover(fast,slow) and 
       time > timestamp(start_year, 1, 1, 01, 01)
exitLong() =>
    longOnly and crossunder(fast,slow)
strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() =>
    not longOnly and crossunder(fast,slow) and 
       time > timestamp(start_year, 1, 1, 01, 01)
exitShort() =>
    false
strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())

Thêm nữa