롱-숏 채널을 기반으로 한 백테스팅 트레이딩 전략


생성 날짜: 2023-09-20 17:02:40 마지막으로 수정됨: 2023-09-20 17:02:40
복사: 0 클릭수: 688
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 다중공간 통로를 구축하여 통로 돌파형의 시스템 재검토 검증을 수행하고, 트렌드 돌파형 거래 전략에 속한다.

전략 원칙

  1. 특정 주기 내 최고 가격은 다중 헤드 채널을 구축하고, 최저 가격은 빈 헤드 채널을 구축한다.

  2. 가격이 상류 경로를 넘으면 구매한다.

  3. 판매는 통로선 아래로 가격이 넘어갈 때 이루어집니다.

  4. 전략의 검증을 위해 재검토 기간을 설정할 수 있습니다.

  5. 트레이딩은 브레이크 채널을 통해 이루어지며, 전략은 간단하고 명확하다.

우위 분석

  1. 다중공간 통로는 직관적으로 이동 통로를 정의할 수 있다.

  2. 통로선을 뚫고 올라간 후의 추세는 가능성이 높습니다.

  3. 역습은 역사적인 상황에서 전략의 효과를 검증할 수 있다.

  4. 통로를 뚫고 거래하는 방법은 간단하고 간단하다.

  5. 코드는 간결하고 수정 및 최적화가 쉽다.

위험 분석

  1. 이후의 가짜 Bring 리콜 위험.

  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)