Chiến lược này kết hợp nhiều EMA với các thiết lập tham số khác nhau và chỉ số khối lượng EOM để xác định xu hướng trên nhiều khung thời gian và xây dựng một chiến lược giao dịch với cả phán đoán dài hạn và ngắn hạn.
Chiến lược sử dụng 4 nhóm EMA với các thông số giai đoạn khác nhau - 13, 21, 50 và 180.
Chiến lược sử dụng chỉ số khối lượng EOM để xác nhận xu hướng. EOM kết hợp khối lượng giao dịch và phạm vi biến động giá để đánh giá hiệu quả áp lực mua và bán. Chiến lược xác định các điều kiện dài khi EOM trên 0 và các điều kiện ngắn khi EOM dưới 0.
Chiến lược có hai tùy chọn. Tùy chọn 1 đi dài khi EMA ngắn hơn vượt qua EMA dài hơn và đóng dài khi EMA ngắn hơn vượt qua dưới EMA dài hơn. Tùy chọn 2 đi dài khi EMA ngắn hơn vượt qua EMA trung gian và đóng dài khi EMA ngắn hơn vượt qua dưới EMA trung gian. Hai tùy chọn cho phép xác nhận xu hướng toàn diện hơn.
Chiến lược này tích hợp xác định xu hướng EMA nhiều khung thời gian và lọc chỉ số khối lượng để đạt được xu hướng theo dõi và loại bỏ tiếng ồn. Vẫn còn nhiều chỗ để tối ưu hóa bằng cách thử nghiệm các kết hợp tham số khác nhau và thêm nhiều chỉ số để cải thiện độ bền hơn nữa. Trong khi đó, stop loss động và kích thước vị trí cũng có thể tối ưu hóa hiệu suất đáng kể.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h 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/ // © SoftKill21 //@version=4 strategy("4x ema + volume", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 ) //ema x 4 ema1l=input(13) ema2l=input(21) ema3l=input(50) ema4l=input(180) ema1=ema(close,ema1l) ema2=ema(close,ema2l) ema3=ema(close,ema3l) ema4=ema(close,ema4l) long1 = close > ema1 and ema1 > ema2 and ema2> ema3 and ema3 > ema4 long2 = crossover(ema1,ema2) and crossover(ema1,ema3) short1 = close < ema1 and ema1 < ema2 and ema2< ema3 and ema3 < ema4 short2= crossunder(ema1,ema2) and crossunder(ema1,ema3) //eom length = input(14, minval=1) div = input(10000, title="Divisor", minval=1) eom = sma(div * change(hl2) * (high - low) / volume, length) option1=input(true) option2=input(false) if(option1) strategy.entry("long",1,when=long1 and eom>0) strategy.close("long",when=short1 and eom<0) if(option2) strategy.entry("long",1,when=long2 and eom>0) strategy.close("long",when=short2 and eom<0)