이중 이동 평균 추진력 압축 전략

저자:차오장, 날짜: 2023-12-25 17:01:28
태그:

img

전반적인 설명

이 전략은 세 가지 다른 기술적 지표를 결합하고 두 개의 이동 평균 시스템을 사용하여 비교적 안정적이고 효과적인 단기 거래 전략을 구축하기 위해 촛불의 색상과 신체에 기반한 추가 필터를 사용하여 거래 신호를 생성합니다.

전략 논리

이 전략은 시장에서 압축 및 확장 단계를 식별하기 위해 볼링거 밴드 및 KC 채널을 조합하여 사용합니다. 구체적으로 볼링거 밴드가 KC 채널 내에있을 때 압축으로 간주됩니다. 볼링거 밴드가 KC 채널을 뚫을 때 확장으로 간주됩니다. 압축은 격화된 변동성과 가능한 트렌드 역전을 나타냅니다. 그리고 선형 회귀는 이 시점에서 주요 거래 신호 지표로 사용됩니다.

선형 회귀 히스토그램이 양수 (상승 추세를 나타내는) 이고 바가 빨간 촛불 (폐소 하위를 나타내는) 이고 동시에 촛불 몸집이 지난 30개의 촛불의 평균 몸집의 1/3보다 크다면, 그러한 조합 신호는 길게 간다. 반대로 선형 회귀 히스토그램이 음수라면, 바는 녹색 촛불이고, 몸집도 크면 짧게 간다.

전략은 또한 시장 단계를 판단하는 데 도움이되는 압축 및 확장 배경의 시각화를 제공합니다.

이점 분석

  • 복수의 표시기를 조합하여 잘못된 신호를 효과적으로 필터할 수 있습니다.
  • 압축은 잠재적인 전환점을 나타내고 전략 성능을 향상시킵니다.
  • 몸 필터는 거짓 파동의 작은 파동에 의해 오해되는 것을 피합니다
  • 매개 변수 최적화를 통해 더 나은 결과를 쉽게 얻을 수 있습니다.

위험 분석

  • 선형 회귀는 쉽게 손실로 이어질 수 있는 잘못된 신호를 발산 할 수 있습니다.
  • 압축을 판단하는 볼링거 밴드와 KC 채널의 효과는 이상적이지 않습니다.
  • 필터링 기준이 너무 엄격해서 더 나은 입구점이 없어질 수도 있습니다.
  • 마감량은 더 커질 수 있고, 어느 정도 허용해야 합니다.

위험은 지표 매개 변수를 조정하고 필터링 기준을 최적화함으로써 줄일 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 최적의 매개 변수를 찾기 위해 다른 매개 변수 조합과 길이를 시도
  2. 최적의 필터링 레벨을 찾기 위해 필터링 조건을 높여 줄이십시오.
  3. 기계 학습 방법을 사용하여 자동으로 최적의 매개 변수를 찾습니다.
  4. 특정 품종에서 테스트 효과와 다른 품종에 따라 매개 변수를 조정
  5. 단일 손실을 제어하기 위해 중지 손실 전략을 추가

결론

이 전략은 여러 지표를 결합하고 압축 기회를 식별하면서 비교적 견고한 효율적인 단기 전략을 형성하기 위해 필터링 조건을 증가시킵니다. 매개 변수 및 필터링 조건 최적화를 통해 더 나은 결과를 얻을 수 있습니다. 또한 전략 프레임워크는 다양한 품종에서 사용하기 위해 유연하고 쉽게 조정되며 추가 테스트 및 최적화를 가치가 있습니다.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2017

//@version=2
strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)

bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray 

trend = val > 0 ? 1 : val < 0 ? -1 : 0

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//EMA Body
body = abs(close - open)
emabody = ema(body, 30) / 3

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false)
dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false)

if up
    strategy.entry("Long", strategy.long)

if dn
    strategy.entry("Short", strategy.short)

더 많은