피셔맨 지표 트레일링 스톱 로스 전략


생성 날짜: 2024-02-02 14:57:33 마지막으로 수정됨: 2024-02-02 14:57:33
복사: 0 클릭수: 394
1
집중하다
1166
수행원

피셔맨 지표 트레일링 스톱 로스 전략

개요

어부 지표 이동 중지 전략은 어부 지표와 이동 중지 메커니즘을 결합한 양적 거래 전략이다. 이 전략은 어부 지표를 사용하여 구매 및 판매 신호를 생성하고, 수익을 고정하기 위해 손실 추적을 설정하여 수익을 보호하면서 더 큰 수익을 얻습니다.

전략 원칙

  1. 날짜 범위를 입력하고, 재측정 또는 실판의 기간을 제한합니다
  2. 어부 지표의 파라미터를 입력, 기본 2주기
  3. 입력 중지 손실 비율, 기본 설정 5% 중지, 2% 중지 손실
  4. 어부 지표의 메인 라인 및 신호 라인을 계산
  5. 메인 라인에서 신호선을 통과할 때 구매 신호를 생성한다
  6. 트래킹 스톱을 설정하고, 긴 포지션에 진입한 후 가격이 2% 떨어지면 스톱
  7. 가격 상승이 5%를 넘으면 멈춰라

우위 분석

  1. ‘어업자 지표’는 트렌드를 쉽게 판단하고, 구매 신호가 정확합니다.
  2. 트래킹 스톱 로즈 메커니즘은 대부분의 수익을 고정시키면서도 설정된 스톱 로스를 초과하지 않도록 합니다.
  3. 사용자 정의 가능한 매개 변수, 다른 시장 환경에 적응
  4. 사용이 쉽고, 이해하기 쉬운 구현

위험 분석

  1. 잘못된 매개 변수 설정으로 인해 과격한 거래가 발생할 수 있으며 신중하게 테스트해야합니다.
  2. 너무 큰 스톱포트는 Outiliers의 영향으로 예상 이상의 손실을 초래할 수 있습니다.
  3. 막점이 너무 작으면 수익이 너무 빨리 절감되어 수익성이 떨어질 수 있습니다.
  4. 다양한 품종에 따라 적절한 매개 변수를 결정해야 합니다.

스톱 스톱 스 비율을 조정하여 다양한 변수 조합을 테스트하여 변수를 최적화 할 수 있습니다. 다른 지표와 결합하여 신호를 필터링하십시오. 포지션 관리 규칙을 설정하여 단독 위험을 제어하십시오.

최적화 방향

  1. 어업인 지표의 매개 변수를 최적화하고, 다른 매개 변수의 전략에 대한 영향을 테스트합니다.
  2. MACD, KD 등과 같은 다른 지표와 함께 필터링 신호를 사용하여 신호 품질을 향상시킵니다.
  3. 부린 띠를 뚫고 궤도에 올리는 것과 같은 포지션 개시 전 조건 판단을 추가합니다.
  4. 포지션 관리 모듈을 추가하여 단일 포지션의 위험을 제어합니다.
  5. 이동식 스톱을 최적화하는 방법, 예를 들어, 이동식 스톱을 평형화하거나, Chandelier Exit

요약하다

어부 지표 이동식 상쇄 전략은 추세 판단과 상쇄 관리를 통합하고, 파라미터 최적화, 지표 조합 및 상쇄 방식의 개선을 통해, 대부분의 품종에 적응할 수 있으며, 견딜 수 있는 상쇄를 방지하는 조건에서 더 나은 수익을 얻을 수 있습니다.

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

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)