백테스트 채널 브레이크아웃 거래 전략

저자:차오장, 날짜: 2023-09-20 17:02:40
태그:

전반적인 설명

이 전략은 긴 채널과 짧은 채널을 구축하고, 채널 브레이크오웃을 체계적으로 백테스팅합니다. 이 전략은 채널 브레이크오웃 트렌드 거래 전략에 속합니다.

전략 논리

  1. 한 기간 동안 가장 높은 가격을 가진 긴 채널과 가장 낮은 가격을 가진 짧은 채널을 구축합니다.

  2. 가격이 상위 채널 라인을 넘어서면 구매합니다.

  3. 가격이 하위 채널 라인을 넘으면 팔자.

  4. 전략 검증을 위해 백테스트 날짜 범위를 설정할 수 있습니다.

  5. 단순하고 명확한 규칙 거래 채널의 탈출

장점

  1. 채널은 시각적으로 가격 범위를 정의합니다.

  2. 파업 후 상승 동력이 발생할 가능성이 높습니다.

  3. 백테스팅은 역사적으로 전략의 효과를 확인합니다.

  4. 채널 브레이크 콘셉트는 간단하고 직관적입니다.

  5. 간결한 코드, 수정하고 최적화하기 쉬운 코드

위험성

  1. 첫 번째 탈출 후 가짜 탈출 및 철회 위험이 있습니다.

  2. 정지 및 출구를 설정하는 효과적인 방법이 없습니다.

  3. 잘못된 채널 매개 변수는 성능에 부정적인 영향을 미칩니다.

  4. 백테스트 결과에는 미래 조차가 있을 수 있습니다.

  5. 실제 거래 성과는 백테스트와 크게 다를 수 있습니다.

강화

  1. 최적의 조합을 찾기 위한 테스트 매개 변수

  2. 거짓 피난을 필터링하기 위해 다른 요소를 추가합니다.

  3. 스톱 로스 및 수익 메커니즘을 구축합니다.

  4. 배트테스트 데이터를 적절하게 처리해서 편견을 제거합니다.

  5. 백테스트를 통해 다양한 시장 조건에서 전략을 확인합니다.

  6. 종이 거래는 실시간 거래의 매개 변수를 구성합니다.

결론

이 전략은 간편한 채널 브레이크아웃 규칙을 테스트하고, 조작이 쉽지만 안정성을 위해 정교화를 요구합니다. 매개 변수 조정 및 위험 통제와 같은 추가 개선은 신뢰할 수있는 브레이크아웃 시스템을 만들 수 있습니다.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-08-30 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title = "Backtest Donchian Teixeira", default_qty_type = strategy.fixed, default_qty_value = 100, overlay = true, commission_type = strategy.commission.cash_per_order, commission_value = 2.50, precision = 2, calc_on_every_tick = true, pyramiding = 0, initial_capital = 10000)

testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00)

testEndYear = input(2018, "Backtest End Year")
testEndMonth = input(12, "Backtest End Month")
testEndDay = input(1, "Backtest End Day")
testPeriodEnd = timestamp(testStartYear, testStartMonth, testStartDay, 23, 59)

window()  => true //nao funciona

length1 = input(20, minval=1, title="Upper Channel")
length2 = input(20, minval=1, title="Lower Channel")

dcUpper = highest(length1)
dcLower = lowest(length2)

plot(dcLower, style=line, linewidth=1, color=red, offset=1)
plot(dcUpper, style=line, linewidth=1, color=lime, offset=1)
plot(dcLower, style=line, linewidth=1, color=gray)

if (strategy.position_size == 0)
    strategy.entry("COMPRA", true, stop = dcUpper)
    
if (strategy.position_size > 0)
    strategy.exit("VENDA", stop = dcLower)

더 많은