Chiến lược xu hướng giảm ngắn hạn dựa trên EMA và Adaptive Fibonacci Retracement

Tác giả:ChaoZhang, Ngày: 2023-09-21 21:36:16
Tags:

Tổng quan

Chiến lược này sử dụng EMA để xác định hướng xu hướng và khôi phục Fibonacci để tự động xác định các điểm đảo ngược, nhằm mục đích bán cao và mua thấp bằng cách bắt xu hướng.

Chiến lược logic

  1. Sử dụng EMA 9 ngày và EMA 21 ngày Golden Cross và Death Cross để xác định hướng xu hướng.

  2. Thực hiện sự thay đổi Fibonacci thích nghi với 100 giai đoạn để tự động xác định các mức thay đổi chính dựa trên sự biến động giá gần đây.

  3. Giá phá vỡ 0.236 Fibonacci retrace chỉ ra một sự đảo ngược và đóng vị trí hiện có.

  4. Khi đường EMA 9 ngày vượt qua đường EMA 21 ngày, và giá thấp hơn mức cao Fibonacci thích nghi, hãy mua ngắn.

  5. Mục tiêu lợi nhuận dài là vượt qua đường EMA 200 ngày.

Ưu điểm

  • EMA cung cấp các tín hiệu xu hướng rõ ràng, dễ thực hiện

  • Fibonacci thích nghi tránh điều chỉnh tham số thủ công

  • Giao dịch thường xuyên bắt được các động thái ngắn hạn cho các chiến lược tần suất cao

  • Các mức khôi phục chính cho việc dừng lỗ kịp thời

  • Các tham số có thể cấu hình để tối ưu hóa qua các chu kỳ

Rủi ro

  • Sự chậm trễ của EMA đòi hỏi phải được xác nhận từ các chỉ số khác

  • Rủi ro Fibonacci thích nghi với mức độ không ổn định

  • Giao dịch tần số cao làm tăng chi phí từ hoa hồng và trượt

  • Việc lọc không hiệu quả các xu hướng giới hạn trong phạm vi dẫn đến các tín hiệu sai

  • Cần cải thiện quản lý rút vốn và kiểm soát rủi ro-lợi nhuận

Tăng cường

  • Thêm các chỉ số khối lượng để tránh các tín hiệu sai từ chênh lệch giá - khối lượng

  • Tối ưu hóa thời gian EMA để phù hợp hơn với điều kiện thị trường hiện tại

  • Thực hiện stop loss động để kiểm soát rủi ro tốt hơn

  • Bao gồm chỉ số sức mạnh xu hướng để tránh whipsaws

  • Xem xét tác động chi phí giao dịch và đặt mục tiêu lợi nhuận tối thiểu

Kết luận

Chiến lược này xác định hướng xu hướng với EMA và xác định mức độ đảo ngược một cách năng động bằng cách sử dụng Fibonacci retracement thích ứng, tự động thích nghi với các điều kiện thị trường khác nhau. Nhưng nó dựa nhiều hơn vào các tín hiệu chỉ số mà không có phân khúc xu hướng và logic Elliott Wave, để lại chỗ cho tối ưu hóa. Nhìn chung, như một chiến lược giao dịch ngắn hạn tần suất cao, nó có thể nắm bắt những thay đổi giá nhanh nhưng liên quan đến rủi ro dừng lỗ thường xuyên và giao dịch quá mức mà các nhà giao dịch cần quản lý.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CheatCode1

//@version=5
strategy("CC-Trend strategy 2", overlay=true, initial_capital = 10000, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100 )
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
ema55 = ta.ema(close, 55)
ema200 = ta.ema(close, 200)


plot(ema200, '22', color.blue, 2)

FibL = input.int(100, 'Fibonacci Length', 1, 500, group = 'Automatic Fibonacci Retracement')
len1 = input.int(1, 'Show Last', 0, 1000, group = 'Automatic Fibonacci Retracement')
len2 = input.int(5, 'Offset Length', 0, 1000, group = 'Automatic Fibonacci Retracement')

highF = ta.highest(ema55 >= ema9 ? ema55:ema9, FibL)
lowF = ta.lowest(ema55 >= ema9 ? ema9:ema55, FibL)
AvgFib = highF - lowF

//Fibonacci Executions
LL2 = highF + .618 * AvgFib
LL1 = highF + .272 * AvgFib
L1 = highF
L236 = highF - 0.236 * AvgFib
L382 = highF - 0.382 * AvgFib
Mid =  highF - 0.50 * AvgFib
S382 = lowF + 0.382 * AvgFib
S236 = lowF + 0.236 * AvgFib
S1 = lowF
SS1 = lowF - .272 * AvgFib
SS2 = lowF - .618 * AvgFib
//Fibonacci Plot's


high2FP = plot(LL2, 'Highe2', color.red,offset = len2, show_last = len1, trackprice = true)
high1FP = plot(LL1, 'Highe1', color.red,offset = len2, show_last = len1, trackprice = true)
highFP = plot(highF, 'High', color.red,offset = len2, show_last = len1, trackprice = true)
L236P = plot(L236, "0.764", #ED381C, offset = len2, show_last = len1, trackprice = true )
L382P = plot(L382, "0.618", color.white,offset = len2, show_last = len1, trackprice = true )
MidP = plot(Mid, "0.5", color.orange,offset = len2, show_last = len1, trackprice = true )
S382P = plot(S382, "0.382", color.yellow ,offset = len2, show_last = len1, trackprice = true)
S236P = plot(S236, "0.236", color.lime ,offset = len2, show_last = len1, trackprice = true)
lowFP = plot(lowF, 'Low', color.green,offset = len2, show_last = len1, trackprice = true)
low1FP = plot(SS1, 'Lowe1', color.green,offset = len2, show_last = len1, trackprice = true)
low2FP = plot(SS2, 'Lowe2', color.green,offset = len2, show_last = len1, trackprice = true)

plot(ema9, '22', color.yellow, 2)

plot(ema55, '55', color.aqua, 2)

plot(ema200, '200', color.maroon, 2)



shortCondition = close[1] < highF and ema21 < ema55
if (shortCondition)
    strategy.entry("Short", strategy.short)

shorttp = ta.crossover(close, ema200) and strategy.openprofit >= 0
if (shorttp)
    strategy.close('Short', 'Short TP', qty_percent = 100)

shortclose2 = close[1] > L236 and not (shortCondition) 
if(shortclose2)
    strategy.close('Short', 'Short RM', qty_percent = 100)

Thêm nữa