동적 이윤 목표를 가진 오픈 레인지 전략

저자:차오장, 날짜: 2023-09-10 00:10:22
태그:

img

동적 이윤 타겟을 가진 오픈 레인지 전략 (Open Range Strategy with Dynamic Profit Target) 은 잠재적인 거래 기회를 식별하기 위해 시장의 오픈 레인지를 사용하는 기술적 거래 전략이다. 이 전략은 시장의 오픈 레인지가 단기간에 시장의 방향에 대한 귀중한 정보를 제공할 수 있다는 아이디어에 기초한다.

이 전략은 먼저 시장의 개시 범위를 계산하여 작동합니다. 개시 범위는 거래일의 첫 번째 바의 높은 가격과 낮은 가격의 차이입니다. 그 다음 전략은 개시 범위를 상하 또는 하위에서 브레이크를 탐색하여 잠재적 인 거래 기회를 식별합니다.

만약 가격이 개시 범위를 넘어서면 전략은 긴 포지션에 진입합니다. 만약 가격이 개시 범위를 넘어서면 전략은 짧은 포지션에 진입합니다. 전략은 가격이 미리 결정된 이익 목표 또는 스톱 로스에 도달하면 포지션을 종료합니다.

전략의 이익 목표는 동적이며, 이는 가격의 움직임에 따라 변화한다는 것을 의미합니다. 이윤 목표는 오픈 범위와 시장의 현재 가격에 따라 계산됩니다. 전략은 가격이 오픈 범위의 미리 결정된 비율에 도달하면 포지션을 종료합니다.

전략의 스톱 손실 또한 동적이므로 가격이 움직일 때 변합니다. 스톱 손실은 시장의 현재 가격과 개시 범위의 미리 결정된 비율을 기반으로 계산됩니다. 가격이 스톱 손실에 도달하면 전략이 포지션을 종료합니다.

동적 이윤 타겟을 가진 오픈 레인지 전략은 구현하기에는 비교적 간단한 전략이지만 단기 거래 기회를 식별하는 데 효과적일 수 있습니다. 그러나 거래 전략이 수익성이 보장되지 않는다는 것을 기억하는 것이 중요합니다. 라이브 거래에서 사용하기 전에 전략을 역사적 데이터에 백테스트하는 것이 항상 중요합니다.

다음은 전략의 다양한 구성 요소에 대한 더 자세한 설명입니다.

  • 오프닝 범위: 오프닝 범위는 거래 날 첫 번째 바의 높은 가격과 낮은 가격 사이의 차이입니다. 그것은 하루 초 시장의 변동성을 측정합니다.
  • 브레이크업 (breakout): 시장이 개시 범위를 넘거나 그 아래로 넘어갈 때 발생한다. 이는 시장이 브레이크업 방향으로 계속 움직일 가능성이 있다는 신호이다.
  • 이윤 목표: 이윤 목표는 전략이 포지션을 종료하기 전에 도달하려고 시도하는 개시 범위의 미리 결정된 비율입니다.
  • 스톱 로스 (Stop Loss): 스톱 로스는 시장이 트레이드에 반대되는 경우 전략이 포지션을 종료하는 미리 결정된 가격입니다. 동적 수익 목표와 함께 오픈 레인지 전략은 다양한 시간 프레임과 시장에서 사용할 수있는 다재다능한 전략입니다. 그러나 트렌딩 시장에서 전략이 가장 효과적이라는 점에 유의해야합니다. 흔들리는 시장에서 전략은 많은 잘못된 신호를 생성 할 수 있습니다.

다이내믹 수익 목표와 함께 오픈 레인지 전략을 사용하는 몇 가지 팁은 다음과 같습니다:

  • 수익을 보호하기 위해 스톱 로스를 사용하세요.
  • 시장이 당신에게 유리하게 움직일 때 수익을 확보하기 위해 후속 스톱 로스를 사용하세요.
  • 실시간 거래에 사용하기 전에 역사적인 데이터에 대한 전략을 테스트하십시오.
  • 다른 다양한 지표를 사용하여 동적 수익 목표와 함께 오픈 범위 전략에서 생성 된 신호를 확인합니다. 동적 이윤 타겟을 가진 오픈 레인지 전략은 단기 거래 기회를 식별하는 데 사용할 수있는 강력한 도구입니다. 그러나 전략을 현명하게 사용하고 한계를 이해하는 것이 중요합니다. 위의 팁을 따르면이 전략을 사용할 때 성공 가능성을 높일 수 있습니다.

이 기사 가 도움 이 되었으면 합니다. 다른 질문 이 있으시면 알려 주십시오.


/*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())



 





더 많은