이 전략은 이중 이동 평균 크로스오버 신호에 기반한 트렌드를 따르는 시스템으로, 동적 인 이익 취득 및 스톱-손실 메커니즘을 통합합니다. 5 기간 및 12 기간 단순 이동 평균 (SMA) 을 사용하여 거래 신호를 생성하여 수익 취득 및 손실 중지 레벨의 동적 조정을 통해 리스크 보상 비율을 최적화합니다. 초기 수익 취득은 10%로 설정되며 손실 중단은 5%로 설정되며 가격이 유리한 방향으로 움직일 때 레벨은 각각 20%와 2.5%로 조정됩니다.
핵심 논리는 빠른 (5기) 및 느린 (12-기) 이동 평균 사이의 교차 관계에 의존합니다. 빠른 MA가 느린 MA를 넘을 때 구매 신호가 생성되며 빠른 MA가 느린 MA를 넘을 때 포지션은 닫습니다. 전략의 독특함은 역동적 인 위험 관리 메커니즘에 있습니다. 포지션 입출 후 시스템은 지속적으로 가격 움직임을 모니터링하고 위험을 제어하면서 이익을 극대화하기 위해 수익을 취하고 손실을 멈추는 수준을 동적으로 조정합니다.
이 전략은 고전적인 이동 평균 크로스오버 신호와 혁신적인 동적 리스크 관리를 결합하여 트렌드를 효과적으로 포착하고 위험을 동적으로 제어합니다. 전략 설계는 명확하고 구현은 효율적이며 좋은 실용성과 확장성을 보여줍니다. 지속적인 최적화와 개선으로이 전략은 실제 거래에서 안정적인 수익을 달성하는 것을 약속합니다.
/*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)