이동평균선, 가격 패턴, 거래량에 기반한 반전 전략


생성 날짜: 2024-01-17 17:48:40 마지막으로 수정됨: 2024-01-17 17:48:40
복사: 0 클릭수: 551
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균선, 가격 패턴, 거래량에 기반한 반전 전략

개요

이 전략은 이동 평균, 가격 형태 및 거래량의 조합을 사용하여 시장의 전환점을 식별합니다. 빠른 이동 평균 상에서 느린 이동 평균을 통과하고, 다중의 흡수 형태가 나타나면, 저항 지점을 돌파하고, 거래량이 커지면, 전략은 더 많이 수행합니다. 반대로, 빠른 이동 평균 아래에서 느린 이동 평균을 통과하고, 빈 머리 흡수 형태가 나타나면, 지지대를 넘어 거래량이 커지면, 전략은 공허합니다.

원칙

이 전략의 핵심 아이디어는 평행선 시스템, 가격 형태, 양력 세 가지의 조합을 사용하여 잠재적인 반전점을 식별하는 것이다. 구체적으로, 평행선의 황금 교차와 죽음의 교차는 트렌드의 전환을 판단할 수 있다. 다중 헤드 스노프와 빈 헤드 스노프의 두 가지 가격 형태는 일반적으로 단기 반전을 예고한다. 많은 거래량이 유입되는 것은 또한 다가오는 트렌드 반전을 의미한다.

코드 논리적으로 볼 때, 먼저 빠른 이동 평균과 느린 이동 평균을 계산한다. 그리고 다중 헤드 포식과 공수 포식의 판단 조건을 설정한다. 또한 지원 저항 수준과 거래량 확대 조건도 설정한다. 일률적 금 교차, 다중 헤드 포식 형태를 충족하고, 저항 수준과 거래량을 확대하면, 여러 신호를 낸다. 일률적 죽음의 교차, 공수 포식 형태를 충족하고, 지원 수준과 거래량을 확대하면, 평소 위치 신호를 낸다.

장점

이 전략의 가장 큰 장점은 여러 가지 신호의 조합을 사용하여 반전을 식별하는 데 있습니다. 이것은 가짜 신호를 효과적으로 줄일 수 있습니다. 특히, 단일 평균선, 가격 형태 또는 양에만 의존하면 잘못된 거래 신호가 발생할 수 있습니다. 그러나 세 가지 신호가 동시에 나타나면 반전을 예측하는 성공률이 크게 향상됩니다.

또한, 이 전략은 동향과 반향의 두 요소를 동시에 이용한다. 반향 신호가 나타나기 전에 동향이 먼저 존재해야 한다. 즉, 이 전략은 동향 배경에서만 반향 기회를 찾는다. 이것은 또한 무작위성을 줄여 수익률을 높인다.

위험

이 전략의 가장 큰 위험은 반전 실패입니다. 즉, 여러 신호를 발신 한 후 가격이 계속 하향으로; 또는, 하위 신호를 발신 한 후 가격이 계속 상승. 이것은 일반적으로 판단의 오류로 인해 반전 신호는 단지 가짜 또는 단기 조정일 뿐이며, 이후 원래의 추세를 계속한다.

해결 방법은 평균선 변수를 조정하여 더 긴 주기의 추세를 식별하는 것; 동시에 적절한 막힘을 확대하여 반전이 실패한 후 적시에 막는 것. 또한, 반전을 확인하기 위해 더 많은 요소를 결합 할 수 있습니다.

최적화

이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.

  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)