Chiến lược đột phá EMA 3 lần

Tác giả:ChaoZhang, Ngày: 2023-12-28 15:56:54
Tags:

img

Tổng quan

Chiến lược Triple EMA Crossover Breakout sử dụng các chỉ số trung bình di chuyển theo hàm số ba (EMA) để xác định hướng xu hướng thị trường và vào các điểm đột phá xu hướng.

Chiến lược logic

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

  1. Sử dụng ba EMA với thời gian khác nhau (200 ngày, 50 ngày, 20 ngày) để xác định xu hướng thị trường chính, trung hạn và ngắn hạn.

  2. Khi đường EMA ngắn hạn (20 ngày) vượt trên đường EMA trung hạn (50 ngày), một tín hiệu mua được tạo ra. Khi nó vượt dưới, một tín hiệu bán được tạo ra.

  3. Chỉ khi giá đóng của nến thứ hai cao hơn (thấp hơn) so với giá cao (thấp) của nến trước đó, việc phá vỡ được coi là đáng tin cậy.

  4. Thiết lập mức dừng lỗ và lấy lợi nhuận để hạn chế rủi ro vượt quá biến động giá hợp lý.

Phân tích lợi thế

  1. Sử dụng nhiều EMA cải thiện độ chính xác đánh giá xu hướng.

  2. Việc lọc các tín hiệu giả bằng các mẫu nến tránh rủi ro giao dịch không cần thiết.

  3. Dừng lỗ và lấy lợi nhuận kiểm soát lỗ giao dịch đơn hiệu quả.

Phân tích rủi ro

  1. Trong các thị trường khác nhau, EMA có thể tạo ra các tín hiệu giả mạo quá mức và không thể xác định hướng thị trường.

  2. Hệ thống chỉ số duy nhất có khả năng hạn chế trong các tình huống thị trường phức tạp.

  3. Nó bỏ qua chi phí giao dịch có thể dẫn đến không lợi nhuận trên các thị trường phí cao.

Tối ưu hóa

  1. Đưa ra các chỉ số khác như MACD và KDJ để tạo thành một hệ thống kết hợp và cải thiện độ chính xác phán đoán.

  2. Tối ưu hóa các tham số thông qua kiểm tra ngược cho các biểu tượng và khung thời gian cụ thể để làm cho chiến lược phù hợp hơn.

  3. Tăng khối lượng giao dịch để tránh các tín hiệu giả với khối lượng thấp.

Kết luận

Triple EMA Crossover Breakout Strategy có logic rõ ràng, dễ hiểu để xác định xu hướng thị trường và tìm thời gian nhập cảnh bằng cách sử dụng EMA crossover.


/*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)
   


Thêm nữa