리소스 로딩... 로딩...

동적 이동 평균 크로스오버 트렌드 적응적 리스크 관리 전략

저자:차오장, 날짜: 2024-12-27 15:08:40
태그:SMAMATPSL

img

전반적인 설명

이 전략은 이중 이동 평균 크로스오버 신호에 기반한 트렌드를 따르는 시스템으로, 동적 인 이익 취득 및 스톱-손실 메커니즘을 통합합니다. 5 기간 및 12 기간 단순 이동 평균 (SMA) 을 사용하여 거래 신호를 생성하여 수익 취득 및 손실 중지 레벨의 동적 조정을 통해 리스크 보상 비율을 최적화합니다. 초기 수익 취득은 10%로 설정되며 손실 중단은 5%로 설정되며 가격이 유리한 방향으로 움직일 때 레벨은 각각 20%와 2.5%로 조정됩니다.

전략 원칙

핵심 논리는 빠른 (5기) 및 느린 (12-기) 이동 평균 사이의 교차 관계에 의존합니다. 빠른 MA가 느린 MA를 넘을 때 구매 신호가 생성되며 빠른 MA가 느린 MA를 넘을 때 포지션은 닫습니다. 전략의 독특함은 역동적 인 위험 관리 메커니즘에 있습니다. 포지션 입출 후 시스템은 지속적으로 가격 움직임을 모니터링하고 위험을 제어하면서 이익을 극대화하기 위해 수익을 취하고 손실을 멈추는 수준을 동적으로 조정합니다.

전략적 장점

  1. 명확하고 이해하기 쉽고 실행하기 쉬운 신호로 고전적인 이중 MA 교차 전략을 사용합니다.
  2. 동적인 영업/손실 중단 메커니즘은 실적 수익을 효과적으로 보호하고 적립을 방지합니다.
  3. 전략 매개 변수는 다양한 시장 특성에 따라 유연하게 조정할 수 있습니다.
  4. 포괄적 인 위험 관리 메커니즘은 단일 거래 위험을 효과적으로 제어합니다.
  5. 명확한 코드 구조는 유지 및 최적화를 촉진합니다.

전략 위험

  1. 다양한 시장에서 잘못된 신호를 생성하여 빈번한 거래로 이어질 수 있습니다.
  2. 급격한 회전 시나리오에서 잠재적인 상당한 마취
  3. 잘못된 매개 변수 설정은 전략 성능에 영향을 줄 수 있습니다.
  4. 시장 유동성 문제는 스톱 로스 실행에 영향을 줄 수 있습니다. 위험 관리 권고:
  • 트렌드 필터를 추가
  • 매개 변수 선택 최적화
  • 실시간 시장 유동성 모니터링
  • 종합적인 자금 관리 시스템을 구축

최적화 방향

  1. 시장 신호를 필터링하기 위해 트렌드 강도 지표를 도입하십시오.
  2. 신호 신뢰성을 향상시키기 위해 볼륨 요인을 통합하는 것을 고려하십시오.
  3. 수익/손실 중단 매개 변수를 최적화하여 위험/이익 비율을 높여
  4. 시장 변동성 적응 메커니즘 추가
  5. 위치 크기 시스템 개선

요약

이 전략은 고전적인 이동 평균 크로스오버 신호와 혁신적인 동적 리스크 관리를 결합하여 트렌드를 효과적으로 포착하고 위험을 동적으로 제어합니다. 전략 설계는 명확하고 구현은 효율적이며 좋은 실용성과 확장성을 보여줍니다. 지속적인 최적화와 개선으로이 전략은 실제 거래에서 안정적인 수익을 달성하는 것을 약속합니다.


/*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)







관련

더 많은