동적 손절매 및 상승 전략


생성 날짜: 2023-11-21 15:22:44 마지막으로 수정됨: 2023-11-21 15:22:44
복사: 0 클릭수: 646
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

동적 손절매 및 상승 전략

개요

동적 중단 추적 전략은 주식의 평균 실제 변동 범위 ATR을 기준으로 계산하여 사용자 설정 ATR 계수 동적으로 중지 라인 및 추적 라인을 설정하여 중지 추적의 목적을 달성합니다. 주식 가격이 추적 라인을 돌파 할 때, 전통적인 트렌드 추적 전략을 사용하여 다단계 입장을 구축합니다. 주식 가격이 중지 라인을 넘어서는 경우, 역전 전략을 사용하여 빈 상위 입장을 구축하고, 양방향 거래를 사용하여 이익을 얻습니다.

전략 원칙

이 전략은 주로 ATR 기술 지표의 평균 실제 변동 범위를 계산하고, 사용자 입력된 ATR 계수를 주식의 브레이크 구매 및 스톱 판매의 기초로 사용합니다. 구체적으로, 전략은 먼저 주식의 지난 120 일 ATR 값을 계산하고, 사용자 설정한 판매 ATR 계수를 곱하면 스톱 판매 참조 가격, 즉 스톱 손실 라인을 얻습니다. 구매 ATR 계수를 곱하면 구매 참조 가격, 즉 추적 라인을 얻습니다.

이 전략은 동시에 중단 선과 추적 선을 그리는데, 이 두 선의 위치는 주가 변동에 따라 변한다. ATR 지표는 주식의 평균 실제 변동 정도를 더 잘 반영할 수 있다. ATR 지표를 사용하여 중지 추적 선을 설정하면 주식의 큰 변동으로 인한 손실을 어느 정도 피할 수 있다.

우위 분석

  • ATR 지표를 사용하여 주가 변동의 범위를 계산하고, 상쇄 손실 추적 라인 위치가 합리적입니다.
  • 스톱라인과 추적선에서 트렌드를 추적할 수 있습니다.
  • “이런 일이 벌어진다면, 우리는 더 큰 이익을 얻을 수 있을 것입니다”.
  • 높은 변동성을 가진 주식에 적용하여 ATR 지표를 통해 위험을 제어한다.

위험 분석

  • ATR 지표는 급격한 사건에 대한 반응이 부족하여 위험을 완전히 피할 수 없습니다.
  • ATR 경계를 넘어서야 한다는 판단에 근거한 후속구매, 상쇄매매, 과잉거래가 발생할 수 있는 맹목적 사고가 있다.
  • 사용자가 입력한 ATR 계수의 합리성은 전략 효과에 직접적으로 영향을 미치며, 잘못 설정하면 손실이 발생할 수 있습니다.
  • 주식의 변동이 줄어들면, 상쇄상황이 자주 발생하고, 과도한 거래비용이 증가한다.

최적화 방향

  • 다른 지표와 함께 구매 시점을 판단하여 맹목적 추적을 피하십시오.
  • 포지션 비율과 추가 포지션 규칙을 설정하고 위험을 통제합니다.
  • 거래량이나 변동성 필터를 추가하여 과도한 거래를 피하십시오.
  • ATR 변수를 동적으로 조정하여 손해 방지 추적 효과를 최적화한다.

요약하다

이 전략은 전반적으로 전형적인 중지 추적 전략으로, 핵심 아이디어는 ATR 지표에 기반하여 중지 라인 및 추적 라인을 설정하여 트렌드를 추적한다. 이 전략의 장점은 양방향 거래가 가능하며, 포지션을 유연하게 유지한다. ATR 지표를 사용하여 위험을 제어하고, 높은 변동성있는 주식에 적합하다. 그러나 구매 및 판매 규칙이 단순하기 때문에, 특정 맹목적 추적 위험이 존재한다.

전략 소스 코드
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © phobo3s

//@version=4
strategy("ATR Stop Buy Strategy",shorttitle="ATR-ST",initial_capital=1000, overlay = true, default_qty_type = strategy.percent_of_equity, pyramiding = 5, default_qty_value = 20, commission_type = strategy.commission.cash_per_order, commission_value = 1, calc_on_every_tick = true)

daysBack = input(defval=120, title="Days Back", type=input.integer)
sellCoeff = input(defval=1.5, title="Selling Coefficent For ATR", type=input.float, minval= 0.01, step=0.1)
buyCoeff = input(defval=1.2, title = "Buying Coefficent For ATR", type=input.float, minval= 0.01, step=0.1)

fromDate = timenow - (daysBack*24*60*60*1000)
toDate = timenow 

ATR = atr(14)
stopLossPoint = ATR * sellCoeff
buyPoint = ATR * buyCoeff

StoplossLine =  close[1] - stopLossPoint[1]
BuyLine = close[1] + buyPoint[1]

if (high > BuyLine and time >= fromDate and time <= toDate )
    strategy.entry("GG", strategy.long, comment="Gir")
if (low < StoplossLine and strategy.position_avg_price < close and time >= fromDate and time <= toDate )
    strategy.entry("GG", strategy.short, comment="Çık")

//longFlags = close < StoplossLine
//shortFlags = close > BuyLine
//plotshape(shortFlags, style=shape.triangledown, location=location.abovebar, color=color.red)
//plotshape(longFlags, style=shape.triangleup, location=location.belowbar, color=color.blue)
plot(StoplossLine)
plot(BuyLine)