하이-로우 전략


생성 날짜: 2023-09-14 17:53:17 마지막으로 수정됨: 2023-09-14 17:53:17
복사: 0 클릭수: 612
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

전략 원칙

이 전략은 K선에 동급 높고 낮은 점들이 나타나는 형태를 기반으로 거래한다. 1주일 K선에 이중 바닥이나 이중 꼭대기 형태가 나타나면 거래 신호의 촉발 조건으로 사용된다.

거래 논리는 다음과 같습니다.

  1. 현재 K선 또는 이전 K선의 최고값이 가장 높은 앞의 두 K선과 같다고 판단한다.

  2. 현재 K선 또는 이전 K선의 최저가격이 최저가격의 이전 두 K선과 같다고 판단한다.

  3. 이중 바닥 형태가 나타나면, 가격이 하락하면 더 많이 합니다.

  4. 이중 정상 형태가 나타났을 때, 가격이 고점을 돌파했을 때 공백을 다.

  5. 스톱포인트는 브레이크포인트 근처로 설정되어 있고, 스톱포인트는 ATR 지수 값에 대한 계수입니다.

이 전략은 동위권 고저를 돌파한 후 가격의 트렌드 실행 기회를 잡으려고 한다. Stop Loss Stop Stop 전략으로 위험을 통제한다.

전략적 이점

  • 동급 높낮이 식별, 돌파 신호 명확

  • 트렌드를 동적으로 추적할 수 있는 ATR 차단 방식

  • 규칙은 간단하고 명확하며, 위험도 조절할 수 있습니다.

전략적 위험

  • 동급 고저형은 덜 흔하다

  • 스톱포인트가 너무 가까워서 스톱포인트가 될 위험이 있습니다.

  • ATR 변수 설정에 주의해야 합니다.

요약하다

이 전략은 동위권 상위권 저위권 돌파 기회를 포착하여 트렌드 트레이딩을 한다. 그러나 스톱 스톱 전략의 설정과 거래 빈도 문제에 주의를 기울여야 한다.

전략 소스 코드
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
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/
// © cherepanovvsb

//@version=5
strategy("SHL", overlay=true, margin_long=100, margin_short=100,initial_capital=100,default_qty_type = strategy.cash,default_qty_value =40,commission_type = strategy.commission.percent,commission_value =0.04,currency="EUR", process_orders_on_close=true)
atr = input.int(title="ATR length for abnormal candles", defval=5)
plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup")
plotshape(high==high[1], style=shape.triangledown, location=location.abovebar, color=color.blue, title="1 Setup")
plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup")
plotshape(low==high[1] or low==high[2] or low==high[3] or low==high[4] or low==high[5] or low==high[6], style=shape.triangleup, location=location.belowbar, color=color.green, title="Mirror Setup")
plotshape(high==low[1] or high==low[2] or high==low[3] or high==low[4] or high==low[5] or high==low[6], style=shape.triangledown, location=location.abovebar, color=color.green, title="Mirror Setup")
barcolor(high-low>2*ta.atr(atr)? color.yellow:na)


ATRlenght   = input.int(title="ATR length for take profit", defval=14, group="Strategy Settings")
rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings")

// Get ATR
atr1 = ta.atr(ATRlenght)

validlow =  low[1] == low[2] and not na(atr1)
validhigh = high[1]==high[2] and not na(atr1)

validlong = validlow and strategy.position_size == 0 and low[1]<low 
validshort = validhigh and strategy.position_size == 0 and high[1]>high

// Calculate Entrance, SL/TP
longStopPrice = low[1]-syminfo.mintick
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rewardMultiplier)
shortStopPrice = high[1]+syminfo.mintick
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rewardMultiplier)
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
if validlong 
    tradeStopPrice := longStopPrice
    tradeTargetPrice := longTargetPrice
if validshort 
    tradeStopPrice := shortStopPrice
    tradeTargetPrice := shortTargetPrice
strategy.entry ("Long", strategy.long,1, when=validlong)
strategy.entry ("Short", strategy.short,1, when=validshort)

strategy.exit(id="Long Exit", from_entry="Long", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size < 0)

plot(strategy.position_size != 0 or validlong or validshort ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0 or validlong or validshort ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, transp=0)