동적 이윤 타겟을 가진 오픈 레인지 전략 (Open Range Strategy with Dynamic Profit Target) 은 잠재적인 거래 기회를 식별하기 위해 시장의 오픈 레인지를 사용하는 기술적 거래 전략이다. 이 전략은 시장의 오픈 레인지가 단기간에 시장의 방향에 대한 귀중한 정보를 제공할 수 있다는 아이디어에 기초한다.
이 전략은 먼저 시장의 개시 범위를 계산하여 작동합니다. 개시 범위는 거래일의 첫 번째 바의 높은 가격과 낮은 가격의 차이입니다. 그 다음 전략은 개시 범위를 상하 또는 하위에서 브레이크를 탐색하여 잠재적 인 거래 기회를 식별합니다.
만약 가격이 개시 범위를 넘어서면 전략은 긴 포지션에 진입합니다. 만약 가격이 개시 범위를 넘어서면 전략은 짧은 포지션에 진입합니다. 전략은 가격이 미리 결정된 이익 목표 또는 스톱 로스에 도달하면 포지션을 종료합니다.
전략의 이익 목표는 동적이며, 이는 가격의 움직임에 따라 변화한다는 것을 의미합니다. 이윤 목표는 오픈 범위와 시장의 현재 가격에 따라 계산됩니다. 전략은 가격이 오픈 범위의 미리 결정된 비율에 도달하면 포지션을 종료합니다.
전략의 스톱 손실 또한 동적이므로 가격이 움직일 때 변합니다. 스톱 손실은 시장의 현재 가격과 개시 범위의 미리 결정된 비율을 기반으로 계산됩니다. 가격이 스톱 손실에 도달하면 전략이 포지션을 종료합니다.
동적 이윤 타겟을 가진 오픈 레인지 전략은 구현하기에는 비교적 간단한 전략이지만 단기 거래 기회를 식별하는 데 효과적일 수 있습니다. 그러나 거래 전략이 수익성이 보장되지 않는다는 것을 기억하는 것이 중요합니다. 라이브 거래에서 사용하기 전에 전략을 역사적 데이터에 백테스트하는 것이 항상 중요합니다.
다음은 전략의 다양한 구성 요소에 대한 더 자세한 설명입니다.
다이내믹 수익 목표와 함께 오픈 레인지 전략을 사용하는 몇 가지 팁은 다음과 같습니다:
이 기사 가 도움 이 되었으면 합니다. 다른 질문 이 있으시면 알려 주십시오.
/*backtest start: 2023-08-09 00:00:00 end: 2023-09-08 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] args: [["v_input_10",true]] */ //@version=2 //Created by Frenchy/lisfse/Francois Seguin on 2019-01-22" strategy(title="Open_Range_Strategy_with_dynamic_PT_by_frenchy", shorttitle="O/R Strategy Dynamic PT ", overlay=true) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2017, title = "From Year", minval = 2010) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2016) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // === INPUT SESSION RANGE === SessionLenght = input('0930-1100', title="Session Lenght") res = input('30', title="Length Of Opening Range?") Notradetime= time('30', '0930-1000') Tradetime= time('1', '1000-1100') // === LONG/SHORT STRATEGY AND ALERT SELECTION === Select_long = input(true, title="Long Strategy and alert ?") Select_short = input(false, title="Short Strategy and alert ?") //Session Rules sessToUse = SessionLenght bartimeSess = time('D', sessToUse) fr2to17 = time(timeframe.period, sessToUse) newbarSess = bartimeSess != bartimeSess[1] high_range = valuewhen(newbarSess,high,0) low_range = valuewhen(newbarSess,low,0) adopt(r, s) => security(syminfo.tickerid, r, s) //Formula For Opening Range highRes = adopt(res, high_range) lowRes = adopt(res, low_range) range = highRes - lowRes //Highlighting Line Rules For Opening Range highColor = Notradetime ? red : green lowColor = Notradetime ? red : green //Plot Statements For Opening Range Lines openRangeHigh = plot(fr2to17 > 0 ? highRes : na, color=highColor, style=linebr, linewidth=4,title="OR High") openRangeLow = plot(fr2to17 > 0 ? lowRes : na, color=lowColor, style=linebr, linewidth=4,title="OR Low") //Price definition price = security(syminfo.tickerid, timeframe.period, close) haclose = ((open + high + low + close)/4) //aopen = na(haopen[1]) ? (open + close)/2 : (haopen[1] + haclose[1]) / 2 MA20= sma(price,20) //Plots For Profit Targe 2 bgcolor(Notradetime? red:na) ///////////////////////////////////////Strategy Definition /////////////////////////////////////////////////////////////// /////////////////////////////////////////Long Strategy//////////////////////////////////////////////////////////////////// //Enter Strategy Long criteria Enterlong = (crossover(price,highRes) and Select_long and Tradetime ? 1:0 ) and (Notradetime ? 0:1) plotarrow(Enterlong, color=black, style=shape.triangleup, text="Enter", location=location.belowbar, minheight = 80, maxheight=80, offset=0) //Exit Strategy Long criteria Exitlong = crossunder(price,highRes) or crossunder(price,MA20) //plotshape(Exitlong, color=black, style=shape.triangledown, text="Exit", location=location.abovebar) /////////////////////////////////////////Long Strategy Excution//////////////////////////////////////////////////////// strategy.entry ("Call", strategy.long, when=Enterlong and window()) strategy.close("Call", when=Exitlong and window()) //////////////////////////////////////////Short Strategy//////////////////////////////////////////////////////////////// //Enter Strategy Short criteria Entershort = crossunder(price,lowRes) and time(res, SessionLenght) and Select_short ? 1:0 // Exit Strategy short criteria Exitshort = crossover(price,lowRes) or crossover(haclose,MA20) ///////////////////////////////////////Strategy execution Short/////////////////////////////////////////////////////// strategy.entry ("put", strategy.short, when=Entershort and window()) strategy.close("put", when=Exitshort and window())