Chiến lược dựa trên giá trung bình khối lượng và EMA bậc thang


Ngày tạo: 2023-11-07 17:03:57 sửa đổi lần cuối: 2023-11-07 17:03:57
sao chép: 0 Số nhấp chuột: 688
1
tập trung vào
1617
Người theo dõi

Chiến lược dựa trên giá trung bình khối lượng và EMA bậc thang

Tổng quan

Đây là một chiến lược giao dịch vàng ngoại hối có chu kỳ ngắn (khoảng 1-5 phút), chủ yếu sử dụng quan hệ giá trị số lượng trong lý thuyết xu hướng và EMA Stairstep đa để dự đoán điểm đảo chiều xu hướng, giao dịch theo xu hướng có chu kỳ ngắ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 có hai phần:

  1. Xác định mối quan hệ giá trị số lượng dựa trên giá trị trung bình khối lượng giao dịch. Cụ thể, chiến lược tính toán EMA trung bình khối lượng giao dịch trong các chu kỳ khác nhau (có thể cấu hình) để xác định sự thay đổi của xu hướng đa không gian. Nếu EMA có chu kỳ ngắn trên EMA có chu kỳ dài, thì được coi là tín hiệu lạc quan; Nếu EMA có chu kỳ ngắn dưới EMA có chu kỳ dài, thì được coi là tín hiệu lạc quan.

  2. Tín hiệu đảo ngược dựa trên phán đoán của EMA thang. EMA thang là nhiều đường trung bình EMA với các tham số khác nhau, chẳng hạn như đường 10, đường 20, đường 50, và vân vân, để đánh giá xu hướng đảo ngược theo thứ tự sắp xếp của chúng. Nếu EMA ngắn hạn trước khi EMA dài hạn đảo ngược, điều đó cho thấy xu hướng đang đảo ngược.

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

Ưu điểm

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

  1. Xác định quan hệ giá trị-giá dựa trên khối lượng giao dịch trung bình có thể chính xác hơn so với việc đánh giá EMA đơn thuần, tránh bị đánh lừa bởi biến động giá tăng cường.

  2. Stairstep EMA có thể tăng chiều của phán đoán bằng cách sắp xếp các EMA của các tham số khác nhau theo thứ tự, tránh tiếng ồn của một EMA đơn.

  3. Sự kết hợp của hai loại tín hiệu có thể xác thực lẫn nhau và giảm tín hiệu giả.

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

  5. Các tham số chiến lược có thể được cấu hình linh hoạt để thích ứng với các loại và thời gian tối ưu hóa khác nhau.

Rủi ro

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

  1. Có thể bị sai lệch bởi những hành động vô chủ động.

  2. Hoạt động ngắn chu kỳ nhạy cảm với chi phí giao dịch, cần kiểm soát điểm trượt và phí xử lý.

  3. Các tham số EMA ngắn hạn cần được tối ưu hóa thường xuyên, nếu không nó có thể bị hỏng.

  4. Giá cả không nhất thiết phải thay đổi, có nguy cơ sai lệch.

  5. Các phán đoán về thứ tự xếp hàng của nhiều EMA không hoàn toàn đáng tin cậy và có thể gây ra sai sót.

Phản ứng:

  1. Chúng ta có thể đánh giá các yếu tố cơ bản hơn.

  2. Điều chỉnh vị trí để đảm bảo một khoản dừng lỗ không quá lớn.

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

  4. Tăng tỷ lệ thành công khi giao dịch gần các vùng hỗ trợ và kháng cự quan trọng.

  5. Sử dụng kết hợp với các chỉ số khác để xác thực đa chiều.

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

Chiến lược này cũng có thể được tối ưu hóa bằng cách:

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

  2. Thêm nhiều cấp độ hơn cho Stairstep EMA.

  3. Bộ lọc kết hợp với các tín hiệu chỉ số khác như RSI, MACD, v.v.

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

  5. Các tham số tối ưu hóa dựa trên các đặc điểm của các giống khác nhau, xây dựng các tập hợp tham số phù hợp với giống đó.

  6. Thêm các thuật toán học máy, mô hình phán quyết bằng cách sử dụng dữ liệu lớn.

  7. Khám phá các chiến lược thoát khác nhau, chẳng hạn như thoát cố định, thoát theo xu hướng.

  8. Giới thiệu cơ chế tham số thích ứng, tự động điều chỉnh tham số theo sự thay đổi của thị trường.

Tóm tắt

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

Mã nguồn chiến lược
/*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  )