VWAP 및 크로스 타임프레임 신호에 기반한 동적 스톱 로스 및 취리 전략

저자:차오장, 날짜: 2024-03-08 17:37:21
태그:

img

전반적인 설명

이 전략은 거래에 진입하고 종료하는 신호로 일일 시간 프레임에서 VWAP (Volume Weighted Average Price) 를 사용합니다. 클로즈 가격이 VWAP보다 높을 때, VWAP보다 낮으면 이전 촛불의 낮은 수준에서 스톱 손실을 설정하고 목표 가격이 입상 가격보다 3 포인트 높을 때 긴 엔트리를 유발합니다. 반대로, 클로즈 가격이 VWAP보다 낮을 때, VWAP보다 높으면 이전 촛불의 높은 수준에서 스톱 손실을 설정하고 목표 가격이 입상 가격보다 3 포인트 낮을 설정하여 짧은 엔트리를 유발합니다. 이 전략에는 출구 조건이 포함되어 있지 않으므로 반대 신호가 발생 할 때까지 거래가 열려 있습니다.

전략 원칙

  1. 트렌드 결정 및 거래 신호의 기초로 사용되는 일일 시간 프레임에서 VWAP 데이터를 얻으십시오.
  2. 현재 클로즈 가격이 VWAP 이상/하위를 넘어서거나, 각각 긴 엔트리와 짧은 엔트리의 트리거 역할을 하는지를 결정합니다.
  3. 긴 엔트리에서, 이전 촛불의 낮은 지점이 VWAP 이하라면, 그것은 스톱 로스로 사용됩니다. 그렇지 않으면, VWAP 자체를 사용합니다. 짧은 엔트리에는 그 반대가 적용됩니다.
  4. 포지션에 진입한 후, 고정된 3점의 수익을 취하는 수준을 설정합니다.
  5. 전략은 역 신호가 포지션을 닫고 새로운 포지션을 열기 전까지 계속 실행됩니다.

트렌드를 결정하고 동적 스톱 손실과 고정 포인트 수익을 활용하기 위해 크로스 타임프레임 VWAP 데이터를 사용하여 전략은 트렌딩 시장을 효과적으로 파악하고 마감 위험을 제어하고 적시에 수익을 확보 할 수 있습니다.

이점 분석

  1. 단순성과 효율성: 전략 논리는 트렌드 결정 및 신호 트리거를 위해 VWAP 지표만을 사용하여 구현 및 최적화를 간단하게합니다.
  2. 동적 스톱 로스: 이전 촛불의 높은 또는 낮은 기준으로 스톱 로스를 설정함으로써 전략은 시장 변동에 더 잘 적응하고 위험을 줄입니다.
  3. 일정한 포인트 로 수익 을 취함: 일정한 포인트 로 목표 가격 을 설정 하는 것 은 신속 한 수익 을 확보 하고 수익 침식 을 피 하는 데 도움 이 된다.
  4. 적시에 손해를 멈추고 이윤을 취합니다. 이 전략은 역 신호가 발생하면 즉시 포지션을 닫아 기존 이익에 대한 추가 손실을 방지합니다. 또한 새로운 트렌드 움직임을 포착하기 위해 새로운 포지션을 여는 것입니다.

위험 분석

  1. 매개 변수 최적화: 전략은 수익을 취하기 위해 고정된 3 포인트를 사용합니다. 실제 거래에 최적의 매개 변수를 선택하기 위해 다른 도구와 시장 특성에 따라 최적화가 필요할 수 있습니다.
  2. 불안한 시장: 불안한 시장 조건에서 빈번한 진입과 출입은 거래 비용의 상승으로 이어지며 수익성에 영향을 줄 수 있습니다.
  3. 트렌드 지속가능성: 전략은 트렌드 시장에 의존합니다. 시장이 범위에 묶여 있거나 트렌드 지속가능성이 없으면 더 많은 거래 신호가 생성되어 더 많은 위험을 초래할 수 있습니다.

최적화 방향

  1. 트렌드 필터링: 트렌드를 확인하고 신호 신뢰성을 향상시키기 위해 이동 평균, MACD 등과 같은 다른 트렌드 지표를 포함합니다.
  2. 동적 취득: 시장 조건에 더 잘 적응하기 위해 시장 변동성, ATR 또는 다른 지표에 따라 동적으로 취득 포인트를 조정합니다.
  3. 포지션 크기: 계좌 크기, 위험 용도 및 기타 요인에 따라 각 거래의 포지션 크기를 동적으로 조정합니다.
  4. 거래 세션 선택: 전략 효율성을 높이기 위해 도구의 특성 및 유동성에 따라 최적의 거래 세션을 선택하십시오.

요약

이 전략은 트렌드 결정 및 신호 트리거를 위해 크로스 타임프레임 VWAP 데이터를 활용하고 동시에 동적 스톱 손실과 고정 포인트 취득을 사용하여 위험을 제어하고 이익을 잠금합니다. 이것은 간단하고 효과적인 수치적 거래 전략입니다. 트렌드 필터링, 동적 취득, 포지션 사이즈링 및 거래 세션 선택의 최적화를 통해 전략의 견고성과 수익 잠재력을 더욱 향상시킬 수 있습니다. 그러나 실제로 전략을 적용할 때 더 나은 성능 전략을 달성하기 위해 시장 특성, 거래 비용 및 매개 변수 최적화에주의를 기울여야합니다.


/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))

더 많은