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

동적 후속 정지 두 개의 목표 이동 평균 교차 전략

저자:차오장, 날짜: 2024-07-29 14:40:23
태그:SMAMATPSL

img

전반적인 설명

이 전략은 이동 평균 크로스오버를 기반으로 한 거래 시스템으로, 리스크 관리를 위해 동적인 트레일링 스톱과 이중 수익 목표를 결합합니다. 이 전략은 주로 입점 지점을 결정하기 위해 200 기간 이동 평균과 함께 가격의 크로스오버를 사용하며, 유연한 스톱 로스 및 영업 수준을 구현하여 위험 통제와 수익 극대화를 달성합니다.

전략 원칙

  1. 입력 신호:

    • 롱 엔트리: 가격이 200주기 이동 평균을 넘을 때
    • 단기 진입: 가격이 200주기 이동평균 아래로 넘어가면
  2. 위험 관리:

    • 초기 스톱 로스: 엔트리 가격에서 500 포인트를 설정
    • 동적 트레일링 스톱: 가격이 유리한 방향으로 200 포인트를 움직일 때, 스톱 로스는 엔트리 가격으로 이동됩니다.
  3. 수익 목표:

    • 첫 번째 목표: 가격이 진입에서 3000 포인트에 도달하면, 75%의 지점이 닫힌다
    • 두 번째 목표: 나머지 25%의 포지션은 가격이 엔트리에서 4000 포인트에 도달하면 닫습니다.
    • 동적 트레일링 스톱이 트리거되면 나머지 포지션의 스톱 로스는 입상 가격으로 설정됩니다.
  4. 위치 관리:

    • 거래당 100개 단위의 고정량

전략적 장점

  1. 트렌드 추적: 이동 평균을 사용하여 시장 트렌드를 파악하고 주요 시장 움직임에서 이익을 얻는 데 도움이됩니다.

  2. 리스크 제어: 초기 스톱 로스를 동적 트레일링 스톱과 결합하여 최대 손실을 제한하고 누적된 이익을 보호합니다.

  3. 이윤 극대화: 두 개의 목표 가격을 설정함으로써 더 큰 추세를 계속 추적하면서 부분적인 이윤을 확보합니다.

  4. 자동화: 전략은 완전히 자동화되어 거래 결정에 대한 감정적 간섭을 줄입니다.

  5. 유연성: 이동 평균 기간, 스톱 로스 포인트 및 수익 목표와 같은 다양한 매개 변수를 시장 조건에 따라 조정할 수 있습니다.

전략 위험

  1. 시장 위험: 범위와 관련된, 변동 시장에서, 빈번한 잘못된 브레이크 아웃 신호는 연속 손실로 이어질 수 있습니다.

  2. 미끄러짐 위험: 빠르게 변화하는 시장에서 실제 실행 가격은 이상 가격에서 크게 벗어날 수 있습니다.

  3. 오버 트레이딩: 빈번한 크로스오버 신호는 과도한 거래로 인해 거래 비용을 증가시킬 수 있습니다.

  4. 단일 지표 의존성: 이동 평균에만 의존하면 다른 중요한 시장 정보를 간과 할 수 있습니다.

  5. 고정 포지션 위험: 각 거래에 고정된 양을 거래하는 것은 모든 시장 환경에 적합하지 않을 수 있습니다.

전략 최적화 방향

  1. 다중 지표 통합: 입시 신호 신뢰성을 향상시키기 위해 이동 평균과 함께 사용할 수 있는 RSI, MACD 등과 같은 다른 기술 지표를 도입하는 것을 고려하십시오.

  2. 동적 포지션 크기: 시장 변동성과 계좌 잔액을 기반으로 거래량을 조정하여 위험을 더 잘 제어합니다.

  3. 시장 환경 필터링: 불리한 시장 조건에서 입력을 피하기 위해 트렌드 강도 또는 변동성 지표를 추가합니다.

  4. 매개 변수 최적화: 다른 매개 변수 조합을 백테스트하기 위해 역사적 데이터를 사용하여 이동 평균 기간, 중지 손실 포인트 및 수익 목표에 대한 최적 설정을 찾습니다.

  5. 시간 필터링: 매우 변동적이거나 유동성이 낮은 기간 동안 거래를 피하기 위해 시간 필터를 추가하는 것을 고려하십시오.

  6. 기본 요소 통합: 중요한 경제 데이터 발표 또는 다른 기본 이벤트를 포함하여 전략 입출시와 출출 시기를 조정합니다.

