향상된 변동성 밴드 반전 전략


생성 날짜: 2023-09-21 11:45:37 마지막으로 수정됨: 2023-09-21 11:45:37
복사: 2 클릭수: 653
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 강화형 변동대 지표를 사용하여 가격 반전점을 판단하고, 가격이 변동대 하위 경계에 가까워지면 더 많이 하고, 녹색 K 선이 나타났을 때 평지 중지하여 변동대 아래에 있는 반전 기회를 잡는 것을 목표로 한다.

전략 원칙

  1. 규칙적인 진동대의 변수basis와 dev, 그리고 상한 upperBB와 하한 lowerBB를 계산한다.

  2. SMA 평균선과 SMA의 특정 비율의 오차를 계산하기 위한 상하 궤도upex2와 dnex2。

  3. upperBB,lowerBB와upex2,dnex2의 평균값을 계산하여 curveupex3와dnex3을 생성한다.

  4. upperBB의 큰 값인upex3를 새로운 상궤upex로, lowerBB의 작은 값인 dnex3를 새로운 하궤dnex로 씁니다.

  5. 가격이 dnex보다 낮으면 더 많은 입장을 취하고, K 선이 초록색인 경우 (폐쇄가격이 개시가격보다 높다) 평형상태를 정지한다.

우위 분석

  1. 증강형 변동폭은 원형 변동폭 지표의 감수성을 높여 가격 반전의 기회를 더 일찍 포착할 수 있다.

  2. K선 신호 필터링과 결합하여, 정렬 중에 빈번한 상실을 방지한다.

  3. 2008년에서 2018년 사이에 이 전략은 안정적인 수익률을 보였으며, 최대 회수율이 20% 미만으로 수익 곡선이 평평했다.

  4. 자금 사용률, 거래 시간 등과 같은 파라미터를 구성할 수 있으며, 위험을 통제할 수 있다.

위험 분석

  1. 변동폭 변수 설정이 잘못되면 거래 빈도가 너무 높거나 기회를 놓치게 될 수 있습니다.

  2. 하지만, 이런 현상들은 ‘무엇을 하고 싶은지’를 결정짓는 데에는 큰 영향을 미칩니다.

  3. K선 필터링 신호가 지연되어 출구를 막지 못할 수도 있다.

  4. 10년 만의 데이터로, 샘플 구간을 확장하여 안정성을 검사해야 한다.

  5. 큰 폭으로 뛰어내리거나 틈이 있는 상황에서는 적응할 수 없습니다.

최적화 방향

  1. 다양한 변수 조합을 테스트하고, 변동대 변수를 최적화한다.

  2. 다른 지표 신호와 결합하여 필터링하여 수익 트레이드의 비율을 높인다.

  3. 부채 전략에 참여하고, 가격이 상반도를 초과할 때 부채를 고려한다.

  4. 단편적 손실을 통제하기 위해 중지 조건을 설정하십시오.

  5. 시장 변화에 따라 최적화되는 매개 변수를 자동으로 조정하는 프로그램을 개발한다.

  6. 공중뛰기 및 간격 경기 특성에 맞게 최적화된 입학규칙.

  7. 재검토 시간 범위를 확장하고, 매개 변수 안정성을 검사한다.

요약하다

이 전략은 강화된 파동대를 사용하여 가격 반전점을 판단하고, 파동대를 따라 궤도 근처의 위치에 더 많이 하고, K선 필터링 신호와 함께 빠른 정지, 재검토를 잘 수행한다. 그러나 이 전략은 다방향으로만 수행되며, Optimization 샘플 범위는 제한되어 있으며, 핵심 매개 변수는 추가 최적화가 필요하며, 시장 환경이 변화하면 수익이 떨어질 위험이 있습니다. 다음 단계는 여러 가지 필터 신호를 도입하여 수익 거래 비율을 높이고, 적폐 기회를 증가시키고, 더 긴 회귀 주기를 사용하여 매개 변수 조합을 안정성 테스트하여 전략의 적응성과 안정성을 높이는 것입니다.

전략 소스 코드
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
p = input(20, "bars")
d = input(25, "percent")
showlines = input(true, defval = true, title = "Show Lines?")
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")

mult = input(2.0, minval=0.001, maxval=50)
basis = sma(close, p)
dev = mult * stdev(close, p)
source = close
upperBB = basis + dev
lowerBB = basis - dev
b1 = plot(basis, color=gray, linewidth=1)
p1 = plot(upperBB, color=aqua,  linewidth=1)
p2 = plot(lowerBB, color=aqua, linewidth=1)

//SMAs
sma = sma(close, p)
upex2 = sma * ((100 + d) / 100)
dnex2 = sma * ((100 - d) / 100)

upex3 = (upex2 + upperBB) / 2
dnex3 = (dnex2 + lowerBB) / 2

upex = max(upperBB, upex3)
dnex = min(lowerBB, dnex3)
//exit = (high > sma and low < sma)
exit = close > open


//Lines
col = showlines ? blue : na
plot(upex, linewidth = 3, color = col, transp = 0)
plot(sma, linewidth = 3, color = col, transp = 0)
plot(dnex, linewidth = 3, color = col, transp = 0)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[p]))
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

if exit
    strategy.close_all()