중복 갭을 기반으로 한 역전 거래 전략


생성 날짜: 2023-12-15 15:47:23 마지막으로 수정됨: 2023-12-15 15:47:23
복사: 0 클릭수: 586
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

중복 갭을 기반으로 한 역전 거래 전략

개요

이 전략의 주요 아이디어는 가격의 중복 차원을 사용하여 시장의 추세를 판단하는 것입니다. 차원이 마이너스에서 긍정으로 돌아가는 경우 더 많이하고, 긍정에서 마이너스으로 돌아가는 경우 공백을 할 때 역전 거래 전략에 속합니다.

원칙

이 전략은 우선 가격의 겹치는 차이를 계산합니다.[1]), 즉, 오늘의 종전 가격을 어제의 종전 가격에서 빼고, 최근 30일간의 차이의 총합을 계산한다. 총합이 마이너스에서 긍정으로 역전되면 다중 신호가 발생하며, 총합이 긍정에서 부정으로 역전되면 하위 신호가 발생하며, 전형적인 역전 거래 전략에 속한다.

특히, 전략은 세 가지 지표를 유지합니다.

  1. ff: 최근 30일간의 차이의 합계
  2. dd1: ff의 15일 가중 이동 평균
  3. dd2: ff의 30일 가중 이동 평균

ff가 음수에서 양수로 역전되면, 즉 0보다 작은 것이 0보다 커지고, dd1도 음수에서 양수로 역전되면, 다중 신호가 발생한다.

ff가 양수에서 음수로 역전되면, 즉 0보다 큰 것이 0보다 작아지고, dd1도 양수에서 음수로 역전되면, 공백 신호가 발생한다.

더 많은 공백을 다면, Stop Loss Lines를 설정한다.

장점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이 아이디어는 명확하고, 이해하기 쉽고, 실현하기 쉽다.
  2. 가격 역전 특성을 활용하여 시장 전환점에서 더 나은 진입 시간을 얻을 수 있다.
  3. 이중 확인 메커니즘과 함께, 가짜 침입을 필터링 할 수 있습니다.
  4. 사용자 정의 가능한 매개 변수, 다른 시장 환경에 적응

위험

이 전략에는 몇 가지 위험도 있습니다.

  1. 반전 실패의 확률이 높고, 간격적인 흔들림 시장에서 손해가 쉽게 멈춘다.
  2. 잘못된 매개 변수 설정은 거래 빈도를 높이고 거래 비용을 증가시킬 수 있습니다.
  3. 다른 지표와 결합하여 필터링 입장이 필요하며, 상위와 하위 접점을 피한다.

대응방법은 다음과 같습니다.

  1. 단편적 손실을 통제하기 위해 합리적인 스톱 손실 비율을 설정하십시오.
  2. 최적화 변수, 최적의 변수 조합을 찾습니다.
  3. 필터링을 추가하여 불필요한 입학을 방지하십시오.

최적화 방향

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

  1. 거래량을 증가시키는 필터, 예를 들어 돌파할 때 거래량을 증가시키는 것.
  2. 트렌드 지표 필터링과 함께 역동적인 동작을 피하십시오.
  3. 동적으로 변수를 조정하여 시장 상태에 따라 변수가 달라질 수 있습니다.
  4. 가격 이동에 따라 중단하는 것과 같은 손실을 막는 메커니즘을 최적화하십시오.

요약하다

이 전략은 가격 차이의 반전을 계산하여 시장의 전환점을 판단하는 전형적인 반전 거래 전략이다. 전략 아이디어는 명확하고, 실행하기 쉽고, 약간의 실용적 가치가 있다. 그러나 시장의 변화에 적응하기 위해 추가적인 최적화가 필요한 몇 가지 위험도 있다. 전체적으로 이 전략은 양적 거래에 대한 기본 프레임워크를 제공하며, 이를 기반으로 확장할 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Fst",currency="USD",initial_capital=100000)

//Length0 = input(30, title="fastperiod", minval=1)
Length = input(30, title="SUMM")
Length1 = input(15, title="Signalperiod", minval=1)
Length2= input(30, title="Info", minval=1)
profit=input(95, title="profit", minval=1)
loss=input(95, title="loss", minval=1)
//f=iff(close>open,close-open,iff(close>open[1],close[1]-open[1],0))
f=0.0
dd1=0.0
dd2=0.0
ff=0.0
ff0=0.0
f:=close-close[1]
ff:=sum(f,Length)
//ff0:=sum(f,Length0)
dd1:=wma(ff,Length1)
dd2:=wma(ff,Length2)

bull=ff<0 and dd1<0 and ff[1]<dd1 and ff>dd1 and abs(ff)>20
bear=ff>0 and dd1>0 and ff[1]>dd1 and ff<dd1 and abs(ff)>20
if(bull)
    
    strategy.entry("long", strategy.long)
strategy.exit("exit", "long", profit = close*profit/1000, loss=close*loss/1000) 

strategy.close("long", when = bear)




plotchar(bull,size=size.small,location=location.bottom)
plot(ff,color=black,linewidth=2)
plot(ff0,color=green,linewidth=2)
plot(wma(ff,Length1),color=red,linewidth=2)
plot(wma(ff,Length2),color=blue,linewidth=2)
plot(wma(ff,Length1)-wma(ff,Length2),color=green,style=columns)

plot(0,linewidth=1,color=black)
plot(500,linewidth=1,color=red)
plot(-500,linewidth=1,color=red)