Chiến lược này chọn năng động các loại trung bình động khác nhau trên nhiều khung thời gian để tạo ra tín hiệu giao dịch.
Chiến lược này cho phép lựa chọn từ SMA, EMA, TEMA, WMA và HMA, với độ dài thời gian tùy chỉnh. Các loại trung bình động khác nhau sẽ được vẽ theo cách động dựa trên lựa chọn. Nó đi dài khi giá đóng phá vỡ trên mức trung bình động, và đi ngắn khi giá đóng phá vỡ bên dưới.
Cụ thể, chiến lược đầu tiên xác định thời gian backtest dựa trên các thông số đầu vào. sau đó nó tính toán năm loại trung bình động:
Đường trung bình động tương ứng được vẽ dựa trên lựa chọn. Nó đi dài khi giá đóng trên đường trung bình động, và đi ngắn khi dưới.
Bằng cách kết hợp các loại trung bình động khác nhau, chiến lược có thể làm mịn dữ liệu giá và lọc ra tiếng ồn thị trường để tạo ra các tín hiệu giao dịch đáng tin cậy hơn.
Các rủi ro có thể được giảm bằng cách:
Chiến lược có thể được cải thiện trong một số khía cạnh:
Thêm các bộ lọc khác cho tín hiệu ổn định hơn
ví dụ như các chỉ số khối lượng để tránh các sự đột phá sai mà không có xác nhận khối lượng.
Tối ưu hóa logic nhập và xuất
Đặt kênh giá và dừng lỗ để giảm lỗ không cần thiết.
Thời gian trung bình động động
Sử dụng thời gian dài hơn trong xu hướng mạnh và thời gian ngắn hơn trong quá trình củng cố.
Cải thiện quản lý tiền bạc
Điều chỉnh kích thước vị trí dựa trên rút tiền và thu lợi nhuận.
Chiến lược này kết hợp các đường trung bình động khác nhau trên các khung thời gian để tạo ra các hiệu ứng theo xu hướng tương đối ổn định. Với không gian rộng rãi để tối ưu hóa các mục nhập, lối ra, tham số và quản lý tiền, nó có thể được cải thiện để có hiệu suất thực tế tốt hơn.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000) qty = input(100000000, "Buy quantity") testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"]) len1 = input(7, minval=1, title="Period") s=sma(close,len1) e=ema(close,len1) xEMA1 = ema(close, len1) xEMA2 = ema(xEMA1, len1) xEMA3 = ema(xEMA2, len1) t = 3 * xEMA1 - 3 * xEMA2 + xEMA3 f_hma(_src, _length)=> _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length))) h = f_hma(close, len1) w = wma(close, len1) ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na buy= close>ma sell= close<ma alertcondition(buy, title='buy', message='buy') alertcondition(sell, title='sell', message='sell') ordersize=floor(strategy.equity/close) if testPeriod() strategy.entry("long",strategy.long,ordersize,when=buy) strategy.close("long", when = sell )