리소스 로딩... 로딩...

VWAP 거래 전략

저자:차오장, 날짜: 2024-04-29 14:20:39
태그:EMAVWAP

img

전반적인 설명

이 전략은 EMA, VWAP, 및 볼륨에 기반한 거래 전략이다. 주요 아이디어는 폐쇄 가격이 VWAP 및 EMA를 통과하고 거래량이 특정 거래 시간 내에 이전 촛불의 부피보다 커지면 시그널을 생성하는 것입니다. 또한 정식 손실을 중지하고 수익을 취하며 특정 시간 내에 포지션을 닫는 조건을 설정합니다.

전략 원칙

  1. EMA와 VWAP 지표를 계산합니다.
  2. 지정된 거래 시간 내에 있는지 확인합니다.
  3. 롱 엔트리 조건: 종료 가격은 VWAP와 EMA보다 높고, 볼륨은 이전 촛불보다 높고, 종료 가격은 개시 가격보다 높습니다.
  4. 짧은 입상 조건: 종료 가격은 VWAP와 EMA보다 낮고, 부피는 이전 촛불보다 높고, 개시 가격은 종료 가격보다 높습니다.
  5. 긴 출구 조건: 종료 가격이 VWAP 또는 EMA 이하로 떨어지고, 스톱 로스 또는 영업 마이너스 수준에 도달하거나 지정된 출구 시간에 도달합니다.
  6. 짧은 출구 조건: 종료 가격이 VWAP 또는 EMA보다 높거나, 스톱 로스 또는 영업 마이너스 수준에 도달하거나, 정해진 출구 시간대에 도달합니다.

전략적 장점

  1. 가격 트렌드 (EMA), 시장 공정 가치 (VWAP) 및 거래 부피를 동시에 고려하여 개시 조건을 더 엄격하게 만들고 전략의 승률을 향상시키는 데 도움이됩니다.
  2. 스톱 로스를 설정하고 수익을 취해서 위험을 통제하고 수익을 확보합니다.
  3. 거래시간과 출구시간을 제한하여 거래시간이 아닌 시간과 오버나이트 보유 기간에 위험을 피합니다.

전략 위험

  1. 이 전략은 불안정한 시장에서 좋은 성과를 거두지 못할 수 있습니다. 빈번한 돌파구와 인하가 여러 개개 및 폐쇄로 이어질 수 있기 때문에 거래 비용과 미끄러짐을 증가시킬 수 있습니다.
  2. 스톱 로즈 수준은 고정되어 있고 시장이 급격히 변동할 때 너무 일찍 작동하여 전략이 상당한 손실을 입게 할 수 있습니다.
  3. 이 전략은 실제 거래에서 미끄러짐과 오픈 실패와 같은 문제에 직면 할 수있는 실제 시장 깊이와 주문 상태를 고려하지 않습니다.

전략 최적화 방향

  1. 추세와 동력의 강도를 더 확인하기 위해 ATR 및 RSI 지표와 같은 더 많은 필터링 조건을 추가하는 것을 고려하십시오.
  2. 스톱 러스 및 취득 레벨은 다른 시장 변동성에 적응하기 위해 ATR 또는 비율 스톱 러스 (percentage stop loss) 를 따라 동적으로 설정할 수 있습니다.
  3. EMA 길이, VWAP 소스, 스톱 로스 및 이익 취득 수준 등 파라미터를 최적화하여 전략의 안정성과 수익성을 향상시킵니다.
  4. 전체 리스크를 제어하기 위해 변동성이나 자본비율에 따라 개설 부피를 조정하는 것과 같은 포지션 관리를 추가하는 것을 고려하십시오.

요약

이 전략은 가격 추세, 시장 공정 가치 및 거래량을 포괄적으로 고려하여 특정 거래 시간 내에 거래합니다. 스톱 손실, 수익 취득 및 제한된 거래 시간이 설정되어 있지만, 실제 응용에서 변동성 시장 및 미끄러짐과 같은 위험에 여전히주의를 기울여야합니다. 미래에 더 많은 필터링 조건, 최적화 매개 변수 및 위치 관리 등을 추가하여 전략의 견고성과 수익성을 향상시킬 수 있습니다.


/*backtest
start: 2024-04-27 00:00:00
end: 2024-04-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA, VWAP, Volume Strategy", overlay=true, process_orders_on_close=true)

// Inputs
emaLength = input.int(21, title="EMA Length")
vwapSource = input.source(defval=hlc3, title='VWAP Source')
stopLossPoints = input.float(100, title="Stop Loss (points)")
targetPoints = input.float(200, title="Target (points)")
session = input("0950-1430", title='Only take entry during')
exit = input(defval='1515-1525', title='Exit Trade')

tradein = not na(time(timeframe.period, session))
exit_time = not na(time(timeframe.period, exit))

// Calculate indicators
ema = ta.ema(close, emaLength)
vwapValue = ta.vwap(vwapSource)

// Entry Conditions
longCondition = close > vwapValue and close > ema and volume > volume[1] and close > open and tradein
shortCondition = close < vwapValue and close < ema and volume > volume[1] and open > close and tradein

// Exit Conditions
longExitCondition = ta.crossunder(close, vwapValue) or ta.crossunder(close, ema) or close - strategy.position_avg_price >= targetPoints or close - strategy.position_avg_price <= -stopLossPoints or exit_time
shortExitCondition = ta.crossover(close, vwapValue) or ta.crossover(close, ema) or strategy.position_avg_price - close >= targetPoints or strategy.position_avg_price - close <= -stopLossPoints or exit_time

// Plotting
plot(vwapValue, color=color.blue, title="VWAP")
plot(ema, color=color.green, title="EMA")

// Strategy
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

if longExitCondition
    strategy.close('Long', immediately=true)

if shortExitCondition
    strategy.close("Short", immediately=true)


관련

더 많은