확률적 Fisher 변환은 일시적으로 STOCH 지표 양적 전략 역전을 멈춥니다.


생성 날짜: 2024-01-02 11:14:12 마지막으로 수정됨: 2024-01-02 11:14:12
복사: 0 클릭수: 656
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

확률적 Fisher 변환은 일시적으로 STOCH 지표 양적 전략 역전을 멈춥니다.

개요

이 전략의 핵심 아이디어는 무작위적인 피셔 변환과 임시 중단 반전 STOCH 지표를 결합하여 매매 결정을 내리는 것이다. 이 전략은 중장기적인 운영에 적합하며 평형상황에서 좋은 수익을 얻을 수 있다.

전략 원칙

이 전략은 먼저 표준 STOCH 지표를 계산한 후 INVLine로 Fisher 변환을 한다. INVLine 상의 하위 마이너스 라인 dl을 통과하면 구매 신호가 발생하고, INVLine 상의 하위 마이너스 라인 ul을 통과하면 판매 신호가 발생한다. 이 전략은 또한 수익을 고정하고 손실을 줄이기 위해 추적 중지 장치를 설정한다.

특히, 이 전략의 핵심 논리는 다음과 같습니다.

  1. STOCH 지수를 계산합니다: 표준 공식을 사용하여 주식의 빠른 STOCH 값을 계산합니다.
  2. 피셔 변환: STOCH 값을 피셔 변환하여 INVLine을 얻는다.
  3. 거래 신호를 생성합니다: INVLine 상의 dl 라인을 통과할 때 구매, 아래의 ul 라인을 통과할 때 판매
  4. 추적 손실: 적시에 손실을 막기 위해 일시적으로 추적을 중지하는 메커니즘을 활성화합니다.

우위 분석

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

  1. 피셔 변환은 STOCH 지표의 감수성을 높여서 트렌드 반전의 기회를 더 일찍 발견할 수 있게 해줍니다.
  2. 추적을 중단하는 것은 위험을 효과적으로 통제하고 수익을 잠금하는 데 도움이 됩니다.
  3. 중·단기 운영에 적합하며, 특히 최근 인기를 끌고 있는 빠른 양적 거래
  4. 평형상황에서 좋은 성과, 안정적인 수익

위험 분석

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

  1. STOCH 지표는 잘못된 신호를 발생시키며 불필요한 거래로 이어질 수 있습니다.
  2. 피셔 변환은 또한 STOCH 지표의 소음을 증가시키고 더 많은 가짜 신호를 가져옵니다.
  3. 위기 상황에서는 쉽게 손실을 감수하고, 계속 수익을 낼 수 없습니다.
  4. 알파를 얻기 위해 짧은 기간의 보유 기간이 필요하며, 너무 오랫동안 보유하는 것은 적합하지 않습니다.

이러한 위험을 줄이기 위해 다음과 같은 몇 가지 측면을 최적화할 수 있습니다.

  1. STOCH 파라미터를 조정, 곡선을 부드럽게, 소음을 줄여
  2. 미지수 경계의 위치를 최적화하여 잘못된 거래의 가능성을 낮추는 것
  3. 필터링 조건을 추가하여 불안정한 상황에서 거래하는 것을 피하십시오.
  4. 운영주기와 일치하는 포지션 보유 기간을 조정합니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. INVLine 곡선을 평평하게 하는 Fisher 변환의 변수를 최적화
  2. STOCH 지표의 길이를 최적화하여 최적의 변수 조합을 찾습니다.
  3. 미지수값의 변수를 최적화하여 잘못된 거래의 확률을 감소시킵니다.
  4. 부적절한 추적 손실을 방지하기 위해 수량 확인을 늘리십시오.
  5. 일일 파격 필터를 늘리고, 흔들리는 시장의 가짜 신호를 줄여라
  6. 트렌드 지표와 결합하여 역전 거래를 피하십시오.

요약하다

이 전략은 무작위적인 피셔 변환과 STOCH 지표를 통합하여 간단한 실용적인 짧은 선의 양화 전략을 구현한다. 이 전략의 장점은 최근 비교적 인기있는 고주파수 양화 거래에 적합한 높은 동작 주파수이다. 동시에, 이 전략에는 일반적인 기술 지표 전략 위험이 있으며, 매개 변수와 필터링 조건을 최적화하여 위험을 줄이고 안정성을 높여야 한다.

전략 소스 코드
/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("IFT Stochastic + Trailing Stop", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//INPUTS
stochlength=input(19, "STOCH Length")
wmalength=input(4, title="Smooth")
ul = input(0.64,step=0.01, title="UP line")
dl = input(-0.62,step=0.01, title="DOWN line")
uts = input(true, title="Use trailing stop")
tsi = input(title="trailing stop actiation pips",defval=245)                                                                       
tso = input(title="trailing stop offset pips",defval=20)

//CALCULATIONS
v1=0.1*(stoch(close, high, low, stochlength)-50)
v2=wma(v1, wmalength)
INVLine=(exp(2*v2)-1)/(exp(2*v2)+1)

//CONDITIONS
sell = crossunder(INVLine,ul)? 1 : 0
buy = crossover(INVLine,dl)? 1 : 0

//PLOTS
plot(INVLine, color=aqua, linewidth=1, title="STOCH")
hline(ul, color=red)
hline(dl, color=green)
bgcolor(sell==1? red : na, transp=30, title = "sell signal")
bgcolor(buy==1? lime : na, transp=30, title = "buy signal")
plotchar(buy==1, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(sell==1, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)

//STRATEGY
strategy.entry("BUY", strategy.long, when = buy==1)
strategy.entry("SELL", strategy.short, when = sell==1)

if  (uts)
    strategy.entry("BUY", strategy.long, when = buy)
    strategy.entry("SELL", strategy.short, when = sell)
    strategy.exit("Close BUY with TS","BUY", trail_points = tsi, trail_offset = tso)
    strategy.exit("Close SELL with TS","SELL", trail_points = tsi, trail_offset = tso)