Chiến lược tăng trưởng EMA ba lần

Tác giả:ChaoZhang, Ngày: 2023-09-27 17:19:26
Tags:

Tổng quan

Chiến lược này được sửa đổi từ SoftKill21 của Amazing scalper cho các thương hiệu lớn với quản lý rủi ro bằng cách sử dụng trung bình động nhân ba thay vì trung bình động đơn giản để giảm chậm trễ. Nó phù hợp với các cặp tiền tệ lớn trong khung thời gian 1 phút, áp dụng phương pháp theo xu hướng dựa trên chéo vàng và chéo chết của EMA nhanh, EMA tiêu chuẩn và EMA chậm. Nó cũng kết hợp các phiên London và New York và các nguyên tắc quản lý rủi ro để xác định kích thước vị trí.

Chiến lược logic

Chiến lược này sử dụng ba EMA với các khoảng thời gian khác nhau: EMA nhanh 25 giai đoạn, EMA tiêu chuẩn 50 giai đoạn và EMA chậm 100 giai đoạn. Khi EMA nhanh vượt qua EMA tiêu chuẩn và EMA chậm, nó tạo ra tín hiệu mua. Khi EMA nhanh vượt qua dưới EMA tiêu chuẩn và EMA chậm, nó tạo ra tín hiệu bán. Để giảm độ trễ, EMA được tính bằng kỹ thuật làm mịn theo hàm số nhân đôi. Chiến lược cũng kiểm tra xem thời gian mở thị trường của các phiên London hoặc New York có phù hợp với điều kiện nhập cảnh không. Ngoài ra, kích thước vị trí của mỗi lệnh được xác định năng động bằng cách sử dụng một tỷ lệ phần trăm cố định của vốn chủ sở hữu tài khoản để kiểm soát rủi ro.

Đặc biệt, chiến lược đầu tiên tính toán ba đường EMA, sau đó kiểm tra xem EMA nhanh hình thành đường chéo vàng hoặc đường chéo chết với EMA tiêu chuẩn và EMA chậm. Nếu điều kiện cũng phù hợp với thời gian thị trường mở London hoặc New York, các tín hiệu mua hoặc bán được tạo ra. Khi xác định kích thước vị trí, chiến lược tính toán tỷ lệ phần trăm cố định của vốn chủ sở hữu tài khoản như là rủi ro, sau đó chuyển đổi thành kích thước hợp đồng và vòng để điều chỉnh vị trí một cách năng động cho mỗi lệnh.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Các EMA ba có thể làm mịn dữ liệu giá hiệu quả và xác định hướng xu hướng. EMA nhanh nhạy với sự thay đổi giá, EMA tiêu chuẩn theo dõi đều đặn và EMA chậm lọc tiếng ồn.

  2. Việc sử dụng làm mịn theo hàm số kép làm giảm độ trễ và làm cho tín hiệu nhạy cảm hơn.

  3. Bao gồm các phiên giao dịch lớn tránh các tín hiệu gây hiểu nhầm trong giờ cao điểm.

  4. Cách tiếp cận quản lý rủi ro điều chỉnh kích thước vị trí dựa trên vốn chủ sở hữu tài khoản, tránh mất mát quá mức trên các giao dịch đơn lẻ.

  5. Logic là đơn giản và rõ ràng, dễ hiểu và thực hiện, phù hợp cho người mới bắt đầu.

  6. Chiến lược có thể được tối ưu hóa và điều chỉnh cho các cặp tiền tệ và khung thời gian khác nhau, với khả năng áp dụng rộng rãi.

