오차 기반 트렌드 추적 전략

저자:차오장, 날짜: 2024-01-22 11:51:28
태그:

img

전반적인 설명

이 전략은 피보나치 리트레이싱 영역과 결합된 가격 오차 지표에 기초하여 트렌드를 식별하고 추적합니다. 가격이 한 방향에서 점점 더 벗어나면 거래 신호가 생성됩니다.

전략 논리

이 전략은 VWAP를 가격의 중점선으로 사용한다. 그 다음 1.618 및 2.618 표준편차의 상부 및 하부 대역을 계산한다. 가격이 하부 대역을 상향으로 돌파할 때 긴 신호가 생성된다. 가격이 상부 대역을 상향으로 돌파할 때 짧은 신호가 생성된다.

긴 포지션이나 짧은 포지션을 열고 나면 스톱 로스 EXIT 신호는 다음과 같습니다: 긴 포지션의 스톱 로스 라인은 하단역이고, 짧은 포지션의 상단역입니다.

구체적으로 다음 단계들을 포함합니다.

  1. VWAP를 가격의 중간선으로 계산합니다.

  2. 가격 변동성의 지표로 가격의 표준편차 sd를 계산합니다.

  3. sd를 기반으로 상부와 하부 대역을 계산합니다. 상부 대역은 VWAP + 1.618입니다sd 및 VWAP + 2.618sd. 하위 대역은 VWAP - 1.618sd 및 VWAP - 2.618sd.

  4. 긴 신호는 가격이 1.618 하위 대역을 상향으로 돌파할 때 생성됩니다. 짧은 신호는 가격이 1.618 상위 대역을 상향으로 돌파할 때 생성됩니다.

  5. 긴 스톱 손실 EXIT: 가격이 2.618 하위 범위를 통과합니다. 짧은 스톱 손실 EXIT: 가격이 2.618 상위 범위를 통과합니다.

이점 분석

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

  1. 가격 오차 지표는 가격 추세를 효과적으로 결정하고 추세를 추적 할 수 있습니다.

  2. 피보나치 리트랙시 영역은 진입 및 스톱 손실 출구를 더 명확하게합니다.

  3. 가격의 중간선인 VWAP도 지표의 기준 값을 향상시킵니다.

  4. 매개 변수는 다른 제품과 시간 프레임에 맞게 조정 할 수 있습니다.

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 트렌드 반전 때 더 큰 손실을 입을 수 있습니다.

  2. 부적절한 매개 변수 설정 또한 전략 성능에 영향을 줄 수 있습니다.

  3. 치열한 가격 변동으로 스톱 로스 위험이 높습니다.

대책:

  1. 보유 기간을 적절하게 단축하고 적시에 손실을 중지합니다.

  2. 가장 좋은 매개 변수 조합을 찾기 위해 매개 변수를 최적화

  3. 단일 손실을 제어하기 위해 위치 사이즈 관리를 증가

최적화 방향

이 전략은 또한 다음 영역에서 최적화 될 수 있습니다.

  1. 트렌드 상거래를 피하기 위해 트렌드 지표를 포함

  2. 위치 사이즈 관리 메커니즘을 추가

  3. 매개 변수 설정을 최적화

  4. 복수의 시간 프레임에서 백테스트 및 최적화

요약

이 전략은 VWAP 및 피보나치 표준 오차 대역과 결합한 가격 오차 개념을 기반으로 동향을 식별하고 추적합니다. 이동 평균과 같은 단일 지표를 사용하는 것과 비교하면이 전략은 더 명확한 판단과 위험 통제를 가지고 있습니다. 매개 변수 조정 및 최적화를 통해 전략은 더 나은 성능을 달성하기 위해 다른 제품과 시간 틀에 적응 할 수 있습니다.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Mysteriown

//@version=4
strategy(title="VWAP + Fibo Dev Extensions Strategy", overlay=true, pyramiding=5, commission_value=0.08)

// -------------------------------------
// ------- Inputs Fibos Values ---------
// -------------------------------------

fib1 = input(title="Fibo extension 1", type=input.float, defval=1.618)
fib2 = input(title="Fibo extension 2", type=input.float, defval=2.618)
reso = input(title="Resolution VWAP", type=input.resolution, defval="W")
dev = input(title="Deviation value min.", type=input.integer, defval=150)


// -------------------------------------
// -------- VWAP Calculations ----------
// -------------------------------------

t = time(reso)
debut = na(t[1]) or t > t[1]

addsource = hlc3 * volume
addvol = volume
addsource := debut ? addsource : addsource + addsource[1]
addvol := debut ? addvol : addvol + addvol[1]
VWAP = addsource / addvol

sn = 0.0
sn := debut ? sn : sn[1] + volume * (hlc3 - VWAP[1]) * (hlc3 - VWAP)
sd = sqrt(sn / addvol)

Fibp2 = VWAP + fib2 * sd
Fibp1 = VWAP + fib1 * sd
Fibm1 = VWAP - fib1 * sd
Fibm2 = VWAP - fib2 * sd


// -------------------------------------
// -------------- Plots ----------------
// -------------------------------------

plot(VWAP, title="VWAP", color=color.orange)
pFibp2 = plot(Fibp2, color=color.red)
pFibp1 = plot(Fibp1, color=color.red)
pFibm1 = plot(Fibm1, color=color.lime)
pFibm2 = plot(Fibm2, color=color.lime)

fill(pFibp2,pFibp1, color.red)
fill(pFibm2,pFibm1, color.lime)


// -------------------------------------
// ------------ Positions --------------
// -------------------------------------

bull = crossunder(low[1],Fibm1[1]) and low[1]>=Fibm2[1] and low>Fibm2 and low<Fibm1 and sd>dev
bear = crossover(high[1],Fibp1[1]) and high[1]<=Fibp2[1] and high<Fibp2 and high>Fibp1 and sd>dev

//plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0)
//plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0)


// -------------------------------------
// --------- Strategy Orders -----------
// -------------------------------------

strategy.entry("Long", true, when = bull)
strategy.close("Long", when = crossover(high,VWAP) or crossunder(low,Fibm2))

strategy.entry("Short", false, when = bear)
strategy.close("Short", when = crossunder(low,VWAP) or crossover(high,Fibp2))

더 많은