추세 추종 에너지 지표 거래 전략


생성 날짜: 2023-11-15 17:36:46 마지막으로 수정됨: 2023-11-15 17:36:46
복사: 0 클릭수: 600
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

추세 추종 에너지 지표 거래 전략

개요

이 전략은vitelot의 Smeared 변동 채널 지수 (Smeared VCI) 지표에 기반한 거래의 트렌드 추적 전략이다. 이 전략은 이동 평균의 트렌드 판단과 변동 채널 지수의 오버 바이 오버 소드 판단을 결합하여 가격의 주요 트렌드 방향을 포착한다. 가격 운행이 오버 바이 또는 오버 소드 상태에 들어갔을 때, 수익을 얻기 위해 역전 조작한다.

전략 원칙

이 전략은vitelot의 Smeared VCI 지표를 사용하여 트렌드 방향을 판단한다. Smeared VCI 지표는 변동 통로 지수 ((VCI) 의 기초에 의해 평형 처리가 이루어진다. 그것은 빠른 EMA, 느린 EMA 및 평형 주기의 세 가지 변수로 구성된다. 빠른 EMA가 느린 EMA보다 높을 때 지향적이거나 그렇지 않으면 지향적이 된다. 평형 처리를 추가 한 후, 일부 잡음을 필터링 할 수 있다.

정책에는 두 가지 조건이 있습니다.

  1. 스미어드 VCI 상단 트리거 라인을 통해 다중 신호; 하단 트리거 라인을 통해 공백 신호

  2. 재검토 시간 창 내에서만 거래

두 가지 조건이 동시에 충족되면, 더 많은 또는 더 많은 작업을 수행하십시오. 평형 조건이 중단되거나 반전 신호가 발생하면 평형하십시오.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 트렌드 추적 형식의 지표를 사용하여 트렌드를 효과적으로 추적할 수 있습니다.

  2. 플레임 처리를 추가하여 잘못된 신호를 줄일 수 있습니다.

  3. 시간 창 재검토를 사용하여 특정 시간 동안의 상황을 테스트 할 수 있습니다.

  4. 스톱포인트를 설정하여 위험을 조절합니다.

  5. 지표 파라미터를 사용하여 다공간 판단, 규칙은 간단하고 명확하다

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 트렌드 판단이 잘못되어 손실이 발생할 수 있습니다.

  2. 부적절한 지표 변수 설정으로 인해 수익이 떨어질 수 있습니다.

  3. 스톱포인트 설정이 너무 작으면 작은 스톱포인트가 발생할 수 있습니다.

  4. 리테크 시간 창이 부합하지 않으면 테스트 결과가 오차가 발생할 수 있습니다.

  5. 다중 공간 전환이 너무 자주되면 거래비 부담이 발생할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 다양한 변수 조합을 테스트하여 최적의 변수를 찾습니다.

  2. 다른 지표들을 사용하여 보조 판단을 통해 정확도를 높여라.

  3. 손해 중지 알고리즘을 최적화하여 동적 추적 손해 중지

  4. 포지션 개시 조건을 최적화하여 거래 빈도를 절감하십시오.

  5. 전략의 안정성을 검증하기 위해 더 긴 시간창을 테스트합니다.

  6. 거래량과 같은 다른 요소와 함께 의사 결정의 정확성을 높여라

요약하다

이 전략은 전체적으로 비교적 간단한 트렌드 추적 전략이다. 그것은 Smeared VCI 지표를 사용하여 트렌드 방향을 판단하고, 지표가 거래 신호를 보낼 때 포지션을 개설한다. 스톱로스를 통해 위험을 통제한다. 이 전략은 트렌드 추적 능력이 있지만, 또한 약간의 위험이 존재한다. 매개 변수 최적화, 스톱로스 최적화 및 보조 조건 추가와 같은 방법을 통해 이 전략을 더 개선하여 안정적이고 신뢰할 수있는 거래 시스템으로 만들 수 있다.

전략 소스 코드
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Smeared VCI Backtest", overlay=false, shorttitle="SVCI Backtest", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
// Smeared Variability Channel Index
//    a variation of the VCI indicator of the same author.
// The orange line over the lime line is bullish;
// The lime line over the orange one is bearish.
//
// vitelot/yanez/Vts
// Feb 2019
//
src = close

ep1 = input(5, minval=1, title="Fast EMA period")
ep2 = input(13, minval=2, title="Slow EMA period")

sm = input(34, minval=1, title="Smearing period")
tp = input(13, minval=1, title="Trigger line period")

fixedSL = input(title="SL Activation", defval=300)
trailSL = input(title="SL Trigger", defval=1)
fixedTP = input(title="TP Activation", defval=150)
trailTP = input(title="TP Trigger", defval=1)

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 = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 19, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2030, title = "To Year", minval = 2017)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
startTimeOk()  => time >= start and time <= finish ? true : false // create function "within window of time" if statement true

atrP = 96

e1 = ema(src,ep1)
e2 = ema(src,ep2)

vci = (e1-e2)/atr(atrP)

svci = sma(vci,sm)
t = sma(svci,tp)

plot(svci, color=lime, linewidth=3, transp=0, title="Smeared VCI")
plot(t, color=orange, linewidth=3, transp=0, title="Trigger line")

hline(0, title="Reference line")

long = crossover(svci,t)
short = crossover(t,svci)

// === STRATEGY - LONG POSITION EXECUTION ===
strategy.entry("Long", strategy.long, when= long and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) 
strategy.exit("Exit", when= short)
// === STRATEGY - SHORT POSITION EXECUTION ===
strategy.entry("Short", strategy.short, when= short and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= long)