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

다 기간 이동 평균 크로스오버 전략에 따른 동적 경향

저자:차오장, 날짜: 2024-12-13 10:40:30
태그:SMAEMAMA

img

전반적인 설명

이 전략은 여러 기간 이동 평균에 기반한 트렌드를 따르는 거래 시스템이다. 전체 시장 트렌드 방향을 결정하기 위해 89 기간 및 21 기간 간단한 이동 평균 (SMA) 을 활용하며, 특정 거래 신호를 식별하기 위해 5 기간 기하급수적 이동 평균 (EMA) 고도와 하위를 통합합니다. 이 전략은 고정 스톱-로스 및 후속 영리 메커니즘과 결합된 이중 포지션 관리 접근 방식을 사용합니다.

전략 원칙

핵심 논리는 다음의 핵심 요소들을 포함합니다.

  1. 트렌드 결정: 89 기간 및 21 기간 SMA의 상대적 위치를 가격 위치와 함께 트렌드를 식별합니다. 가격과 5 기간 EMA가 89 기간 SMA보다 높은 21 기간 SMA보다 높을 때 상승 추세가 확인됩니다. 반대로 하락 추세가 확인됩니다.
  2. 진입 신호: 상승 추세에서 가격이 5주기 EMA 최저 수준으로 되돌아갈 때 긴 포지션을 입력합니다. 하락 추세에서는 가격이 5주기 EMA 최저 수준으로 반격할 때 짧은 포지션을 입력합니다.
  3. 포지션 관리: 각 트리거 신호에 대해 동일한 두 개의 계약 포지션을 개설합니다.
  4. 리스크 컨트롤: 첫 번째 포지션에 고정된 스톱 로스 및 수익 타겟을 적용하고 두 번째 포지션에 따라 스톱 로스를 적용합니다.

전략적 장점

  1. 다중 시간 프레임 확인: 다른 기간 이동 평균의 조합은 잘못된 신호를 줄이기 위해 더 포괄적인 트렌드 평가를 제공합니다.
  2. 유연한 수익 취득: 단기 변동과 장기적인 추세를 포착하기 위해 고정 및 후속 수익 취득 방법을 결합합니다.
  3. 제어된 위험: 각 거래 신호에 대해 고정된 위험 노출과 함께 명확한 스톱 로스 수준을 설정합니다.
  4. 체계적인 운영: 명확한 거래 규칙은 주관적 판단을 최소화하여 프로그래밍으로 구현하는 것이 쉽습니다.

전략 위험

  1. 연립 위험: 옆 시장에서 이동 평균의 교차가 빈번하게 발생하면 과도한 잘못된 신호가 발생할 수 있습니다.
  2. 슬리퍼 리스크: 높은 변동성 기간 동안 이론 및 실제 실행 가격 사이의 중요한 가격 오차.
  3. 자금 관리 위험: 고정 계약량 거래는 모든 계정 크기에 적합하지 않을 수 있습니다.
  4. 매개 변수 민감성: 전략 성과는 이동 평균 기간 선택에 크게 의존하며 다른 시장에 최적화를 요구합니다.

최적화 방향

  1. 동적 위치 크기: 계정 자금과 시장 변동성에 따라 계약 양을 조정하는 것이 좋습니다.
  2. 시장 환경 필터링: 다양한 시장에서 거래 빈도를 줄이기 위해 트렌드 강도 지표 (ADX와 같은) 를 추가합니다.
  3. 스톱 로스 강화: 다른 시장 조건에 대한 적응력을 향상시키기 위해 동적 스톱 로스 조정을 위해 ATR을 사용하는 것을 고려하십시오.
  4. 신호 확인: 신호 신뢰성을 높이기 위해 부피와 운동량 표시기를 포함합니다.

요약

이 전략은 유연한 포지션 관리 및 리스크 제어 방법을 구현하면서 여러 기간 이동 평균을 통해 시장 추세를 포착하는 포괄적인 트렌드 추적 시스템을 나타냅니다. 최적화 할 여지가 있지만 기본 프레임워크는 좋은 실용성과 확장성을 보여줍니다. 매개 변수를 조정하고 다른 거래 도구 및 시장 환경에 대한 필터링 조건을 추가함으로써 전략의 안정성을 향상시킬 수 있습니다.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
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/
// © tobiashartemink2

//@version=5
strategy("High 5 Trading Technique", overlay=true)

// --- Input parameters ---
sma89Length = input.int(title="SMA 89 Length", defval=89)
sma21Length = input.int(title="SMA 21 Length", defval=21)
ema5HighLength = input.int(title="EMA 5 High Length", defval=5)
ema5LowLength = input.int(title="EMA 5 Low Length", defval=5)
contracts = input.int(title="Aantal Contracten", defval=1)
stopLossPoints = input.int(title="Stop Loss Points per Contract", defval=25)
takeProfitPoints = input.int(title="Take Profit Points per Contract", defval=25)

// --- Calculate moving averages ---
sma89 = ta.sma(close, sma89Length)
sma21 = ta.sma(close, sma21Length)
ema5High = ta.ema(high, ema5HighLength)
ema5Low = ta.ema(low, ema5LowLength)

// --- Identify trend and order of moving averages ---
longSetup = close > sma89 and close > sma21 and ema5High > sma21 and sma21 > sma89
shortSetup = close < sma89 and close < sma21 and ema5Low < sma21 and sma21 < sma89

// --- Entry signals ---
longTrigger = longSetup and close <= ema5Low
shortTrigger = shortSetup and close >= ema5High

// --- Entry orders ---
if (longTrigger)
    strategy.entry("Long 1", strategy.long, qty=contracts)
    strategy.entry("Long 2", strategy.long, qty=contracts)

if (shortTrigger)
    strategy.entry("Short 1", strategy.short, qty=contracts)
    strategy.entry("Short 2", strategy.short, qty=contracts)

// --- Stop-loss and take-profit for long positions ---
if (strategy.position_size > 0)
    strategy.exit("Exit Long 1", "Long 1", stop=strategy.position_avg_price - stopLossPoints, limit=strategy.position_avg_price + takeProfitPoints)
    strategy.exit("Exit Long 2", "Long 2", stop=strategy.position_avg_price - stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Stop-loss and take-profit for short positions ---
if (strategy.position_size < 0)
    strategy.exit("Exit Short 1", "Short 1", stop=strategy.position_avg_price + stopLossPoints, limit=strategy.position_avg_price - takeProfitPoints)
    strategy.exit("Exit Short 2", "Short 2", stop=strategy.position_avg_price + stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Plot moving averages ---
plot(sma89, color=color.blue, linewidth=2)
plot(sma21, color=color.red, linewidth=2)
plot(ema5High, color=color.green, linewidth=2)
plot(ema5Low, color=color.orange, linewidth=2)


관련

더 많은