Chiến lược này là một chiến lược giao dịch định lượng dựa trên chéo trung bình động. Nó tạo ra tín hiệu mua khi trung bình di chuyển nhanh (thời gian ngắn hơn) vượt qua trên trung bình di chuyển chậm (thời gian dài hơn) từ dưới, và tạo ra tín hiệu bán khi trung bình di chuyển nhanh vượt qua dưới trung bình di chuyển chậm từ trên. Ngoài ra, chiến lược giới thiệu khái niệm kích thước vị trí động bằng cách điều chỉnh kích thước của mỗi giao dịch dựa trên lợi nhuận và lỗ của tài khoản, để kiểm soát rủi ro.
Chiến lược chuyển động trung bình crossover là một chiến lược giao dịch định lượng đơn giản và thực tế nắm bắt xu hướng giá bằng cách sử dụng tín hiệu chéo từ hai đường trung bình chuyển động với các khoảng thời gian khác nhau trong khi giới thiệu các quy tắc định kích thước vị trí động để kiểm soát rủi ro. Chiến lược có logic rõ ràng, dễ thực hiện và có nhiều ứng dụng. Tuy nhiên, trong ứng dụng thực tế, người ta cần phải nhận thức được các rủi ro tiềm ẩn như giao dịch thường xuyên, hiệu suất kém trong thị trường hỗn loạn và tối ưu hóa tham số. Chiến lược nên được tối ưu hóa và cải thiện khi cần thiết, chẳng hạn như giới thiệu các chỉ số xác nhận xu hướng, tối ưu hóa các quy tắc định kích thước vị trí, kết hợp các cơ chế dừng lỗ và lấy lợi nhuận và thực hiện tối ưu hóa tham số thích ứng. Thông qua tối ưu hóa và tinh chỉnh liên tục, sự vững chắc và lợi nhuận của chiến lược có thể được tăng thêm.
/*backtest start: 2024-06-06 00:00:00 end: 2024-06-13 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © okolienicholas //@version=5 strategy("Moving Average Crossover Strategy", overlay=true) // Input parameters fast_length = input(9, title="Fast MA Length") slow_length = input(21, title="Slow MA Length") source = close account_balance = input(100, title="Account Balance") // Add your account balance here // Calculate moving averages fast_ma = ta.sma(source, fast_length) slow_ma = ta.sma(source, slow_length) // Plot moving averages plot(fast_ma, color=color.blue, title="Fast MA") plot(slow_ma, color=color.red, title="Slow MA") // Generate buy/sell signals buy_signal = ta.crossover(fast_ma, slow_ma) sell_signal = ta.crossunder(fast_ma, slow_ma) // Plot buy/sell signals plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal") // Calculate the risk per trade risk_per_trade = account_balance * 0.01 // Calculate the number of shares to buy shares_to_buy = risk_per_trade / (high - low) // Calculate the profit or loss profit_or_loss = strategy.netprofit // Adjust the position size based on the profit or loss if (profit_or_loss > 0) shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit else shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss // Execute orders if (buy_signal) strategy.entry("Buy", strategy.long, qty=shares_to_buy) if (sell_signal) strategy.entry("Sell", strategy.short, qty=shares_to_buy)