Tài nguyên đang được tải lên... tải...

Volume Price Trend Reversal Chiến lược giao dịch ngoại hối dựa trên EMA thang

Tác giả:ChaoZhang, Ngày: 2023-11-07 17:03:57
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch ngoại hối ngắn hạn (1-5 phút) chủ yếu sử dụng mối quan hệ giá khối lượng trong lý thuyết thủy triều và nhiều EMA Stairstep để dự đoán các điểm đảo ngược xu hướng cho giao dịch theo dõi xu hướng ngắn hạn. Chiến lược này phù hợp với giao dịch tần số cao.

Nguyên tắc

Các tín hiệu giao dịch của chiến lược này đến từ hai phần:

  1. Phán quyết mối quan hệ giá khối lượng dựa trên giá trung bình khối lượng. Cụ thể, chiến lược tính toán EMA của giá trung bình khối lượng của các giai đoạn khác nhau (có thể cấu hình) để đánh giá sự thay đổi trong xu hướng tăng và giảm. Nếu EMA ngắn hạn vượt qua trên EMA dài hạn, nó được coi là tín hiệu tăng. Nếu EMA ngắn hạn vượt dưới EMA dài hạn, nó được coi là tín hiệu giảm.

  2. EMA bước thang đề cập đến việc thiết lập nhiều EMA với các thông số khác nhau, chẳng hạn như 10 ngày, 20 ngày, 50 ngày, v.v. Đánh giá sự đảo ngược xu hướng theo thứ tự của chúng. Nếu EMA thời gian ngắn quay trước EMA thời gian dài, điều đó có nghĩa là xu hướng đang đảo ngược.

Chiến lược sẽ kết hợp hai tín hiệu này để xác định nhập cảnh. Cụ thể, nếu mối quan hệ giá khối lượng được đánh giá là tăng, và EMA Stairstep cho thấy nhiều EMA đã trở nên tăng, các vị trí dài sẽ được thực hiện. Ngược lại, nếu mối quan hệ giá khối lượng được đánh giá là giảm, và EMA Stairstep cho thấy nhiều EMA đã trở nên giảm, các vị trí ngắn sẽ được thực hiện.

Ưu điểm

Chiến lược này kết hợp các lợi thế của giá trung bình khối lượng và nhiều EMA có thể cải thiện độ chính xác và ổn định của tín hiệu:

  1. Việc đánh giá mối quan hệ giá khối lượng dựa trên giá trung bình khối lượng có thể chính xác hơn chỉ đơn giản là đánh giá giá EMA, tránh bị đánh lừa bởi sự biến động giá tăng cường.

  2. Stairstep EMA có thể tăng kích thước của phán đoán theo thứ tự của các EMA tham số khác nhau, tránh tiếng ồn của một EMA duy nhất.

  3. Sự kết hợp của hai tín hiệu cho phép xác minh lẫn nhau và giảm các tín hiệu sai.

  4. Nó phù hợp với giao dịch ngắn hạn tần số cao và có thể nhanh chóng nắm bắt các cơ hội đảo ngược nhỏ trong phạm vi.

  5. Các tham số chiến lược có thể được cấu hình linh hoạt để tối ưu hóa cho các giống và tần số khác nhau.

Rủi ro

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

  1. Tùy thuộc quá nhiều vào các chỉ số kỹ thuật, có khả năng bị đánh lừa bởi các điều kiện thị trường không ổn định.

  2. Các giao dịch ngắn hạn tương đối nhạy cảm với chi phí giao dịch, trượt và hoa hồng cần được kiểm soát tốt.

  3. Các thông số EMA ngắn hạn cần tối ưu hóa thường xuyên, nếu không chúng có thể trở nên không hợp lệ.

  4. Sự khác biệt giá khối lượng không nhất thiết tạo ra sự đảo ngược, có nguy cơ đánh giá sai.

  5. Trật tự của nhiều EMA không hoàn toàn đáng tin cậy và cũng có thể gây ra những đánh giá sai.

Các biện pháp đối phó:

  1. Kết hợp các yếu tố cơ bản hơn để đánh giá.

  2. Điều chỉnh các vị trí để đảm bảo lỗ trên các giao dịch đơn không quá lớn.

  3. Thường xuyên kiểm tra lại và tối ưu hóa các thông số.

  4. Giao dịch gần mức hỗ trợ / kháng cự chính để tăng tỷ lệ thành công.

  5. Sử dụng với các chỉ số khác để xác minh đa chiều.

Hướng dẫn tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra các phương pháp khác nhau để tính toán mối quan hệ giá khối lượng để tìm các thông số ổn định hơn.

  2. Tăng thêm các chỉ số EMA của Stairstep.

  3. Kết hợp các tín hiệu chỉ số khác để lọc, chẳng hạn như RSI, MACD, v.v.

  4. Tối ưu hóa các cơ chế dừng lỗ như di chuyển dừng lỗ, lệnh đang chờ, vv

  5. Tối ưu hóa các tham số dựa trên các đặc điểm của các công cụ giao dịch khác nhau để phát triển các bộ tham số phù hợp.

  6. Đưa ra các thuật toán học máy để đào tạo các mô hình phán đoán sử dụng dữ liệu lớn.

  7. Khám phá các chiến lược thoát khác nhau như lối ra cố định, lối ra theo dõi xu hướng, v.v.

  8. Đưa ra các cơ chế tham số thích nghi để tự động điều chỉnh các tham số dựa trên những thay đổi của thị trường.

Tóm lại

Chiến lược này kết hợp các lợi thế của giá trung bình khối lượng và EMA bước thang cho giao dịch theo dõi xu hướng ngắn hạn. Chiến lược có sự ổn định và chính xác cao, nhưng cần lưu ý kiểm soát rủi ro và tối ưu hóa tham số. Với tối ưu hóa và thử nghiệm liên tục, kết hợp với các chỉ số kỹ thuật khác, nó có thể trở thành một chiến lược giao dịch ngắn hạn hiệu quả.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
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/
// © exlux99

//@version=5

strategy("Forex Fractal EMA Scalper", overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters")

src = input(hl2, title="Source for EMA's", group="Optimization Parameters")
len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters")
out1 = ta.ema(src, len1)
len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters")
out2 = ta.ema(src, len2)
len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters")
out3 = ta.ema(src, len3)



// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

// plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
// plotshape(upFractal, style=shape.triangleup,   location=location.abovebar, offset=-n, color=#009688, size = size.small)


long= out1 > out2 and out2>out3 and upFractal
short= out1 < out2 and out2<out3 and downFractal


strategy.entry("long",strategy.long,when= short)
strategy.entry("short",strategy.short,when=long)

tp=input(25, title="TP in PIPS", group="Risk Management")*10
sl=input(25, title="SL in PIPS", group="Risk Management")*10


strategy.exit("X_long", "long", profit=tp,  loss=sl  )
strategy.exit("x_short", "short",profit=tp, loss=sl  )


Thêm nữa