높은-저하점 이동평균에 기초한 양적 거래 전략

저자:차오장, 날짜: 2023-09-19 15:53:55
태그:

전반적인 설명

이 전략은 현재 폐쇄 가격에 비해 높은 점과 낮은 점의 간단한 이동 평균을 사용하여 입점과 출구를 결정합니다. 초기 트렌드 기회를 얻기 위해 이동 평균 크로스오버에서 가격 브레이크오브 신호를 캡처하는 것을 목표로합니다.

전략 논리

  1. 높은 가격의 4개 기간 간단한 이동 평균을 계산합니다.

  2. 낮은 가격의 4개 기간 간단한 이동 평균을 계산합니다.

  3. 마감값이 높은 SMA를 넘을 때 장가가 됩니다.

  4. 마감 가격이 SMA 밑으로 떨어지면 쇼트가 됩니다.

  5. 일정한 스톱 로스를 사용하고 리스크 관리로 수익을 취합니다.

이점 분석

  1. 간단한 지표를 사용하고, 이해하기 쉽고 실행하기 쉽습니다.

  2. 적시에 SMA 크로스오버에서 가격 브레이크 신호를 캡처합니다.

  3. 소음을 빠르게 필터링하고 트렌드를 식별할 수 있습니다.

  4. 가벼운 계산으로 전략 비용을 줄일 수 있습니다.

  5. 확장의 기본 전략으로 적합합니다.

위험 분석

  1. 과민을 피하기 위해 합리적인 매개 변수가 필요합니다.

  2. 엄청난 탈출으로 인한 위험을 감당할 수 없습니다.

  3. 빗자루 손실의 가능성은 범위에서

  4. 정지 및 제한을 자동으로 조정할 수 없습니다.

  5. 장기적인 추세 맥락을 판단하기 어렵습니다.

최적화 방향

  1. 신호 품질에 영향을 미치는 다른 매개 변수를 테스트합니다.

  2. 필터를 추가해 탈출의 효과를 확인해

  3. 함정 을 피하기 위해 경향 분석 을 포함 하십시오.

  4. 역동적인 정지 및 제한을 개발합니다.

  5. 승률을 높이기 위해 스톱을 최적화합니다.

  6. 다른 시간 프레임에 걸쳐 견고성을 테스트합니다.

요약

이 전략은 가격 모멘텀을 측정하기 위해 간단한 지표를 사용하며 기본 트렌드 거래 프레임워크를 제공합니다. 매개 변수 최적화 및 위험 통제와 같은 추가 개선으로 거래 논리는 강력한 양자 시스템으로 확장 할 수 있습니다. 전반적으로 양자 거래를 시작하는 초보자에게 적합한 사용하기 쉬운 전략입니다.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HiLo", overlay=true)

// Testing a specific period
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


//HiLo Strategy
length = input(4, minval=0)
displace = input(0, minval=0)
highsma = sma(high, length)
lowsma = sma(low, length)

longCondition = close > highsma[displace]
if (longCondition)
    strategy.entry("long", true)

shortCondition = close < lowsma[displace]
if (shortCondition)
    strategy.entry("short", false)

// Exit seems with a problem. it keeps saying the order's limit (2000) was reached even if I back test it just for a day. 
// If the two lines bellow are commented, then it it works. Anyone? Any idea what's wrong?

// strategy.exit("exit", "long", profit=10, loss=5)
// strategy.exit("exit", "short", profit=10, loss=5)






    

더 많은