Phân tích rủi ro

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

  1. Các EMA không thể lọc hiệu quả các sự đột phá sai ngắn hạn do các sự kiện đột ngột gây ra, có thể tạo ra các tín hiệu sai.

  2. Định dạng vị trí theo tỷ lệ phần trăm cố định không thể điều chỉnh năng động theo biến động thị trường, dẫn đến các vị trí quá lớn hoặc quá nhỏ.

  3. Chỉ có hai phiên chính được xem xét, có thể bỏ lỡ cơ hội giao dịch trong các phiên khác.

  4. Thiếu cơ chế dừng lỗ dẫn đến không thể kiểm soát hiệu quả lỗ một mặt.

  5. Việc cắt giảm thời gian EMA hoặc kết hợp các chỉ số hàng đầu có thể giúp ích.

  6. Hiệu suất có thể bị ảnh hưởng bởi chi phí giao dịch.

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

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

  1. Kiểm tra các thông số EMA giai đoạn khác nhau để tìm kết hợp tối ưu.

  2. Thêm các chỉ số lọc khác như RSI, Bollinger Bands để cải thiện chất lượng tín hiệu.

  3. Thiết lập quy mô vị trí năng động dựa trên biến động thị trường và lợi nhuận.

  4. Thêm chuyển động hoặc thời gian dừng mất để hạn chế tổn thất.

  5. Kiểm tra các phiên giao dịch khác nhau để tìm thời gian tối ưu.

  6. Tối ưu hóa mức lấy lợi nhuận và dừng lỗ để cân bằng kích thước lợi nhuận và tỷ lệ thắng.

  7. Hãy thử sửa đổi tính toán EMA như EMA cân nhắc tuyến tính để giảm lag.

  8. Sử dụng máy học để tìm các thông số tối ưu.

  9. Chi phí giao dịch mô hình và điều chỉnh hệ thống cho lợi nhuận ròng tối đa.

Thông qua các tối ưu hóa trên, lợi nhuận của hệ thống có thể được cải thiện, kiểm soát rút tiền, mở rộng khả năng áp dụng, để có được một chiến lược giao dịch mạnh mẽ và mạnh mẽ hơn.

Tóm lại

Lý thuyết tổng thể của chiến lược này là rõ ràng, sử dụng EMA ba để xác định xu hướng, kết hợp với các phiên chính để thực hiện, và áp dụng quy mô vị trí dựa trên tỷ lệ phần trăm tài khoản. Nó thuộc về một hệ thống theo xu hướng điển hình. Có nhiều chỗ để tối ưu hóa thông qua điều chỉnh tham số, cải tiến cơ chế, giới thiệu công nghệ vv để mở rộng hơn nữa khả năng áp dụng của nó trên nhiều thị trường hơn và cải thiện độ mạnh mẽ. Là một điểm bắt đầu học tập cho người mới bắt đầu, nó cung cấp một điểm khởi đầu tốt. Với thực hành và nâng cao, nó có thể chuyển thành một chiến lược định lượng trưởng thành và đáng tin cậy.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// original author SoftKill21
//@version=4
//@capam 

strategy(title="Triple EMA Scalper low lag strat", shorttitle="3EMA scalper", overlay=true)
strategy.initial_capital = 50000
len1 = input(25, minval=1, title="Length")
len2 = input(50, minval=1, title="Length")
len3 = input(100, minval=1, title="Length")

src = input(close, title="Source")
tmp1 = ema(src, len1)
tmp2 = ema(src, len2)
tmp3 = ema(src, len3)
fastemaOut = 2*tmp1 - ema(tmp1, len1)
standardemaOut = 2*tmp2 - ema(tmp2, len2)
slowemaOut = 2*tmp3 - ema(tmp3, len3)
//fastemaOut = sma(src, len1)
//standardemaOut = sma(src, len2)
//slowemaOut = sma(src, len3)

plot(fastemaOut, color=color.black, title="First EMA")
plot(standardemaOut, color=color.yellow, title="Second EMA")
plot(slowemaOut, color=color.blue, title="Third EMA")


timeinrange(res, sess) => time(res, sess) != 0


londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longCondition = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and londopen //or nyopen)
shortCondition = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and londopen// or nyopen)

longCondition2 = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and nyopen
shortCondition2 = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and nyopen
tp = input(50,title="TP")
sl = input(100, title="SL")

tradeLondon =  input(title="Trade london session?", type=input.bool, defval=true)
tradeNewyork = input(title="Trade new york session?", type=input.bool, defval=true)

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ")/100           //risk % per trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000        

if(tradeLondon==true)
    strategy.entry("long",1,when=longCondition)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

if(tradeNewyork==true)
    strategy.entry("long",1,when=longCondition2)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition2)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

// strategy.risk.max_intraday_filled_orders(2) 

Thêm nữa