이 전략은 두 가지 지표를 결합합니다: 이동 평균 반전 및 가격 불동향 오시레이터 거래 신호를 생성하고 주기 반전 후 리바운드 트렌드를 잡습니다.
이 전략은 주로 다음 두 가지 기술 지표를 사용하여 거래 신호 판단을 합니다.
이동 평균 역전
지난 2일 동안의 가격 상승 추세 또는 하락 추세를 계산하여 패스트 라인 K 값과 결합하여 반전 신호가 발생하는지 여부를 결정합니다. 지난 2일 동안 가격이 계속 상승하고 패스트 라인 K 값이 느린 라인 K 값보다 낮으면 구매 신호가 생성됩니다. 지난 2일 동안 가격이 계속 떨어지고 빠른 라인 K 값이 느린 라인 K 값보다 높으면 판매 신호가 생성됩니다.
가격 디트렌드 오시레이터
디트렌드 가격 오시일레이터는 수평 이동 평균선을 그리며 가격과 라인 사이의 관계를 기반으로 가격 주기를 식별합니다. 계산 기간보다 더 긴 경향을 필터링하여 숨겨진 단기 변동을 보여줍니다. 가격이 이동 평균 라인 위에있을 때 그것은 구매 신호입니다. 가격이 라인 아래에있을 때 그것은 판매 신호입니다.
이 전략은 두 지표의 신호를 결합합니다. 즉, 이동 평균 반전 신호가 나타나고 가격 추세 오시레이터가 또한 반전 신호를 확인하면 거래 주문이 생성됩니다. 이것은 일부 유효하지 않은 반전 신호를 필터링하여 반전 후 리바운드 트렌드를 잡을 수 있습니다.
이 전략의 가장 큰 장점은 이 두 지표의 장점을 잘 활용하여 유효하지 않은 신호를 효과적으로 필터링하고 신호 신뢰성을 높일 수 있다는 것입니다.
이동 평균 반전 지표 자체는 잘못된 신호를 생성하는 경향이 있습니다. 판단에 전적으로 의존하는 것은 꼭대기를 추구하고 바닥을 치는 경향이 있습니다. 조합을위한 가격 탈동 오시레이터의 도입은 이상적이지 않은 오시레이션 영역에서 반전 작전을 피할 수 있습니다.
가격 추세 변동기의 매개 변수 설정은 또한 단기 변동만을 식별하는 것을 결정합니다. 이는 이동 평균 반전의 판단과 매우 잘 일치하며 합리적인 반전 시기를 식별 할 수 있습니다.
이 전략의 주요 위험은 다음과 같습니다.
이동 평균 반전은 옆 범위에서 발생하는 경향이 있습니다. 리바운드 모멘텀이 충분하지 않으면 다시 콜백하고 스톱 로스를 만져 수익을 얻지 못할 가능성이 있습니다.
가격 추세 변동기의 매개 변수가 너무 커지면 중장기 동향을 파악할 수 있고 너무 작으면 판단 오류의 위험을 증가시킬 수 있습니다. 매개 변수들은 다양한 제품에 대해 신중하게 테스트되어야합니다.
주요 뉴스 이벤트는 기존 트렌드 판단을 방해하여 반전 신호가 실패하는 결과를 초래할 수 있습니다. 뉴스 이벤트가 발생하면 기본 사항에주의를 기울이고 맹목적으로 거래를 피해야합니다.
이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.
단일 손실을 통제하기 위해 정지 손실 또는 시간 정지 손실을 합리적으로 설정합니다.
부적절한 추진력으로 인해 비효율적인 돌파구를 피하기 위해 평균 부피를 뚫었을 때만 신호를 발산하는 것과 같은 부피 확인을 추가합니다.
시장 조건에 따라 매개 변수를 동적으로 최적화하고, 명백한 추세에 따라 매개 변수를 적절히 완화하고, 통합 시 매개 변수를 강화합니다.
무작위 숲과 같은 기계 학습 방법을 사용하여 동적 지능 최적화를 달성하기 위해 매개 변수 조합을 평가하고 선택합니다.
이 전략은 반전 지점에서 리바운드 트렌드를 잡기 위해 두 지표의 강점을 합리적으로 결합합니다. 함락 및 매개 변수 최적화와 같은 문제가 남아 있지만 전체 아이디어는 명확하고 논리적입니다. 안정적인 이익을 얻기 위해 추가 테스트와 최적화가 가치가 있습니다.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 30/12/2019 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // The Detrend Price Osc indicator is similar to a moving average, // in that it filters out trends in prices to more easily identify // cycles. The indicator is an attempt to define cycles in a trend // by drawing a moving average as a horizontal straight line and // placing prices along the line according to their relation to a // moving average. It provides a means of identifying underlying // cycles not apparent when the moving average is viewed within a // price chart. Cycles of a longer duration than the Length (number // of bars used to calculate the Detrend Price Osc) are effectively // filtered or removed by the oscillator. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos DPO(Length) => pos = 0.0 xPrice = close xsma = sma(xPrice, Length) nRes = xPrice - xsma pos := iff(nRes > 0, 1, iff(nRes < 0, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Detrended Price Oscillator", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- LengthDPO = input(14, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posDPO = DPO(LengthDPO) pos = iff(posReversal123 == 1 and posDPO == 1 , 1, iff(posReversal123 == -1 and posDPO == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )