이 전략은 유동 평균의 유동 판단과 유동 평균의 과잉 구매/ 과잉 판매 판단을 결합하여 가격의 주요 유동 방향을 파악하는 트렌드 다음 전략이다. 가격이 과잉 구매 또는 과잉 판매 상태에 도달하면 역작업이 수익을 창출합니다.
이 전략은 트렌드 방향을 결정하기 위해 vitelot
전략에는 두 가지 조건이 있습니다.
트리거 라인의 위를 가로지르는 VCI는 긴 신호이고 아래를 가로지르는 것은 짧은 신호입니다.
백테스트 시간 안에만 거래하세요.
두 조건이 충족되면, 긴 또는 짧은 지위가 취해질 것입니다. 손실을 멈추거나 반전 신호가 표시되면 출구합니다.
이 전략의 장점은 다음과 같습니다.
트렌드를 따라가는 지표를 이용하면 트렌드를 효과적으로 추적할 수 있습니다.
평평화 과정은 잘못된 신호를 줄입니다.
시간 창 내에서 백테스팅은 특정 기간에 초점을 맞추고 있습니다.
스톱 손실 세트는 위험을 통제합니다.
장기/단기 결정에 대한 지표 매개 변수를 사용하면 규칙이 간단하고 명확합니다.
이 전략에는 몇 가지 위험도 있습니다.
트렌드 판단이 잘못되어 손실로 이어질 수도 있습니다.
부적절한 지표 매개 변수 설정은 수익성이 떨어질 수 있습니다.
너무 작은 스톱 로스 설정으로 인해 빠르게 스톱 아웃 될 수 있습니다.
부적절한 백테스트 시간 창은 편향된 테스트 결과를 초래할 수 있습니다.
너무 자주 긴 / 짧은 전환은 위원회 압력을 일으킬 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
최적의 매개 변수를 찾기 위해 다양한 매개 변수 조합을 테스트합니다.
정확도를 높이기 위해 다른 표시기를 사용하십시오.
역동적인 후속 스톱 손실을 달성하기 위해 스톱 손실 알고리즘을 최적화합니다.
오버 트레이딩을 피하기 위해 진입 조건을 최적화하십시오.
안정성을 확인하기 위해 더 긴 시간 창문을 테스트합니다.
결정의 정확성을 높이기 위해 부피와 같은 다른 요소를 포함합니다.
요약하자면, 이것은 비교적 간단한 트렌드 추적 전략이다. 거래 신호가 생성될 때 트렌드 방향과 오픈 포지션을 결정하기 위해 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)