거래량-가격-장기 계산을 기반으로 한 변동성 힘 전략


생성 날짜: 2023-10-30 17:03:02 마지막으로 수정됨: 2023-10-30 17:03:02
복사: 0 클릭수: 669
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

거래량-가격-장기 계산을 기반으로 한 변동성 힘 전략

이 전략은 수량과 길이를 측정하는 지표에 기반하여 거래 신호를 설계하여 시장의 매매력을 판단할 수 있다.

전략 원칙

양과 가격의 길이를 측정하는 지표 (VB) 는 거래량 변화의 가격에 대한 추진력을 반영한다. 그것의 구성 아이디어는 다음과 같다:

  1. 전형적인 가격의 일일 변동률은 가격 변화의 힘을 나타냅니다.

  2. 거래량과 가격 변동의 힘을 곱하여 종결시의 매매력을 판단한다.

  3. 지수 값은 0축에서 아래로 변동하며, 다공력 측정의 기준은 지수 값의 양과 음이다.

이 전략은 VB 지표를 구성하고, 신호선을 설정한다. VB 지표 위에 신호선을 통과하면 구매 신호가 발생한다. VB 지표 아래 신호선을 통과하면 판매 신호가 발생한다.

코드의 주요 단계는 다음과 같습니다.

  1. 전형적인 가격의 일일 변동률을 계산한다.

  2. 파동력의 단절범위 coef를 설정하고, 그 범위를 초과하는 파동력은 coef으로 귀속된다.

  3. 절단 후의 양적 힘 vcp를 계산한다.

  4. 수량 지표 vfi ≠ vcp

  5. 신호선 길이 signalLength를 설정하여 신호선 vfima。을 얻는다.

  6. VB 지표 vfi와 신호 라인 vfima를 비교하여 거래 신호를 생성한다.

전략적 이점

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

  1. 가격 자체에 영향을 받지 않고, 수량과 가격 관계를 사용하여 시장의 구매와 판매 힘을 판단하십시오.

  2. 변수를 설정하여 힘의 계산 범위를 조절하여 비정상적인 파동의 영향을 방지할 수 있다.

  3. VB 지표 자체와 신호선 비교를 결합하여 합리적인 진입 시점을 설정할 수 있다.

  4. 지표 계산 방법은 간단하고 명확하며, 실 디스크에서 쉽게 조작할 수 있다.

  5. 사용자 정의 지표 변수와 신호선 변수, 전략 효과를 최적화한다.

전략적 위험

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

  1. VB 지표는 가격의 비정상적인 변동에 민감하며, 적절히 설정된 차단 매개 변수가 필요합니다.

  2. 주가가 지표 신호에서 벗어난 확률이 높기 때문에 맹목적인 추종을 피해야 한다.

  3. 적절한 최적화가 필요한 지표 파라미터와 신호 라인 파라미터, 가짜 신호를 방지하기 위해.

  4. 명확한 양적 특성을 가진 품종에 적합하며, 유동성이 낮은 품종에는 적합하지 않다.

  5. 시장이 반전될 수 있다는 것을 알 수 있는 지표의 분산에 주의를 기울여야 한다.

변수 범위를 조정하고, 다른 지표와 결합하여 필터링하고, 적절히 느슨한 스톱로스를 사용하여 위험을 제어할 수 있다.

전략 최적화 방향

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

  1. 힘의 계산 파라미터를 최적화하고, 감수성과 안정성을 균형 잡는다.

  2. 신호선 파라미터를 최적화하고 지연과 노이즈를 균형을 잡는다.

  3. Volume Spread Analysis와 같은 지표를 추가하여 효과를 검증한다.

  4. 동향을 높이고 저항 지표를 지원하고 불리한 방향으로 거래하는 것을 피하십시오.

  5. 동적 스톱 로드 메커니즘을 설정하여 시장의 변동에 따라 스톱 로드를 조정합니다.

  6. 기계 학습 방법을 사용하여 최적의 파라미터 조합을 훈련하십시오.

  7. 여러 품종과 다른 주기에서 재검토하여 전략의 강도를 평가한다.

  8. 다른 지표 변수들이 수익 곡선에 미치는 영향을 비교하여 최적의 변수를 찾는다.

요약하다

이 전략은 수량과 가격의 길이를 측정하는 지표를 기반으로 구매와 판매의 힘을 판단한다. 지표 설계의 단순성과 매개 변수 조정 등의 장점이 있지만, 특정 잘못된 신호의 위험도 존재한다. 매개 변수 최적화, 불리한 시장을 피하는 등의 조치를 통해 전략의 안정성을 높일 수 있다. 이후 여러 관점에서 이 전략을 계속 최적화하고 검증하여 실적 효과를 향상시킬 수 있다.

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

//@version=3
strategy("VB Strategy", overlay=true)

length = input(130, title="거래량 길이")
coef = input(0.2, title="계수")
vcoef = input(2.5, title="최대 계수")
signalLength=input(5)
smoothVFI=input(false, type=bool, title="부드럽게")
//볼밴
length2 = input(20, minval=1, title="볼밴 길이")

ma(x,y) => smoothVFI ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax)
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )
d=vfi-vfima

upper = vfima + stdev(vfi, length2)
lower = vfima - stdev(vfi, length2)

buysignal = cross(vfi, lower) and crossunder(vfi, lower) == 1 ? vfima : na

sellsignal = cross(vfi, upper) and crossover(vfi, upper) == 1 ? vfima : na

//times = timestamp("GMT+6", 2017, 12, 6, 00, 00)

//if (buysignal and times <= time)
if (buysignal)
    if(strategy.position_size < 0)
        strategy.close("SHORT")
        
    if(strategy.position_size > 0)
        strategy.order("LONG", true, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("LONG", strategy.long, when = (low+high)/2)

//if (sellsignal and times <= time)
if (sellsignal)
    if(strategy.position_size > 0)
        strategy.close("LONG")
        
    if(strategy.position_size < 0)
        strategy.order("SHORT", false, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("SHORT", strategy.short, when = (low+high)/2)