Chiến lược giao dịch trong ngày giao cắt EMA dựa trên bộ dao động AO


Ngày tạo: 2023-12-25 10:53:48 sửa đổi lần cuối: 2023-12-25 10:53:48
sao chép: 3 Số nhấp chuột: 656
1
tập trung vào
1623
Người theo dõi

Chiến lược giao dịch trong ngày giao cắt EMA dựa trên bộ dao động AO

Tổng quan

Chiến lược này là một chiến lược giao dịch trong ngày sử dụng các chỉ số dao động AO và các đường giao dịch EMA di chuyển. Ý tưởng chính của nó là các đường EMA nhanh xuyên qua đường EMA trung bình để tạo ra tín hiệu giao dịch trong khi các chỉ số AO xuyên qua trục 0 .

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

Chiến lược này chủ yếu sử dụng hai chỉ số để nhập cảnh và xuất cảnh:

  1. Chỉ số dao động AO: Chỉ số này là sự chênh lệch giữa giá trung bình cao thấp 5 ngày và giá trung bình cao thấp 34 ngày để đánh giá xu hướng thị trường hiện tại. Khi AO là tốt, nó đại diện cho xu hướng tăng hiện tại, và khi âm, nó đại diện cho xu hướng giảm hiện tại.

  2. EMA di chuyển: Chiến lược sử dụng hai EMA vào ngày 3 và 20 để tính toán, EMA 3 ngày đại diện cho xu hướng ngắn hạn, EMA 20 ngày đại diện cho xu hướng trung hạn. Khi EMA ngắn hạn tạo ra tín hiệu mua khi phá vỡ EMA trung hạn từ bên dưới, ngược lại, nó tạo ra tín hiệu bán khi phá vỡ bên trên.

Điều kiện đầu vào của chiến lược này là tín hiệu giao dịch sẽ được tạo ra khi chỉ số AO giao nhau trên trục 0 và đồng thời có EMA hoặc giao thoa chết. Điều này giúp tránh tạo ra tín hiệu sai khi chỉ số AO dao động. Điều kiện ra là toàn bộ vị trí bằng phẳng sau khi kết thúc giờ giao dịch ở London.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Sử dụng chỉ số AO để đảm bảo tính chính xác của xu hướng lớn và tránh thiệt hại do phá vỡ giả của EMA;
  2. Kết hợp với hai chỉ số, nó có thể lọc ra một số tiếng ồn và làm cho tín hiệu trở nên rõ ràng hơn.
  3. Chỉ giao dịch trong các giờ giao dịch chính để tránh rủi ro giao dịch qua đêm;
  4. Lập luận của chiến lược đơn giản, rõ ràng và dễ hiểu.
  5. Không cần tối ưu hóa và phù hợp với đường cong, tham số ổn định;

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Rủi ro mất mát giao dịch trong ngày tăng lên. Trong trường hợp xảy ra một sự cố lớn của thiên nga đen, việc không thể dừng lỗ trong thời gian ngắn có thể gây ra tổn thất lớn;
  2. Rủi ro của các đợt phá vỡ giả của chỉ số EMA. Khi thị trường đang trong giai đoạn chấn động, EMA có thể xảy ra nhiều lần giao nhau gây ra tín hiệu sai;
  3. Các tham số cố định có thể không thích ứng. Các tham số cần được điều chỉnh trong các chu kỳ thị trường khác nhau;

Để tránh những rủi ro này, chúng ta có thể thiết lập các cơ chế dừng lỗ, hoặc điều chỉnh các tham số theo chu kỳ khác nhau, làm cho chiến lược linh hoạt hơn.

Hướng tối ưu hóa

Đối với chiến lược này, hướng tối ưu hóa chính là điều chỉnh các tham số:

  1. Điều chỉnh chu kỳ EMA. Bạn có thể thử nghiệm các kết hợp EMA có chu kỳ ngắn hơn hoặc thêm nhiều EMA để xây dựng tín hiệu giao dịch;

  2. Điều chỉnh tham số AO. Kiểm tra ảnh hưởng của các tham số chu kỳ dài và ngắn khác nhau đối với chỉ số AO;

  3. Thêm các chỉ số phụ trợ khác, chẳng hạn như thêm các chỉ số RSIbord để tránh nguy cơ quá mua quá bán;

  4. Điều chỉnh thời gian giao dịch. Kiểm tra hiệu quả của thời gian giao dịch trong các khu vực khác nhau hoặc lâu hơn.

Chiến lược này có thể trở nên vững chắc và hiệu quả hơn bằng cách điều chỉnh các tham số và thêm các chỉ số mới.

Tóm tắt

Nhìn chung, chiến lược giao dịch này kết hợp các chỉ số đánh giá xu hướng AO và EMA ngắn và trung hạn để xây dựng một chiến lược giao dịch trong ngày đơn giản và thực tế. Nó có các ưu điểm như tín hiệu chiến lược rõ ràng và dễ thực hiện.

Mã nguồn chiến lược
/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author SoftKill21

strategy(title="MA cross + AO", shorttitle="MA_AO")
ao = sma(hl2,5) - sma(hl2,34)

len = input(3, minval=1, title="Length")
src = input(close, title="Source")
out = ema(src, len)

len1 = input(20, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)

timeinrange(res, sess) => time(res, sess) != 0
londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longC = crossover(out,out1) and ao>0 and londopen
shortC = crossunder(out,out1) and ao<0 and londopen

invert = input(title="Reverse position ?", type=input.bool, defval=false)

if(invert==false)
    strategy.entry("LONG",1,when=longC)
    strategy.entry("SHORT",0,when=shortC)



if(invert==true)
    strategy.entry("short",0,when=longC)
    strategy.entry("long",1,when=shortC)
    
strategy.close_all(when= not (londopen))