
동력 가속 확장 가격 트렌드 (Extended Price Volume Trend, EPVT) 전략은 기술 지표 조합 전략이다. 동력 가속 지표와 다른 보조 지표를 결합하여 잠재적인 트렌드 반전 지점과 동력 전환 시점을 식별한다.
이 전략의 핵심 지표는 확장 가격 트렌드 (EPVT) 이다. 그것의 계산 방법은 다음과 같다: 누적 거래량 * 가격 상승 하락. 그리고는 일정 기간 동안 EPVT의 최대 값과 최소 값을 계산하여 기준 지역을 얻는다. EPVT 지표 곡선은 EPVT와 기준 지역의 차차 곡선이다.
EPVT 지표 곡선이 0축을 상향으로 통과할 때, 구매 압력 증강을 나타내고, 다중 신호가 나타난다. 반대로 EPVT 0축을 하향으로 통과할 때, 공백 신호가 나타난다.
신호의 질을 높이기 위해, 전략은 또한 트렌드 전환의 신뢰성을 확인하기 위해 간단한 이동 평균을 사용하는 것을 보조한다.
이 전략은 트렌드, 동력 및 거래량의 3 차원의 지표를 결합하여 시장의 매매 의향과 힘을 더 포괄적으로 판단할 수 있습니다. 확장 가격량 트렌드 지표를 사용하면 단기간에 갑자기 발생하는 과잉 거래 상황을 잘 식별하고 시장의 전환점을 잡을 수 있습니다.
세 단계의 막대기 위치를 설정하여 자신의 위험 선호도에 따라 다른 막대기 비율을 선택할 수 있습니다.
이 전략은 지표 곡선의 형태적 특성에 더 의존하며, 비정상적인 움직임이 있을 때 잘못된 신호를 발산한다. 또한, 3 bars 반전과 같은 상황도 불필요한 역전 포지션 개시를 초래한다.
적절히 파라미터를 조정하거나, 최적화하기 위해 다른 파동 지표를 추가할 수 있다. 스톱 손실 전략은 또한 단편 손실을 줄일 수 있다.
매개 변수 최적화: EPVT 주기 매개 변수를 조정하여 최적의 매개 변수 조합을 찾습니다.
트렌드 필터 조건을 추가한다. 예를 들어, EPVT 신호를 기반으로 가격 채널 또는 평균 선의 방향을 판단한다.
정해진 수치 스톱 또는 ATR 스톱을 설정하는 것과 같은 최적화된 스톱 전략
동력은 가격 트렌드 전략을 가속화하여 EPVT 지표를 통해 시장의 구매와 판매 의지의 변화를 탐색하여 잠재적인 트렌드 전환점을 잡습니다. 투자자의 다양한 위험 선호를 충족시키기 위해 세 개의 다른 비율의 중지 출구를 설정합니다. 이 전략은 추가 테스트와 최적화를 통해 시장의 단기 동향 전환을 식별하는 효과적인 도구가 될 수 있습니다.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Extended Price Volume Trend", overlay=true )//@version=5
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
runtime.error("No volume is provided by the data vendor.")
src = close
lenght = input(200,"Trend Lenght")
vt = ta.cum(ta.change(src)/src[1]*volume)
upx = ta.highest(vt,lenght)
downx = ta.lowest(vt,lenght)
basex = (upx +downx)/2
VTX = vt - basex
VTY = ta.valuewhen(ta.cross(VTX,0),close,0)
plot(VTY, color=color.black, title="Extended-PVT")
/////////////////////// STRATEGY ////////////////
/////////////////////// TAKE PROFIT SECTION ////////////////
longConditionx = ta.crossover(close,VTY)
ShortConditionx = ta.crossunder(close,VTY)
tp1 = input.int(10, minval=1,title = "TP-1")
tp2 = input.int(20, minval=1,title = "TP-2")
tp3 = input.int(30, minval=1,title = "TP-3")
ematp = ta.ema(close,2)
TPTAKA1S = VTY*(1-tp1/100)
plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1)
TPTAKA2S = VTY*(1-tp2/100)
plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1)
TPTAKA3S = VTY*(1-tp3/100)
plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1)
TPTAKA1B = VTY*(1+tp1/100)
plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1)
TPTAKA2B = VTY*(1+tp2/100)
plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1)
TPTAKA3B = VTY*(1+tp3/100)
plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1)
BUYTP = ta.crossunder(close,VTY) or ta.crossunder(ematp,TPTAKA1B) or ta.crossunder(ematp,TPTAKA2B) or ta.crossunder(ematp,TPTAKA3B)
SELLTP = ta.crossover(close,VTY) or ta.crossover(ematp,TPTAKA1S) or ta.crossover(ematp,TPTAKA2S) or ta.crossover(ematp,TPTAKA3S)
/////////////////////// STRATEGY ////////////////
// Check for Long Entry
longCondition = longConditionx==true
if longCondition
strategy.entry('Long', strategy.long, comment = "ENTER-LONG")
buyclose = ShortConditionx==true or BUYTP==true
// Exit condition
strategy.close('Long', when=buyclose or BUYTP==true, comment = "EXIT-LONG")
// Check for Short Entry
ShortCondition = ShortConditionx==true
if ShortCondition
strategy.entry('Short', strategy.short, comment = "ENTER-SHORT")
sellclose = longConditionx==true or SELLTP ==true
// Exit condition
strategy.close('Short', when=sellclose or SELLTP==true, comment = "EXIT-SHORT")
///// END OF STRATEGY ///////////