중복된 가격 차이에 기초한 역 거래 전략

저자:차오장, 날짜: 2023-12-15 15:47:23
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 상쇄된 가격 차이를 사용하여 시장 추세를 판단하는 것입니다. 차이는 음에서 양으로 역전되면 길게 갈 것이고, 차이는 양에서 음으로 역전되면 짧게 갈 것입니다. 그것은 역전 거래 전략에 속합니다.

원칙

이 전략은 먼저 겹치는 가격 차이 (Close-Close[1]) 를 계산하고, 이는 오늘의 닫기 가격 빼기 어제의 닫기 가격이며, 이후 지난 30일 동안의 차이점의 합을 계산합니다. 합이 음에서 양으로 역전될 때 긴 신호를 생성하고, 합이 양에서 음으로 역전될 때 짧은 신호를 생성합니다. 이것은 전형적인 역전 거래 전략입니다.

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

  1. ff: 지난 30일 동안의 가격 차이의 총액
  2. dd1: 15일 가중화 이동 평균 ff
  3. dd2: ff의 30일 가중화 이동 평균

이 신호는 ff가 음에서 양으로 변할 때, 즉 0보다 작고 0보다 크며 dd1도 음에서 양으로 변할 때 긴 신호를 생성합니다.

이 신호는 ff가 양에서 음으로 변할 때 짧은 신호를 생성합니다. 즉 0보다 크거나 0보다 작고 dd1도 양에서 음으로 변합니다.

긴 또는 짧은 후에, 수익을 취하고 손실을 멈추는 라인이 설정됩니다.

장점

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

  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)


더 많은