양적 거래에 이동 평균 전략과 함께 피보나치 평균 촛불

저자:차오장, 날짜: 2024-01-19 14:36:45
태그:

img

전반적인 설명

이 전략은 피보나치 연속을 기반으로 평균 촛불과 이동 평균을 구성하여 장기 포지션과 짧은 포지션으로만 양적 거래를 구현합니다. 초기 테스트는이 전략이 더 큰 시간 프레임에서 더 잘 수행된다는 것을 보여줍니다.

전략 원칙

이 전략의 주요 단계는 다음과 같습니다.

  1. 평균 촛불을 만들기 위해 가장 최근의 10개의 피보나치 사이클의 평균 폐쇄, 최고, 최저 및 오픈 가격을 계산합니다.

  2. 평균 닫기 가격의 1-, 2-, 3-, 5-, 8-, 13-, 21-, 34- 및 55 기간 지수 이동 평균 (EMA) 을 계산하고 평균 EMA를 얻기 위해 그 평균을 취합니다.

  3. 긴 및 닫는 조건을 설정하십시오: 평균 촛불이 상승 패턴을 표시할 때 긴 포지션을 열고 (열기보다 높게 닫고, 상승 포진) 평균 EMA보다 높게 닫습니다. 평균 촛불이 하락 패턴을 표시할 때 긴 포지션을 닫고 (열기보다 낮게 닫고, 하락 포진) 평균 EMA보다 낮습니다.

평균 촛불을 계산하여 가격 변동을 필터링하고 이동 평균 지표와 결합하여 거래 신호를 생성함으로써이 전략은 트렌드를 효과적으로 식별하고 거래 위험을 제어 할 수 있습니다.

장점

  1. 피보나치 계열에 기반한 평균 촛불은 무작위 가격 소음을 효과적으로 필터하고 트렌드 신호를 식별할 수 있습니다.

  2. 여러 EMA의 평균은 지지/저항 수준의 안정성을 향상시키고 신호 품질을 향상시킵니다.

  3. 단지 긴 포지션만이 거래의 수를 줄이고 거래 비용과 미끄러짐 영향을 줄입니다.

  4. 중장기 거래에 적합한 더 큰 시간 프레임에서 잘 수행됩니다.

위험성

  1. 단장 전략은 하락 시장에서 상당한 손실을 초래할 수 있습니다.

  2. EMA 라인은 지연이 있고, 가장 좋은 입구 지점을 놓칠 가능성이 있습니다.

  3. 너무 큰 시간 프레임을 추구하면 짧은 시간 프레임에서 기회를 놓칠 수 있습니다.

  4. 제한된 매개 변수 최적화 공간은 실제 거래 성과가 백테스트 결과를 저하시킬 수 있음을 의미합니다.

개선 영역

  1. 손실이 증가할 때 출구 포지션에 적절한 스톱 로스를 추가하는 것을 테스트 할 수 있습니다.

  2. ATR와 같은 변동성 측정법을 결합하여 포지션 크기를 동적으로 조정할 수 있습니다.

  3. 수익을 높이기 위해 하락 추세에서 적절한 단편 포지션을 테스트 할 수 있습니다.

  4. 가장 좋은 조합을 찾기 위해 EMA 기간 매개 변수를 최적화 할 수 있습니다.

결론

이 전략은 피보나치 평균 촛불과 이동 평균 지표를 구성하여 양적 거래의 트렌드 신호를 식별합니다. 평균 촛불으로 가격 소음을 필터링하고 단지 장기간으로 거래 비용을 줄이는 것을 장점으로합니다. 또한 단 장기 포지션과 EMA 지체 이슈에 대한 하락 시장의 위험이 있습니다. 전반적으로이 전략은 여러 측면에서 거래 위험을 제어하고 중장기 거래에 적합한 더 큰 시간 프레임에서 잘 수행합니다. 추가 최적화는 안정성과 수익성을 향상시킬 수 있습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


더 많은