이동 평균, 가격 패턴 및 부피에 기초한 트렌드 역전 전략

저자:차오장, 날짜: 2024-01-17 17:48:40
태그:

img

전반적인 설명

이 전략은 이동 평균, 가격 패턴 및 부피를 결합하여 시장에서 잠재적 인 트렌드 역전 지점을 식별합니다. 빠른 이동 평균이 느린 이동 평균을 넘어서면 길게 이동하고, 상승 추세 포식 패턴이 나타나고, 저항 수준이 깨지고 거래 부피가 증가합니다. 반대 조건이 발생하면 짧게됩니다.

원칙

이 전략의 핵심 아이디어는 이동 평균, 가격 액션 패턴 및 볼륨의 조합을 다가오는 반전을 위한 신호로 사용하는 것입니다. 구체적으로, 이동 평균의 황금 십자가와 죽음의 십자가는 트렌드의 변화를 나타낼 수 있습니다. 상승/하락 포식 패턴은 일반적으로 단기적인 반전을 의미합니다. 거래 부피의 급증은 또한 종종 트렌드 반전을 의미합니다. 세 가지 유형의 신호를 결합함으로써 전략은 반전 전환점을 정확하게 포착하는 것을 목표로합니다.

논리적으로, 전략은 먼저 빠르고 느린 이동 평균을 계산합니다. 그 다음 상승 / 하락 포식 패턴을 식별하기 위해 조건을 정의합니다. 지원 및 저항 수준은 부피 확장과 함께 추가 조건으로 통합됩니다. 빠른 MA가 느린 MA를 넘어서면 구매 신호가 발생하며 상승 패턴이 나타나고 저항이 깨지고 볼륨이 상승합니다. 반대 조건은 판매 신호를 유발합니다.

장점

이 전략의 가장 큰 장점은 반전을 확인하기 위해 여러 신호의 조합을 사용하는데, 이는 잘못된 신호를 피하는 데 도움이됩니다. 이동 평균이나 촛불 패턴과 같은 단일 지표에만 의존하면 잘못된 거래가 발생합니다. 세 가지 요인의 조화를 요구함으로써 반전을 정확하게 포착하는 확률이 크게 향상됩니다.

또한, 이 전략은 트렌드와 역전 개념 모두를 활용한다. 역전들은 기존 트렌드를 따라만 추구된다. 즉, 전략은 트렌딩 시장 내에서 반트렌드 리트레이스를 찾는다. 이것은 무작위성을 줄이고 수익성을 높이는 데 도움이 된다.

위험성

이 전략의 가장 큰 위험은 엔트리 신호 후에 가격이 거래 방향에 반대되는 것을 계속하는 실패한 반전입니다. 이것은 일반적으로 반전 신호가 거짓으로 밝혀지거나 지속되는 트렌드에 대한 단기적인 수정일 때 발생합니다.

해결책은 더 나은 트렌드를 정의하기 위해 이동 평균 기간을 조정하고, 더 넓은 스톱 손실을 사용하며, 반전 신호를 거래하기 전에 더 많은 확인 요인을 포함합니다. 더 높은 시간 프레임 트렌드를 기반으로 필터를 추가하는 것도 잘못된 브레이크 아웃 거래를 피하는 데 도움이 될 수 있습니다.

개선

이 전략의 가능한 최적화 경로는 다음을 포함합니다.

  1. 최적의 장기/단기 트렌드를 식별하기 위해 이동 평균 기간을 조정합니다.

  2. 피보트 포인트와 같은 다양한 지원/저항 계산 방법을 테스트합니다.

  3. 차킨 금전 흐름, 볼륨 오시레이터 같은 다른 볼륨 지표를 시도합니다.

  4. 장기 차트 패턴, 거대한 부피 스파이크 등과 같은 더 많은 반전 확인 요소를 포함합니다.

  5. 주식 지수 선물을 사용하여 시장을 통해 신호를 확인합니다.

매개 변수 조합의 엄격한 테스트를 통해 성능의 추가 개선이 이루어질 수 있습니다.

결론

이 전략은 트렌딩 시장에서만 이동 평균, 가격 액션 및 거래 부피가 트렌딩 시장에서 전환되는 것을 깔끔하게 결합합니다. 매개 변수를 최적화하고 더 많은 신호 확인을 추가함으로써 단기 역 트렌드 거래를위한 강력한 시스템이 될 수 있습니다.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profit Table Strategy", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100

// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]

// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")

// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition

// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition

// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)

// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)

// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")

// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)


더 많은