Chiến lược này là một hệ thống theo xu hướng dựa trên các tín hiệu chéo trung bình động kép, kết hợp một cơ chế lấy lợi nhuận và dừng lỗ động. Nó sử dụng Trung bình Di chuyển đơn giản (SMA) 5 giai đoạn và 12 giai đoạn để tạo ra các tín hiệu giao dịch, tối ưu hóa tỷ lệ rủi ro-lợi nhuận thông qua điều chỉnh năng động của mức lấy lợi nhuận và dừng lỗ. Lợi nhuận ban đầu được đặt ở mức 10% và dừng lỗ ở mức 5%, với mức điều chỉnh lần lượt là 20% và 2,5% khi giá di chuyển thuận lợi.
Lý thuyết cốt lõi dựa trên mối quan hệ chéo giữa các đường trung bình động nhanh (5 giai đoạn) và chậm (12 giai đoạn). Một tín hiệu mua được tạo ra khi MA nhanh vượt qua trên MA chậm, trong khi các vị trí được đóng khi MA nhanh vượt qua dưới MA chậm. Tính độc đáo của chiến lược nằm trong cơ chế quản lý rủi ro năng động của nó: sau khi nhập vị trí, hệ thống liên tục theo dõi chuyển động giá và điều chỉnh năng động mức lợi nhuận và dừng lỗ để tối đa hóa lợi nhuận trong khi kiểm soát rủi ro.
Chiến lược này có hiệu quả nắm bắt xu hướng và kiểm soát rủi ro một cách năng động bằng cách kết hợp các tín hiệu chéo trung bình động cổ điển với quản lý rủi ro năng động sáng tạo.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1 )) // MA periods fastLength = input.int(5, title="Fast MA Length") slowLength = input.int(12, title="Slow MA Length") // Take Profit and Stop Loss takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss % from the last price takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px stopLossLevel_dyn = input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px // Вычисление скользящих средних fastMA = ta.sma(close, fastLength) slowMA= ta.sma(close, slowLength) // Conditions for Sell and Buy longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз // Buy position condition if (longCondition) strategy.entry("Buy", strategy.long) // Dynamic TP SL leveles takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100) stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100) entryPrice = strategy.position_avg_price if (strategy.position_size > 0) // если есть открытая позиция // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100) // stopLossPrice := entryPrice * (1-stopLossLevel / 100) // // Перемещение Stop Loss и Take Profit if (close > entryPrice) takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100) stopLossPrice := close * (1- stopLossLevel_dyn/ 100) if (shortCondition) strategy.close("Buy") strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice) // Drawing MA lines plot(fastMA, color=color.blue, title="Fast Moving Average") plot(slowMA, color=color.orange, title="Slow Moving Average") // Визуализация plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line) plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)