
이 전략은 이동 평균, 가격 형태 및 거래량의 조합을 사용하여 시장의 전환점을 식별합니다. 빠른 이동 평균 상에서 느린 이동 평균을 통과하고, 다중의 흡수 형태가 나타나면, 저항 지점을 돌파하고, 거래량이 커지면, 전략은 더 많이 수행합니다. 반대로, 빠른 이동 평균 아래에서 느린 이동 평균을 통과하고, 빈 머리 흡수 형태가 나타나면, 지지대를 넘어 거래량이 커지면, 전략은 공허합니다.
이 전략의 핵심 아이디어는 평행선 시스템, 가격 형태, 양력 세 가지의 조합을 사용하여 잠재적인 반전점을 식별하는 것이다. 구체적으로, 평행선의 황금 교차와 죽음의 교차는 트렌드의 전환을 판단할 수 있다. 다중 헤드 스노프와 빈 헤드 스노프의 두 가지 가격 형태는 일반적으로 단기 반전을 예고한다. 많은 거래량이 유입되는 것은 또한 다가오는 트렌드 반전을 의미한다.
코드 논리적으로 볼 때, 먼저 빠른 이동 평균과 느린 이동 평균을 계산한다. 그리고 다중 헤드 포식과 공수 포식의 판단 조건을 설정한다. 또한 지원 저항 수준과 거래량 확대 조건도 설정한다. 일률적 금 교차, 다중 헤드 포식 형태를 충족하고, 저항 수준과 거래량을 확대하면, 여러 신호를 낸다. 일률적 죽음의 교차, 공수 포식 형태를 충족하고, 지원 수준과 거래량을 확대하면, 평소 위치 신호를 낸다.
이 전략의 가장 큰 장점은 여러 가지 신호의 조합을 사용하여 반전을 식별하는 데 있습니다. 이것은 가짜 신호를 효과적으로 줄일 수 있습니다. 특히, 단일 평균선, 가격 형태 또는 양에만 의존하면 잘못된 거래 신호가 발생할 수 있습니다. 그러나 세 가지 신호가 동시에 나타나면 반전을 예측하는 성공률이 크게 향상됩니다.
또한, 이 전략은 동향과 반향의 두 요소를 동시에 이용한다. 반향 신호가 나타나기 전에 동향이 먼저 존재해야 한다. 즉, 이 전략은 동향 배경에서만 반향 기회를 찾는다. 이것은 또한 무작위성을 줄여 수익률을 높인다.
이 전략의 가장 큰 위험은 반전 실패입니다. 즉, 여러 신호를 발신 한 후 가격이 계속 하향으로; 또는, 하위 신호를 발신 한 후 가격이 계속 상승. 이것은 일반적으로 판단의 오류로 인해 반전 신호는 단지 가짜 또는 단기 조정일 뿐이며, 이후 원래의 추세를 계속한다.
해결 방법은 평균선 변수를 조정하여 더 긴 주기의 추세를 식별하는 것; 동시에 적절한 막힘을 확대하여 반전이 실패한 후 적시에 막는 것. 또한, 반전을 확인하기 위해 더 많은 요소를 결합 할 수 있습니다.
이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.
평균선 변수를 조정하여 더 적합한 길고 짧은 주기를 식별한다.
다양한 지원 저항 비트 알고리즘을 테스트합니다. 예를 들어, 파레토 지원 저항 비트
다른 거래량 지표들을 시도해 보세요. 에너지 흐름 지표, 거래량 흔들림 지표 등등.
더 많은 신호를 추가하여 긴 주기적 가격 형태, 거래량 급격한 증가와 같은 반전을 확인합니다.
주식 지수 선물과 결합하여 시장 간 확인을 하고, 주식 지수 선물을 사용하여 주식의 반전을 확인한다.
이 전략은 다양한 변수 조합을 테스트함으로써 더욱 최적화되어 수익률과 승률을 높일 수 있다.
이 전략은 평행선 시스템, 가격 형태 및 거래량 세 가지 요소를 통합하여 반전을 식별하여 여러 종류의 신호를 효과적으로 결합합니다. 그것은 추세의 배경에서만 반전 기회를 찾고 무작위 거래를 피합니다. 파라미터를 추가적으로 최적화하고 확인 요소를 추가함으로써이 전략은 매우 실용적인 짧은 선 반전 전략이 될 수 있습니다.
/*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)