Chiến lược đột phá chồng chéo EMA ba


Ngày tạo: 2023-12-28 15:56:54 sửa đổi lần cuối: 2023-12-28 15:56:54
sao chép: 0 Số nhấp chuột: 680
1
tập trung vào
1621
Người theo dõi

Chiến lược đột phá chồng chéo EMA ba

Tổng quan

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.

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

Chiến lược này dựa trên các nguyên tắc sau:

  1. 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.

  2. 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.

  3. 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.

  4. 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ý.

Lợi thế chiến lược

  1. Sử dụng nhiều chỉ số EMA để đánh giá xu hướng, tăng độ chính xác đánh giá.

  2. 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.

  3. Thiết lập điểm dừng để kiểm soát hiệu quả tổn thất đơn lẻ.

Rủi ro chiến lược

  1. 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.

  2. 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.

  3. 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.

Tối ưu hóa chiến lược

  1. 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.

  2. 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.

  3. Có thể đưa ra chỉ số khối lượng giao dịch để tránh tín hiệu sai lệch thấp.

Tóm tắt

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.

Mã nguồn chiến lược
/*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)