이 전략은 ATR 지표에 기반한 트렌드 브레이크 아웃 전략이다. 주요 아이디어는 가격이 ATR의 특정 배수를 초과할 때 트렌드 브레이크 아웃 트레이드를 취하는 것입니다. 이 전략에는 트렌드 확인과 날짜 범위 내에서 트레이드를 제한하는 것도 포함됩니다.
이 전략은 가격 변동성을 측정하기 위해 ATR 지표를 사용합니다. ATR은 평균 진정한 범위를 나타냅니다. 이 전략의 길이 매개 변수는 ATR 기간을 계산하고 numATRs는 브레이크아웃의 ATR 곱셈을 나타냅니다.
가격이 ATR의 상위 numATRs 곱하기 위에 넘어가면, 긴 포지션을 취합니다. 가격이 ATR의 하위 numATRs 곱하기 아래에 넘어가면, 짧은 포지션을 취합니다.
또한, 전략은 긴 거래 또는 짧은 거래만을 제어하기 위해 needlong 및 needshort bool 변수를 포함합니다. 또한 지정된 날짜 내에서 거래를 제한하기 위해 날짜 범위를 설정합니다.
이 전략은 규모 변수를 사용하여 포지션 크기를 결정하고 계정 자금의 비율을 기준으로 주문 크기를 계산합니다.
ATR을 사용하여 수동 수익/손실 설정 없이 시장 변동에 자동적으로 적응합니다.
긴, 짧은 또는 긴/단만 선택할 수 있는 유연성
중요한 이벤트에서 거래를 피하기 위해 날짜 범위를 설정할 수 있습니다.
계정 자기자본 비율에 기초한 유연한 포지션 크기
ATR은 가격 변동성만을 고려합니다. 큰 시장 변동 중에는 충분한 스톱 로스가 없을 수 있습니다. 다른 지표가 결합 될 수 있습니다.
날짜 범위 제한은 전에 / 후에 좋은 설정이 없으면 기회를 놓칠 수 있습니다. 날짜 범위를 약간 확장 할 수 있습니다.
주식 비중 규모는 단일 거래에서 큰 손실을 초래할 수 있습니다. 합리적인 비율이 필요합니다.
트렌드 필터를 위한 이동 평균을 추가하여 잘못된 브레이크 루즈를 줄이십시오.
최적의 매개 변수를 찾기 위해 ATR 기간을 테스트합니다.
다른 전략과 결합하여 강점을 활용하고 안정성을 향상시킵니다.
이는 변동성에 적응하기 위해 ATR을 사용하는 전략을 따르는 이해 할 수있는 추세입니다. 매개 변수 최적화 및 다른 전략과 결합하면 성과와 안정성을 더욱 향상시킬 수 있습니다. 그러나 큰 단일 거래 손실을 피하고 큰 변동 중에 충분하지 않은 정지를 주목해야합니다.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") length = input(5) numATRs = input(0.75) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Indicator atrs = sma(tr, length) * numATRs //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[length])) and needlong strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needlong == false strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort == false strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))