이동평균 사이의 오스실레이션 거래 전략

저자:차오장, 날짜: 2023-12-11 14:38:48
태그:

img

전반적인 설명

이 전략은 이동 평균 지표와 볼링거 밴드를 결합하여 양방향 거래에 이동 평균 사이에 오스실레이션하는 전략을 구현합니다. 가격이 하부 레일을 넘을 때 길게, 가격이 상부 레일을 넘을 때 짧게 이동하고 이동 평균 사이의 오스실레이션에서 이익을 얻습니다.

전략 원칙

  1. 빠른 이동 평균 ma_short와 느린 이동 평균 ma_long를 계산합니다
  2. ma_short가 ma_long 위에 넘어가면 길게, ma_short가 ma_long 아래에 넘어가면 길게
  3. 볼링거 반도의 상단, 하단 및 중단선을 계산합니다.
  4. 가격이 하부 레일 이상으로 넘어갈 때, 긴 신호를 확인; 가격이 상부 레일 이하로 넘어갈 때, 짧은 신호를 확인
  5. 이동평균 지표와 볼린거밴드가 같은 방향으로 신호를 보내는 경우 포지션을 열고, 반대 방향으로 신호를 보내는 경우 포지션을 닫습니다.

이점 분석

  1. 이중 지표의 조합은 비교적 안정화되어 일부 잘못된 신호를 필터링 할 수 있습니다.
  2. 이동 평균과 볼링거 밴드 사이의 오스실레이션은 최고치를 추격하고 판매 하락을 피합니다.
  3. 양방향 거래를 허용하면 가격 변동의 이익을 최대한 활용할 수 있습니다.

위험 분석

  1. 볼링거 밴드의 매개 변수 설정은 거래 빈도와 수익성에 영향을 줄 것입니다.
  2. 강한 트렌드 시장에서 큰 손실을 발생시키는 것이 쉽습니다.
  3. 이동 평균 시스템 자체는 출구에서 더 많은 손실 거래를 생성하는 경향이 있습니다.

위험 관리:

  1. 적절한 거래 빈도에 적응하기 위해 볼링거 밴드 매개 변수를 최적화합니다.
  2. 단일 거래 손실을 제어하기 위해 손해 중지 전략을 설정
  3. 경향 이 분명 하지 않을 때 이 전략 을 사용 하라

최적화 방향

  1. 이동 평균 시스템의 다른 매개 변수 조합을 테스트합니다.
  2. 필터 신호에 볼륨 표시기를 추가하는지를 평가합니다.
  3. 과잉 구매 및 과잉 판매 구역을 결정하기 위해 RSI와 다른 지표를 결합하는지를 테스트합니다.

위의 최적화는 수익성을 더욱 향상시키고 불필요한 거래를 줄이고 거래 빈도와 손실 위험을 줄일 수 있습니다.

요약

이 전략은 이동 평균 시스템과 볼링거 밴드를 결합하여 가격 이동 평균 사이의 오스실레이션 거래를 구현합니다. 이중 지표의 조합은 신호 품질을 향상시킬 수 있으며 양방향 거래를 허용하면 더 많은 기회를 제공합니다. 파라미터를 더 최적화하고 다른 보조 지표를 추가하면 불필요한 거래를 줄이고 수익성을 향상시킬 수 있습니다. 라이브 테스트와 최적화가 가치가 있습니다.

]


/*backtest
start: 2023-12-09 00:00:00
end: 2023-12-10 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MA-Zorrillo",overlay=true)

ma_short= sma(close,8)
ma_long= sma(close,89)

entry_ma = crossover (ma_short,ma_long)
exit_ma = crossunder (ma_short,ma_long) 


BBlength = input(24, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev

source = close
entry_bb = crossover(source, BBlower)
exit_bb = crossunder(source, BBupper)


vs_entry = false
vs_exit = false
for i = 0 to 63
    if (entry_bb[i])
        vs_entry :=  true
    if (exit_bb[i])
        vs_exit :=  true
        

entry = entry_ma and vs_entry
exit =  exit_ma and vs_exit

strategy.entry(id="long_ma",long=true,when=entry)
strategy.close(id="long_ma", when=exit)

strategy.entry(id="short_ma",long=false,when=exit)
strategy.close(id="short_ma",when=entry)


더 많은