Đây là một chiến lược giao dịch đảo ngược dựa trên các chỉ số trung bình động kép. Bằng cách tính toán hai nhóm trung bình động với các thiết lập tham số khác nhau và đánh giá xu hướng giá theo những thay đổi theo hướng của chúng, các tín hiệu giao dịch có thể được tạo ra bằng cách đặt tham số độ nhạy cho những thay đổi theo hướng.
Chỉ số cốt lõi của chiến lược này là đường trung bình động kép. Chiến lược cho phép chọn loại (SMA, EMA, v.v.), chiều dài và nguồn giá (giá gần, giá điển hình, v.v.) của đường trung bình động. Sau khi tính toán hai nhóm đường trung bình động, hướng của chúng được xác định bằng cách xác định tham số phản ứng. Một tín hiệu mua được tạo ra khi đường nhanh vượt qua đường chậm, và một tín hiệu bán được tạo ra khi nó vượt qua dưới.
Ngoài ra, chiến lược cũng đặt ra các điều kiện để xác định sự thay đổi hướng và tiếp tục tăng / giảm để tránh tạo ra tín hiệu sai. Và nó hiển thị sự tăng và giảm giá bằng các màu sắc khác nhau. Khi giá tiếp tục tăng, đường movavg được hiển thị màu xanh lá cây và màu đỏ khi giá giảm.
Chiến lược movavg kép kết hợp các đường nhanh và chậm với các cài đặt tham số khác nhau, có thể lọc hiệu quả tiếng ồn trong thị trường giao dịch và xác định xu hướng mạnh hơn.
Các thông số phản ứng cho phép chiến lược linh hoạt và thích nghi với các chu kỳ và giống khác nhau.
Rủi ro lớn nhất của chiến lược này là bỏ lỡ điểm chuyển đổi và mất tiền hoặc có vị trí ngược lại. Điều này liên quan đến cài đặt tham số phản ứng. Nếu phản ứng quá nhỏ, các tín hiệu sai có thể xảy ra. Nếu phản ứng quá lớn, nó có thể bỏ lỡ các điểm nhập tốt hơn.
Một rủi ro khác là không có khả năng kiểm soát thua lỗ một cách hiệu quả. Khi giá dao động mạnh mẽ, nó không thể nhanh chóng ngăn chặn thua lỗ, dẫn đến tổn thất lớn hơn. Điều này đòi hỏi phải sử dụng các chiến lược dừng lỗ để kiểm soát rủi ro.
Các hướng tối ưu hóa chính của chiến lược này tập trung vào việc lựa chọn các tham số phản ứng, các loại và chiều dài của các đường trung bình động. Tăng phản ứng phù hợp có thể làm giảm tín hiệu sai. Các tham số trung bình động có thể được thử nghiệm theo các chu kỳ và giống khác nhau để chọn sự kết hợp tốt nhất để tạo ra tín hiệu.
Ngoài ra, xác nhận tín hiệu giao dịch với các chỉ số phụ trợ khác như RSI và KD cũng là một ý tưởng tối ưu hóa.
Nhìn chung, chiến lược này tương đối đơn giản và thực tế. Bằng cách lọc với các đường trung bình động kép và tạo ra các tín hiệu giao dịch, nó có thể xác định hiệu quả sự đảo ngược xu hướng và là một chiến lược theo xu hướng điển hình. Sau khi tối ưu hóa danh mục đầu tư tham số, khả năng nắm bắt xu hướng và giữ vị trí chống lại thị trường sẽ được cải thiện. Sử dụng nó với cơ chế dừng lỗ và quản lý vị trí hoạt động tốt hơn.
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true) // === INPUTS ma_type = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"]) ma_len = input(defval=32, title="MA Lenght", minval=1) ma_src = input(close, title="MA Source") reaction = input(defval=2, title="MA Reaction", minval=1) // SuperSmoother filter // © 2013 John F. Ehlers variant_supersmoother(src,len) => a1 = exp(-1.414*3.14159 / len) b1 = 2*a1*cos(1.414*3.14159 / len) c2 = b1 c3 = (-a1)*a1 c1 = 1 - c2 - c3 v9 = 0.0 v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2]) v9 variant_smoothed(src,len) => v5 = 0.0 v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len v5 variant_zerolagema(src,len) => ema1 = ema(src, len) ema2 = ema(ema1, len) v10 = ema1+(ema1-ema2) v10 variant_doubleema(src,len) => v2 = ema(src, len) v6 = 2 * v2 - ema(v2, len) v6 variant_tripleema(src,len) => v2 = ema(src, len) v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) v7 variant(type, src, len) => type=="EMA" ? ema(src,len) : type=="WMA" ? wma(src,len): type=="VWMA" ? vwma(src,len) : type=="SMMA" ? variant_smoothed(src,len) : type=="DEMA" ? variant_doubleema(src,len): type=="TEMA" ? variant_tripleema(src,len): type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) : type=="SSMA" ? variant_supersmoother(src,len) : type=="ZEMA" ? variant_zerolagema(src,len) : type=="TMA" ? sma(sma(src,len),len) : sma(src,len) // === Moving Average ma_series = variant(ma_type,ma_src,ma_len) direction = 0 direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1]) change_direction= change(direction,1) change_direction1= change(direction,1) pcol = direction>0 ? lime : direction<0 ? red : na plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT") /////// Alerts /////// alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA") longCondition = direction>0 shortCondition = direction<0 if (longCondition) strategy.entry("BUY", strategy.long) if (shortCondition) strategy.entry("SELL", strategy.short)