
Chiến lược phá vỡ chồng lên EMA ba lần sử dụng chỉ số di chuyển trung bình ba lần để xác định xu hướng thị trường, nhập vào điểm phá vỡ xu hướng. Chiến lược này kết hợp với tín hiệu đánh giá hình dạng K.
Chiến lược này dựa trên các nguyên tắc sau:
Sử dụng ba đường EMA với các chu kỳ khác nhau (đường 200, đường 50, đường 20) để đánh giá xu hướng thị trường lớn, xu hướng trung hạn và xu hướng ngắn hạn.
Một tín hiệu mua được tạo ra khi xu hướng ngắn hạn EMA (đường 20 ngày) vượt qua đường trung bình EMA (đường 50 ngày) lên; một tín hiệu bán được tạo ra khi nó vượt qua đường xuống.
Kết hợp hình dạng K, đánh giá độ tin cậy của tín hiệu đột phá. Chỉ khi giá đóng cửa của đường K thứ hai cao hơn (<) giá cao nhất (<) giá thấp nhất của ngày trước, thì nó được coi là đột phá đáng tin cậy.
Thiết lập điểm dừng để tránh rủi ro vượt quá phạm vi biến động hợp lý.
Sử dụng nhiều chỉ số EMA để đánh giá xu hướng, tăng độ chính xác đánh giá.
Kết hợp với K-line hình dạng lọc tín hiệu sai lệch, tránh rủi ro giao dịch không cần thiết.
Thiết lập điểm dừng để kiểm soát hiệu quả tổn thất đơn lẻ.
Trong một thời gian bất ổn, chỉ số EMA tạo ra nhiều tín hiệu sai lệch và không có khả năng đánh giá hiệu quả xu hướng thị trường.
Các chỉ số đơn lẻ được kết hợp một cách đơn giản, ít phán đoán hơn đối với các trường hợp phức tạp.
Không tính đến chi phí giao dịch, bạn có thể không kiếm được lợi nhuận trong thị trường phí cao.
Các chỉ số khác như MACD, KDJ có thể được đưa vào để tạo ra các chỉ số kết hợp, tăng độ chính xác của phán đoán.
Các tham số chiến lược có thể được tối ưu hóa theo các tham số khác nhau của giống và chu kỳ để phù hợp hơn với đặc điểm của giống.
Có thể đưa ra chỉ số khối lượng giao dịch để tránh tín hiệu sai lệch thấp.
Ba EMA chồng lên chiến lược đột phá toàn bộ tư duy rõ ràng và dễ hiểu, thông qua EMA đánh giá xu hướng thị trường chủ yếu và tìm thời gian để tham gia khi xu hướng biến đổi. Tuy nhiên, chiến lược này có một số hạn chế, không thể xử lý tốt các tình huống phức tạp, được khuyến nghị sử dụng với các chỉ số khác và tối ưu hóa tham số để thích ứng với môi trường thị trường rộng hơn.
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)
entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")
stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")
get_level(level, level100, level0) =>
level * (level100 - level0) + level0
buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]
if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
l = label.new(bar_index, na)
entryPrice1 = get_level(entryLevel1, high[0], low[2])
entryPrice2 = get_level(entryLevel2, high[0], low[2])
entryPrice3 = get_level(entryLevel3, high[0], low[2])
exitPrice = get_level(tpLevel, high[0], low[2])
stopPrice = get_level(stopLevel, high[0], low[2])
strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)
label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
label.set_color(l, color.green)
label.set_yloc(l, yloc.belowbar)
label.set_style(l, label.style_label_up)
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
a = label.new(bar_index, na)
entryPrice1 = get_level(entryLevel1, low[0], high[2])
entryPrice2 = get_level(entryLevel2, low[0], high[2])
entryPrice3 = get_level(entryLevel3, low[0], high[2])
exitPrice = get_level(tpLevel, low[0], high[2])
stopPrice = get_level(stopLevel,low[0], high[2])
strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice)
strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice)
label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
label.set_color(a, color.red)
label.set_yloc(a, yloc.abovebar)
label.set_style(a, label.style_label_down)