Chiến lược chéo trung bình di chuyển kép là một chiến lược giao dịch theo xu hướng cổ điển. Nó sử dụng hai trung bình di chuyển: trung bình di chuyển nhanh và trung bình di chuyển chậm. Khi trung bình di chuyển nhanh vượt qua trên trung bình di chuyển chậm, nó được gọi là chéo vàng, chỉ ra xu hướng tăng tiềm năng, và một vị trí dài được mở. Khi trung bình di chuyển nhanh vượt qua dưới trung bình di chuyển chậm, nó được gọi là chéo chết, chỉ ra xu hướng giảm tiềm năng, và một vị trí ngắn được mở.
Cốt lõi của chiến lược này là sử dụng các đặc điểm xu hướng của đường trung bình động và tín hiệu chéo để xác định hướng xu hướng và thời gian nhập cảnh. Đầu tiên, đặt các khoảng thời gian của đường trung bình động nhanh ( mặc định 50) và đường trung bình chậm ( mặc định 200) thông qua các thông số, và chọn sử dụng SMA hoặc EMA. Sau đó tính toán hai đường trung bình động và xác định tình huống chéo của chúng:
Chiến lược chéo trung bình động kép là một chiến lược theo xu hướng đơn giản và cổ điển xác định hướng xu hướng và thời gian vào / ra dựa trên sự chéo của hai trung bình động với các giai đoạn khác nhau, phù hợp để nắm bắt xu hướng trung hạn đến dài hạn. Tuy nhiên, các thông số cố định có thể hoạt động không ổn định trong môi trường thị trường thay đổi và cần tối ưu hóa và cải thiện thêm, chẳng hạn như tối ưu hóa các thông số, cải thiện stop-loss, giới thiệu các tín hiệu khác, v.v., để trở thành một chiến lược giao dịch tương đối mạnh mẽ. Chiến lược này có thể phục vụ như nền tảng cho các chiến lược xu hướng và liên tục được cải thiện và mở rộng.
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //============================================================================== // A baseline strategy with a well known concept, golden cross & death cross. // Support for both Simple & Exponential moving averages. // Support for long & short stop losses as a percentage.:well //============================================================================== strategy("Basic Moving Average Crosses", overlay=true) //------------------------------------------------------------------------------ // configuration //------------------------------------------------------------------------------ maQuickLength = input(50, title="Quick MA Length") maSlowLength = input(200, title="Quick MA Length") useSma = input(true, title="Use SMA? If false, EMA is used.") maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength) maSlow = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength) stop_loss_percentage = input(2.0, title="Stop Loss (%)") var float longStopLevel = na var float shortStopLevel = na bool isGoldenCross = ta.crossover(maQuick, maSlow) bool isDeathCross = ta.crossunder(maQuick, maSlow) //------------------------------------------------------------------------------ // position opening logic //------------------------------------------------------------------------------ if(strategy.position_size == 0) // Golden cross, enter a long position if(isGoldenCross) strategy.entry("Buy", strategy.long) longStopLevel := close - close * stop_loss_percentage/100.0 strategy.exit("StopLossLong", "Buy", stop=longStopLevel) // Death cross, enter short position else if(isDeathCross) strategy.entry("Sell", strategy.short) shortStopLevel := close + close * stop_loss_percentage/100.0 strategy.exit("StopLossShort", "Sell", stop=shortStopLevel) //------------------------------------------------------------------------------ // position closing logic //------------------------------------------------------------------------------ else // Close long position on death cross if(strategy.position_size > 0 and isDeathCross) strategy.close("Buy") // Close short position on golden cross else if(strategy.position_size < 0 and isGoldenCross) strategy.close("Sell") //------------------------------------------------------------------------------ // ploting //------------------------------------------------------------------------------ plot(maQuick, color=color.yellow) plot(maSlow, color=color.blue)