Turtle Breakout EMA Cross chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-07 15:40:08
Tags:

img

Tổng quan

Chiến lược này sử dụng hai đường EMA của các giai đoạn khác nhau để xác định sự đảo ngược xu hướng thông qua các giao lộ của chúng như tín hiệu vào và ra.

Chiến lược logic

Chiến lược này tính toán hai đường EMA bằng cách sử dụng ta.ema, một đường dài 10 cho xu hướng ngắn hạn và một đường dài 20 cho xu hướng dài hạn. Nó xác định các đường chéo và đường chéo EMA bằng cách sử dụng ta.crossover và ta.crossunder để xác định điểm vào và ra. Khi EMA ngắn vượt qua EMA dài, nó sẽ dài. Khi EMA ngắn vượt qua dưới EMA dài, nó sẽ ngắn. Bằng cách này, các đường chéo EMA được sử dụng để nắm bắt các điểm chuyển đổi trong xu hướng.

Chiến lược này cũng sử dụng biến số lastCrossTime để ghi lại thời gian giao dịch cuối cùng để tránh các tín hiệu lặp đi lặp lại.

Ưu điểm

  1. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện.

  2. Sử dụng các đường chéo EMA để xác định các điểm đảo ngược xu hướng là một chiến lược chỉ số kỹ thuật hiệu quả được sử dụng phổ biến.

  3. Việc áp dụng EMA của các giai đoạn khác nhau giúp cải thiện độ nhạy cảm với các động thái ngắn hạn trong khi vẫn nắm bắt các xu hướng lớn.

  4. Lấy lợi nhuận và dừng lỗ giúp kiểm soát rủi ro và lợi nhuận của mỗi giao dịch.

  5. Chất biến lastCrossTime lọc các tín hiệu trùng lặp và tránh các giao dịch không cần thiết.

Rủi ro

  1. EMA crossover có thể tạo ra tín hiệu sai, với một số rủi ro whipsaw.

  2. TP cố định và SL có thể không thích nghi với các điều kiện thị trường thay đổi.

  3. Các hệ thống chỉ dựa trên giao thoa EMA có thể chịu tổn thất trên các thị trường khác nhau.

  4. Chi phí giao dịch như chênh lệch không được xem xét ảnh hưởng đến hiệu suất thực tế.

  5. Chiến lược hoạt động tốt hơn trong xu hướng hơn là thị trường.

Các cải tiến có thể được thực hiện thông qua tối ưu hóa TP / SL, thêm các bộ lọc, kết hợp các chỉ số khác v.v. Kiểm soát rủi ro nghiêm ngặt và tránh lỗ giao dịch đơn lớn là điều cần thiết cho giao dịch trực tiếp.

Tăng cường

  1. Kiểm tra và tối ưu hóa thời gian EMA để tìm kết hợp tốt hơn.

  2. Thêm các chỉ số khác như KDJ, MACD v.v. để cải thiện chất lượng tín hiệu và tránh chấn thương.

  3. Sử dụng động lợi nhuận và dừng lỗ, chẳng hạn như dừng lại theo xu hướng.

  4. Xem xét khối lượng giao dịch để xác nhận các tín hiệu.

  5. Kết hợp các mô hình hành động giá như đột phá để tăng cường tín hiệu.

  6. Xét về chi phí giao dịch như chênh lệch và tối ưu hóa mức TP / SL phù hợp.

Kết luận

Chiến lược xác định sự đảo ngược xu hướng bằng cách sử dụng EMA chéo theo một cách đơn giản và thẳng thắn. TP / SL được sử dụng để kiểm soát rủi ro và phần thưởng. Nó dễ dàng thực hiện nhưng EMA chéo có rủi ro chọc. Tăng cường thêm có thể được thực hiện bằng cách điều chỉnh các tham số, thêm bộ lọc và kết hợp các chỉ số khác để cải thiện độ bền. Nó hoạt động tốt hơn trong xu hướng hơn là các thị trường dao động. Quản lý rủi ro nghiêm ngặt và kích thước TP / SL tối ưu là rất quan trọng cho giao dịch trực tiếp. Nhìn chung nó phục vụ như một hệ thống theo xu hướng cơ bản và là điểm khởi đầu tốt cho giáo dục giao dịch thuật toán.


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('XXXquang', overlay=true)

// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)

takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)

ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)

var float lastCrossTime = na

if ta.crossover(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Buy Order', strategy.long, qty=lotSize)
    strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

if ta.crossunder(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Sell Order', strategy.short, qty=lotSize)
    strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)


Thêm nữa