가격파동 이론과 이동평균 전략에 기반


생성 날짜: 2023-11-13 16:39:41 마지막으로 수정됨: 2023-11-13 16:39:41
복사: 1 클릭수: 640
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

가격파동 이론과 이동평균 전략에 기반

개요

이 전략은 가격 파동 이론과 평평한 이동 평균을 결합하여 트렌드 형성 기회를 찾고, 합리적인 스톱로스를 설정하고 스톱로스를 추적하여 위험을 통제하여 수익을 극대화합니다. 전략은 지정된 거래 시간 동안만 포지션을 열고, 특정 시간의 시장 변동을 피합니다.

전략 원칙

  • SMMA 이동 평균을 사용하여 가격 평균을 계산하고, 시장 소음을 어, 트렌드 방향을 식별합니다.
  • 일정 기간의 최고 가격과 최저 가격에 따라 가격 파동을 판단하고, 트렌드 전환점을 식별합니다.
  • 물가 파동이 이동 평균을 넘어서면 더 많은 것을 볼 수 있고, 넘어서면 더 많은 것을 볼 수 있습니다.
  • ATR 기반의 트래킹 스톱로스와 함께 스톱포트를 설정하여 위험을 제어합니다.
  • 지정된 거래 시간에만 포지션을 열고 주말과 특정 시간대의 시장 변동성을 피하십시오.
  • 역전 신호가 발음되면 포지션 정지

우위 분석

  • 가격 파동 이론을 사용하여 가격 전환점을 판단하고, 이동 평균을 사용하여 트렌드 방향을 판단하여 트렌드를 효과적으로 식별할 수 있습니다.
  • 스톱 손실 지점 설정 및 ATR 동적 추적 스톱 손실은 단일 스톱 손실을 효과적으로 제어 할 수 있습니다.
  • 유동성이 있는 거래 시간에만 포지션을 열면, 특정 기간 동안의 불필요한 슬라이드 및 급격한 변동이 피할 수 있습니다.
  • 회전 신호가 발생했을 때 멈춰서 극대화 할 수 있는 패러블 라인 중지 원칙을 엄격히 따르십시오.

위험 분석

  • 가격 파동 판단이 정확하지 않을 때, 비 트렌드 영역에서 반복 거래가 가능합니다.
  • 이동 평균의 뒤처짐이 트렌드 전환점을 놓칠 수 있습니다.
  • 스톱포인트가 너무 작으면 쉽게 스톱포인트를 만들 수 있고, 너무 커지면 더 큰 손실을 초래할 수 있습니다.
  • 고정 스톱은 상황에 따라 유연하게 조정할 수 없습니다.

위험 해소:

  • 파동주기 변수를 최적화하고, 이동평균 변수를 조정
  • Stochastics 지표와 결합하여 역전 신호를 결정합니다.
  • 동적으로 최적화 스톱포인트와 스톱 조건

최적화 방향

  • 파동주기 변수를 최적화하여 최적의 평평 평균주기를 찾는다
  • Stoch 지표 판단 역전, 세트 신호 필터 가짜 돌파
  • 정지점과 정지 위치를 동적으로 조정합니다.
  • 스톱포인트 대역폭을 넓히고
  • 다양한 품종, 거래시기에 따라 최적화 매개 변수

요약하다

이 전략은 가격 파동 이론과 평평 평균 지표를 통합하여, 지정된 거래 시간대를 회피한 후, 가격 파동 방향과 트렌드를 판단하여 입장을 확인하고, 스톱로스를 설정하고, 스톱로스를 추적하여 위험을 제어하고, 역전 신호가 발생했을 때 멈춥니다. 전략은 변수 최적화 및 보조 지표를 추가하여 안정성과 수익률을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-11-12 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("FX Strategy Based on Fractals and SMMA", overlay=true)

// パラメータ
SMMAPeriod1 = input(30, title="SMMA Period")
StopLoss1 = input(7, title="Stop Loss %")
TrailingStopCoef1 = input(2.7, title="Trailing Stop Coefficient")
fractalPeriod = input(5, title="Fractal Period")

// SMMAの計算関数
smma(src, length) =>
    var float smma = na
    if na(smma[1])
        smma := sma(src, length)
    else
        smma := (smma[1] * (length - 1) + src) / length
    smma

// フラクタルの近似
highFractal = high[2] > high[1] and high[2] > high[3] and high[2] > high[4] and high[2] > high
lowFractal = low[2] < low[1] and low[2] < low[3] and low[2] < low[4] and low[2] < low

// エントリー条件
longEntrySignal = lowFractal and close[1] < smma(close, SMMAPeriod1)
shortEntrySignal = highFractal and close[1] > smma(close, SMMAPeriod1)

// エントリー実行
if (longEntrySignal)
    strategy.entry("Long", strategy.long)

if (shortEntrySignal)
    strategy.entry("Short", strategy.short)

// トレーリングストップの計算
atrValue = atr(10)
longStopPrice = close - atrValue * TrailingStopCoef1
shortStopPrice = close + atrValue * TrailingStopCoef1

// トレーリングストップの設定
strategy.exit("Exit Long", "Long", stop=longStopPrice)
strategy.exit("Exit Short", "Short", stop=shortStopPrice)

// バックテスト期間の設定(MetaTraderのバックテストと同じ期間)
startYear = 2007
startMonth = 05
startDay = 01
endYear = 2022
endMonth = 04
endDay = 01

startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// バックテスト期間内でのみトレードを実行
if (time >= startDate and time <= endDate)
    if (longEntrySignal)
        strategy.entry("Long", strategy.long)
    if (shortEntrySignal)
        strategy.entry("Short", strategy.short)