TD 순차적 돌파 및 되돌림을 기반으로 한 매수 및 매도 포인트 전략


생성 날짜: 2024-04-01 11:23:26 마지막으로 수정됨: 2024-04-01 11:23:26
복사: 3 클릭수: 755
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

TD 순차적 돌파 및 되돌림을 기반으로 한 매수 및 매도 포인트 전략

개요

이 전략은 TD 계열에 기반한 돌파구 및 회수 시상점 전략이다. 그것은 TD 계열의 8 번째 및 9 번째 K 선을 식별하여 잠재적인 트렌드 회전점을 결정한다. 동시에, 이 전략은 TD 계열의 돌파구 이후의 회수를 고려하여 입점의 정확성을 향상시킨다. 또한, 이 전략은 이동 평균을 트렌드 판단의 보조 도구로 사용합니다.

전략 원칙

  1. 계산 TD 연속: 4개의 K선 전의 종결 가격과 현재 종결 가격을 비교하여 8개 또는 9개 연속으로 상승 (상승) 하는 K선 (K선) 이 있는지 판단한다.
  2. 매수점을 결정한다: 8개 또는 9개 연속으로 상승 (상승) 하는 K선 (K line) 이 있을 때, 8개 또는 9개 K선 (K line) 에서 잠재적인 매수점을 표시한다.
  3. 회수 고려: TD 시리즈의 돌파 후에 가격이 회수되는지 관찰한다. K선 13, 14, 15, 또는 16에 돌파 상태가 여전히 유지된다면, 돌파가 유효하다고 간주되며, 그렇지 않으면 유효하지 않은 돌파가 간주된다.
  4. 트렌드 판단: 10일 및 20일 이동 평균의 관계를 사용하여 현재 트렌드 방향을 판단하여 구매 결정에 대한 참고 자료로 사용한다.

전략적 이점

  1. 잠재적인 트렌드 반전 지점을 효과적으로 식별할 수 있으며, 특히 강세를 보인 트렌드에서 TD 서열이 뚫린 후 철수 입구 지점은 종종 더 나은 위험-수익 비율을 얻을 수 있습니다.
  2. TD 시퀀스 뚫린 후의 철수 상황을 고려함으로써, 일부 가짜 신호를 효과적으로 필터링하여 입구 지점의 정확도를 향상시킬 수 있다.
  3. 이동 평균의 사용은 현재의 트렌드 방향을 판단하는데 도움이 되고, 전략이 시세운동에 더 효과적일 수 있다.

전략적 위험

  1. 불안정한 시장에서 TD 시퀀스는 더 많은 가짜 신호를 발생시킬 수 있으며, 이로 인해 거래가 빈번해지고 자금이 손실될 수 있다.
  2. 이 전략은 파라미터의 선택에 민감하며, 다른 시장 환경에는 파라미터에 대한 최적화와 조정이 필요할 수 있다.
  3. 전략은 명확한 중지 장치가 없으며, 시장의 급격한 변동이 있을 때 더 큰 철수 위험을 감수할 수 있습니다.

전략 최적화 방향

  1. 신호의 신뢰성과 필터링 효과를 높이기 위해 RSI, MACD 등과 같은 더 많은 기술 지표를 도입하십시오.
  2. TD 계열이 뚫린 후의 철수 상황에 대해 ATR와 같은 지표를 사용하여 철수를 동적으로 조정하는 용인도를 도입하는 것과 같은 더 유연한 판단 기준을 도입하는 것이 고려 될 수 있습니다.
  3. 트렌드 판단에 있어서는, 더 포괄적인 트렌드 판단을 얻기 위해, 단기, 중기, 장기 이동 평균의 관계와 같은 더 많은 시간 주기 조합을 사용할 수 있습니다.
  4. ATR 기반의 동적 중지와 같은 명확한 중지 메커니즘을 도입하여 단일 거래의 최대 손실을 제어합니다.

요약하다

이 전략은 TD 시퀀스와 이동 평균을 결합하여 잠재적인 트렌드 반전 지점을 효과적으로 식별하고, 회수 상황을 고려하여 진입 지점의 정확도를 향상시킬 수 있습니다. 전략에는 약간의 위험과 한계가 있지만, 더 많은 기술 지표, 트렌드 판단 방법을 최적화하고, 명확한 스톱저스 메커니즘을 설정하는 등의 최적화 조치를 도입함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-03-26 00:00:00
end: 2024-03-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Dipak Shankarrao Chavhan", shorttitle="Dipak Chavhan", overlay=true, pyramiding=0, default_qty_value=10)
Numbers = input(true)
SR = input(true)

var int TD = 0
var int TS = 0
var int TDUp = 0
var int TDDn = 0

TD := close > close[4] ? TD[1] + 1 : 0
TS := close < close[4] ? TS[1] + 1 : 0
TDUp := TD - valuewhen(TD < TD[1], TD, 1)
TDDn := TS - valuewhen(TS < TS[1], TS, 1)

plotshape(Numbers ? (TDUp == 8 ? true : na) : na, style=shape.triangleup, text="8", color=color.new(color.green, 0), location=location.belowbar)
plotshape(Numbers ? (TDUp == 9 ? true : na) : na, style=shape.triangleup, text="9", color=color.new(color.green, 0), location=location.belowbar)
plotshape(Numbers ? (TDDn == 8 ? true : na) : na, style=shape.triangledown, text="8", color=color.new(color.red, 0), location=location.abovebar)
plotshape(Numbers ? (TDDn == 9 ? true : na) : na, style=shape.triangledown, text="9", color=color.new(color.red, 0), location=location.abovebar)

priceflip = barssince(close < close[4])
sellsetup = close > close[4] and priceflip
sell = sellsetup and barssince(priceflip != 9)
sellovershoot = sellsetup and barssince(priceflip != 13)
sellovershoot1 = sellsetup and barssince(priceflip != 14)
sellovershoot2 = sellsetup and barssince(priceflip != 15)
sellovershoot3 = sellsetup and barssince(priceflip != 16)
priceflip1 = barssince(close > close[4])
buysetup = close < close[4] and priceflip1
buy = buysetup and barssince(priceflip1 != 9)
buyovershoot = buysetup and barssince(priceflip1 != 13)
buyovershoot1 = buysetup and barssince(priceflip1 != 14)
buyovershoot2 = buysetup and barssince(priceflip1 != 15)
buyovershoot3 = buysetup and barssince(priceflip1 != 16)
TDbuyh = valuewhen(buy, high, 0)
TDbuyl = valuewhen(buy, low, 0)
TDsellh = valuewhen(sell, high, 0)
TDselll = valuewhen(sell, low, 0)
plot(SR ? (TDbuyh ? TDbuyl : na) : na, style=plot.style_circles, linewidth=2, color=color.red)
plot(SR ? (TDselll ? TDsellh : na) : na, style=plot.style_circles, linewidth=2, color=color.lime)

sma1 = sma(close, 10)
sma2 = sma(close, 20)



if TDbuyh
    strategy.entry("Enter Long", strategy.long)
else if TDselll
    strategy.entry("Enter Short", strategy.short)