결론

다이내믹 트레일링 스톱 (Dynamic Trailing Stop) 은 기술 분석과 리스크 관리를 결합한 양적 거래 시스템이다. 동적 스톱 손실과 복수의 이익 목표를 통해 위험과 보상을 균형 잡으면서 이동 평균을 사용하여 시장 추세를 포착한다. 이 전략의 주요 장점은 높은 수준의 자동화, 유연한 리스크 제어 및 강력한 트렌드 시장에서 상당한 수익을 얻을 수 있는 잠재력이다. 그러나 사용자는 불안정한 시장의 위험을 인식하고 적응력과 안정성을 향상시키기 위해 추가 최적화를 고려해야 한다. 지속적인 매개 변수 조정, 추가 시장 지표 도입 및 보다 복잡한 위치 관리 방법을 고려함으로써 이 전략은 다양한 시장 환경에서 잘 수행할 수 있는 잠재력을 가지고 있다.


/*backtest
start: 2023-07-29 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SOL/USDT Trading Strategy", overlay=true)

// Параметры стратегии
input_quantity = input(2, title="Trade Size (SOL)")
stop_loss_points = input(500, title="Stop Loss Points")
take_profit_points_1 = input(3000, title="First Take Profit Points")
take_profit_points_2 = input(4000, title="Second Take Profit Points")
move_stop_to_entry_points = input(200, title="Move Stop to Entry Points")
ma_period = input(180, title="MA Period")

// Расчет скользящей средней
ma = ta.sma(close, ma_period)

// Условия входа в сделку
long_condition = ta.crossover(close, ma)
short_condition = ta.crossunder(close, ma)

// Текущая цена
var float entry_price = na

// Логика открытия и закрытия сделок
if (long_condition)
    entry_price := close
    strategy.entry("Long", strategy.long, qty=input_quantity)
if (short_condition)
    entry_price := close
    strategy.entry("Short", strategy.short, qty=input_quantity)

// Логика выхода из сделок
if (strategy.position_size > 0)
    if (close >= entry_price + take_profit_points_1 * syminfo.mintick)
        strategy.exit("Partial Take Profit", "Long", qty=0.75 * input_quantity, limit=close)
        strategy.exit("Remaining Take Profit", "Long", qty=0.25 * input_quantity, limit=entry_price + take_profit_points_2 * syminfo.mintick, stop=entry_price)

    if (close >= entry_price + move_stop_to_entry_points * syminfo.mintick)
        strategy.exit("Stop Loss at Entry", "Long", qty=strategy.position_size, stop=entry_price)
    else
        strategy.exit("Take Profit/Stop Loss", "Long", stop=entry_price - stop_loss_points * syminfo.mintick, limit=entry_price + take_profit_points_1 * syminfo.mintick)

if (strategy.position_size < 0)
    if (close <= entry_price - take_profit_points_1 * syminfo.mintick)
        strategy.exit("Partial Take Profit", "Short", qty=0.75 * input_quantity, limit=close)
        strategy.exit("Remaining Take Profit", "Short", qty=0.25 * input_quantity, limit=entry_price - take_profit_points_2 * syminfo.mintick, stop=entry_price)

    if (close <= entry_price - move_stop_to_entry_points * syminfo.mintick)
        strategy.exit("Stop Loss at Entry", "Short", qty=strategy.position_size, stop=entry_price)
    else
        strategy.exit("Take Profit/Stop Loss", "Short", stop=entry_price + stop_loss_points * syminfo.mintick, limit=entry_price - take_profit_points_1 * syminfo.mintick)

// Отображение скользящей средней
plot(ma, title="200 MA", color=color.blue)


관련

더 많은