이 전략은 마지막 가장 높은 가격 (lastbull) 과 마지막 가장 낮은 가격 (lastbear) 을 계산합니다. 다음으로 현재 가격을 lastbull과 lastbear과 비교하여 가격이 특정 범위에 진입했는지 여부를 결정하고 따라서 거래 신호를 생성합니다. 가격이 특정 비율로 lastbull보다 상승할 때 길고 가격이 특정 비율로 lastbear 아래로 떨어지면 짧습니다.
전략은 먼저 마지막 가장 높은 가격 lastbull와 마지막 가장 낮은 가격 lastbear를 계산합니다. 다음으로 현재 가격의 변화 비율 ddl lastbull에 비해, 그리고 변화 비율 dds lastbear에 비해 계산합니다.
ddl가 구성된 긴 신호의 임계 신호장보다 낮을 때, 긴 신호가 생성됩니다. dds가 구성된 짧은 신호의 임계 신호장보다 높을 때, 짧은 신호 dn이 생성됩니다.
긴 신호를 수신하면, needlong 매개 변수가 사실이라면 긴 포지션을 개척한다. 짧은 신호를 수신하면, needshort 매개 변수가 사실이라면 짧은 포지션을 개척한다. 포지션 크기의 자본은 계정 자금으로부터 계산된다.
그것은 긴 포지션을 닫습니다. 가격이 상승하면 긴 포지션을 열고, 가격이 하락하면 짧은 포지션을 닫습니다.
이 전략은 트렌드와 범위 분석을 결합합니다. 트렌드를 파악하고 범위 브레이크에서 거래 신호를 생성 할 수 있습니다. 간단한 트렌드 추적 전략과 비교하면 범위 브레이크 후에 새로운 트렌드 방향을 빠르게 파악 할 수 있습니다.
매개 변수들은 다른 제품들에 대해 매우 구성이 가능합니다. 중요한 이벤트를 피하기 위해 거래 시간 범위를 구성할 수 있습니다.
이 전략에는 거래 당 손실을 제한하는 스톱 로스 메커니즘이 없습니다. 거래 범위가 큰 경우 가격 변동에 의해 포지션 크기가 크게 영향을받을 수 있습니다.
거래당 손실을 제한하기 위해 스톱 로스를 추가 할 수 있습니다. 포지션 사이징 알고리즘은 포지션 크기를 안정시키기 위해 제품에 따라 사용자 정의 할 수 있습니다.
이 전략은 트렌드 분석과 범위 브레이크아웃을 결합하여 새로운 트렌드를 파악하고 범위 제한 특성을 활용할 수있는 거래 신호를 생성합니다. 매개 변수는 다른 제품에 대해 매우 구성 가능합니다. 더 복잡한 시장 환경에 적응하기 위해 최적화 할 수있는 많은 공간이 있습니다.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings needlong = input(true, title = "Long") needshort = input(true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") signalshort = input(3.0, title = "Short, %") signallong = input(-3.0, title = "Long, %") 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") //Levels bull = close > close[1] ? 1 : 0 bear = close < close[1] ? 1 : 0 lastbull = 0.0 lastbull := bull ? close : lastbull[1] lastbear = 0.0 lastbear := bear ? close : lastbear[1] //Signals ddl = ((close / lastbull) - 1) * 100 up = ddl < signallong dds = ((close / lastbear) - 1) * 100 dn = dds > signalshort //Lines plot(dds, style = plot.style_area, color = color.red, transp = 0) plot(ddl, style = plot.style_area, color = color.lime, transp = 0) plot(0, color = color.black, linewidth = 2, transp = 0) //Background col = (up and needlong) or (dn and needshort) ? color.yellow : na bgcolor(col, transp = 20) //Orders lot = 0.0 lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] truetime = true if up strategy.entry("Long", strategy.long, lot, when = needlong and truetime) if dn strategy.entry("Short", strategy.short, lot, when = needshort and truetime) if strategy.position_size > 0 and close > open strategy.entry("Close", strategy.short, 0) if strategy.position_size < 0 and close < open strategy.entry("Close", strategy.long, 0)