이 전략은 이동평균을 사용하여 거래 신호를 생성하고 고정 비율의 스톱 로스를 설정하고 각 거래의 위험과 수익을 제어하기 위해 입시 가격에 따라 수익 수준을 취합니다.
이 전략은 우선 5일 지수 이동 평균 (EMA) 과 32일 EMA를 사용하여 트렌드 방향을 결정합니다. 단기 이동 평균이 장기 평균을 넘어서서 크로스 아웃에서 짧을 때 길게됩니다.
트레이드에 진입한 후, 전략은 사용자가 정의한 스톱 로스 비율과 영업률을 기반으로 각 트레이드에 대해 동적으로 스톱 로스를 설정하고 수익을 취합니다. 구체적으로, 긴 트레이드에서는 스톱 로스를 엔트리 가격 × (1 - 스톱 로스 비율) 에 설정하고 영업률을 엔트리 가격 × (1 + 영업률) 에 설정합니다. 쇼트 트레이드에서는 역전됩니다 - 엔트리 가격 × (1 + 스톱 로스 비율) 에 스톱 로스를 설정하고 엔트리 가격 × (1 - 영업률) 에 영업률을 취합니다.
이것은 각 거래에 대한 고정된 위험/이익 비율을 보장하고 위험과 수익을 제어 할 수 있습니다.
이 방식은 Stop Loss와 Take Profit를 설정하는 데 몇 가지 중요한 장점이 있습니다.
거래당 최대 손실을 제한하고 거래 위험을 효과적으로 제어할 수 있습니다.
거래당 고정된 수익률을 확보하고 수익을 보장합니다.
스톱 로스 및 취득 포인트는 고정 값을 사용하는 대신 실제 입시 가격에 따라 달라집니다.
사용자는 입력 매개 변수를 조정하여 자신의 위험 욕구를 결정할 수 있습니다.
간단하고 직관적인 전략 논리, 이해하기 쉽고 확인하기 쉽습니다.
이 전략에는 몇 가지 위험도 있습니다.
이동 평균은 과도한 유효하지 않은 신호를 생성할 수 있으며, 진입 후 중단될 가능성이 높습니다.
수익률을 너무 높게 설정하면 수익성이 떨어질 수도 있고 너무 낮으면 충분히 수익을 얻지 못할 수도 있습니다.
너무 가까운 스톱 로스는 스톱 아웃 될 확률을 높일 수 있고 약간의 버퍼를 제공해야 합니다.
거래 상품과 시간 틀의 선택이 효과에 영향을 줄 수 있습니다.
대응 솔루션:
거짓 신호를 줄이기 위해 이동 평균 매개 변수를 최적화합니다.
다른 수익률을 테스트해서 최적을 찾습니다.
시장의 변동성에 따라 스톱 로스 거리를 조정합니다.
다양한 제품과 시간 프레임에 걸쳐 전략 성과를 평가합니다.
이 전략은 다음과 같은 측면에서 개선될 수 있습니다.
트렌드 검증을 위한 다른 지표를 추가하여 이동 평균에서 과도한 잘못된 신호를 피합니다.
스톱 로스를 최적화하고 역 테스트 데이터를 기반으로 수익 비율을 취해서 최적의 매개 변수를 찾습니다.
더 많은 수익을 확보하기 위해 Stop Loss를 Trailing Stop로 변경합니다.
거래 위험을 관리하기 위해 피라미딩과 스톱 로스를 가진 포지션 사이즈 규칙을 추가합니다.
각기 다른 거래 도구와 시간 프레임에 따른 성과 변이를 평가합니다.
이 전략은 이동 평균과 함께 트렌드 방향을 식별하고, 단일 거래 위험과 보상을 제어하기 위해 엔트리 가격에 따라 고정 비율의 스톱 로스를 설정하고 이익을 취합니다. 이 전략의 장점은 손실을 효과적으로 제한하고, 단순하고 직설적인 논리로 수익 비율을 보장하는 것입니다. 스톱 로스 / 스톱 로프 매개 변수, 거래 제품 및 시간 프레임 선택 및 전략을 더 이상 최적화하는 다양한 방법을 적절히 구성해야합니다.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © theCrypster 2020 //@version=4 strategy("Fixed Percent Stop Loss & Take Profit %", overlay=true) // Moving Averages to get some example trades generated eg1 = ema(close, 5) eg2 = ema(close, 32) long = crossover(eg1, eg2) short = crossunder(eg1, eg2) strategy.entry("LONG", strategy.long, when=long) strategy.entry("SHORT", strategy.short, when=short) // // The Fixed Percent Stop Loss Code // User Options to Change Inputs (%) stopPer = input(5.0, title='Stop Loss %', type=input.float) / 100 takePer = input(10.0, title='Take Profit %', type=input.float) / 100 // Determine where you've entered and in what direction longStop = strategy.position_avg_price * (1 - stopPer) shortStop = strategy.position_avg_price * (1 + stopPer) shortTake = strategy.position_avg_price * (1 - takePer) longTake = strategy.position_avg_price * (1 + takePer) if strategy.position_size > 0 strategy.exit(id="Close Long", stop=longStop, limit=longTake) if strategy.position_size < 0 strategy.exit(id="Close Short", stop=shortStop, limit=shortTake) //PLOT FIXED SLTP LINE plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL") plot(strategy.position_size < 0 ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL") plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit") plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit") //