Đây là một chiến lược giao dịch trong ngày đơn giản dựa trên trung bình di chuyển kép. Nó sử dụng hai trung bình di chuyển đơn giản với các khoảng thời gian khác nhau và có vị trí dài hoặc ngắn khi các đường trung bình di chuyển vượt qua.
Chiến lược này sử dụng đường trung bình di chuyển đơn giản 10 ngày và 40 ngày. Nó đi dài khi đường trung bình di chuyển ngắn vượt qua đường trung bình di chuyển dài và đi ngắn khi chuyển đổi ngược xảy ra. Khi tín hiệu thay đổi, vị trí được đóng bằng cách sử dụng số lượng gấp đôi và một vị trí ngược được bắt đầu. Giao dịch chỉ xảy ra sau các tín hiệu đường trung bình di chuyển trong một phiên trong ngày được xác định. Bất kỳ vị trí mở nào còn lại đều được bình phương khi phiên kết thúc.
Chiến lược này chủ yếu sử dụng khả năng nắm bắt thay đổi giá nhanh hơn của trung bình động ngắn hơn. Khi SMA ngắn vượt qua trên SMA dài, nó chỉ ra xu hướng tăng giá trong ngắn hạn do đó đi dài có thể nắm bắt điều này.
Giảm rủi ro:
Tối ưu hóa các thông số MA bằng cách thử nghiệm nhiều kết hợp hơn để phù hợp nhất.
Thêm các bộ lọc như xác nhận MACD để giảm tín hiệu sai.
Tối ưu hóa nhân số lượng nhập ngược thông qua điều chỉnh tham số.
Kiểm tra kéo dài thời gian phiên trong ngày để có lợi nhuận tốt hơn.
Chiến lược này nắm bắt các xu hướng ngắn hạn được hình thành từ các tín hiệu chéo MA, mở rộng lợi nhuận bằng cách sử dụng giao dịch ngược số lượng gấp đôi và hạn chế rủi ro qua đêm bằng cách giao dịch chỉ trong một phiên giao dịch trong ngày.
/*backtest start: 2024-02-19 00:00:00 end: 2024-02-26 00:00:00 period: 1m basePeriod: 1m 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/ // © Pritesh-StocksDeveloper //@version=4 strategy("Moving Average - Intraday", shorttitle = "MA - Intraday", overlay=true, calc_on_every_tick = true) // Used for intraday handling // Session value should be from market start to the time you want to square-off // your intraday strategy var i_marketSession = input(title="Market session", type=input.session, defval="0915-1455", confirm=true) // Short & Long moving avg. period var int i_shortPeriod = input(title = "Short MA Period", type = input.integer, defval = 10, minval = 2, maxval = 20, confirm=true) var int i_longPeriod = input(title = "Long MA Period", type = input.integer, defval = 40, minval = 3, maxval = 120, confirm=true) // A function to check whether the bar is in intraday session barInSession(sess) => time(timeframe.period, sess) != 0 // Calculate moving averages shortAvg = sma(close, i_shortPeriod) longAvg = sma(close, i_longPeriod) // Plot moving averages plot(series = shortAvg, color = color.red, title = "Short MA", linewidth = 2) plot(series = longAvg, color = color.blue, title = "Long MA", linewidth = 2) // Long/short condition longCondition = crossover(shortAvg, longAvg) shortCondition = crossunder(shortAvg, longAvg) // See if intraday session is active bool intradaySession = barInSession(i_marketSession) // Trade only if intraday session is active // Long position strategy.entry(id = "Long", long = strategy.long, when = longCondition and intradaySession) // Short position strategy.entry(id = "Short", long = strategy.short, when = shortCondition and intradaySession) // Square-off position (when session is over and position is open) squareOff = (not intradaySession) and (strategy.position_size != 0) strategy.close_all(when = squareOff, comment = "Square-off")