삼각차익거래를 시뮬레이션한 다중시간프레임 양적거래전략


생성 날짜: 2024-01-29 11:10:33 마지막으로 수정됨: 2024-01-29 11:10:33
복사: 0 클릭수: 416
1
집중하다
1166
수행원

삼각차익거래를 시뮬레이션한 다중시간프레임 양적거래전략

개요

이 전략은 세 가지의 다른 기술 지표를 조합하여 여러 시간 프레임의 중매 전략을 구축하여 다른 시간 주기에서 가격 추세를 포착하여 낮은 위험으로 초과 수익을 창출합니다.

전략 원칙

이 전략이 사용하는 세 가지 기술 지표는 각각 켈트 통로 (KC), 변동률 중단 (Vstop) 및 윌리엄 모임 모임 지표 (WAE) 이다. 켈트 통로는 가격이 통로 범위를 벗어나 거래 신호를 발산하는지 판단하는 데 사용됩니다. 변동률 중단은 중단 위치를 동적으로 조정하여 손실을 보장하면서 불필요한 중단을 줄이는 데 사용됩니다. 윌리엄 지표는 가격이 강도 방향으로 있는지 판단하는 데 사용됩니다. 구체적으로:

  1. 가격이 켈트 통로 상단 궤도보다 높을 때, 낙점 신호로 간주한다. 가격이 켈트 통로 하단 궤도보다 낮을 때, 낙점 신호로 간주한다.

  2. 변동률 중지 가격 변동률과 통로의 폭에 따라 중지 위치를 설정한다. 그것은 손실을 보장하면서 지나치게 보수적인 중지 위치를 피하면서 동적으로 조정할 수 있다.

  3. 윌리엄스 지표는 MACD와 브린 대역 통로 폭을 계산하여 가격이 강한 상승 또는 하락 추세에 있는지 판단합니다.

이 세 가지 지표를 조합하여, 서로 다른 시간 주기의 신호를 서로 검증 할 수 있습니다. 이것은 잘못된 판단의 가능성을 줄여주고, 안정적으로 최적화된 전략 논리를 구축합니다.

우위 분석

이 전략의 가장 큰 장점은 다중 지표 조합으로 가져오는 정확한 거래 신호에 있다. 세 가지 지표는 서로 다른 시간 주기에서 작동하며, 서로 검증하여 오판 가능성을 효과적으로 줄이고, 신호의 정확성을 향상시킬 수 있다. 또한, 변동률 중지 손해 설정은 동적으로, 실시간 변동에 따라 중지 손해 위치를 조정하여 위험을 더욱 제어 할 수 있다.

단일 지표 전략에 비해, 이 조합 전략은 더 정확하고 효율적인 거래 신호를 제공할 수 있다. 동시에, 세 가지 지표가 서로 협력하여, 여러 시간 프레임에 걸쳐 거래 판단을 형성한다. 이 논리 디자인은 매우 과학적이고 합리적이며, 참고할 가치가 있다.

위험 분석

이 전략의 주요 위험은 매개 변수를 잘못 설정하면 과합이 발생할 수 있다는 것이다. 세 지표의 총 8개의 매개 변수가 있고, 잘못 설정하면 모두 전략에 부정적인 영향을 미칠 수 있다. 또한, 지표들 사이의 무게 관계가 합리적으로 구성되어야 하며, 그렇지 않으면 신호가 서로 상쇄되어 무효가 될 수 있다.

이러한 위험을 줄이기 위해, 매개 변수 설정 과정에서 다양한 시장 환경에 대한 적응성을 충분히 고려하고, 역전 분석을 통해 최적의 매개 변수 조합으로 조정해야합니다. 또한, 지표 간의 무게 관계를 적절하게 조정하여 거래 신호가 효과적으로 유발되도록해야합니다. 연속적인 손실이 발생할 경우, 포지션 규모를 줄이고 손실을 제어하는 것도 고려해야합니다.

최적화 방향

이 전략의 최적화 공간은 크게 두 가지 측면에 집중된다: 변수 조정 및 스톱 로즈 전략 개선. 구체적으로 다음과 같은 몇 가지 측면에서 시작할 수 있다:

  1. 더 과학적으로 합리적으로 지표 매개 변수를 선택하고, 매개 변수 조합을 최적화한다. 알고리즘을 통해 수익을 극대화하고, 위험을 최소화하는 등의 목표에 따라 최적의 매개 변수를 찾을 수 있다.

  2. 중지 손실 전략을 개선하여, 중지 손실을 보장하는 전제 하에, 불필요한 중지 손실을 더 줄이고, 승률을 높인다. 예를 들어, 더 많은 지표를 중지 신호로 결합하거나, 중지 손실 위치의 점진적 회귀를 설정한다.

  3. 지표의 무게 관계와 거래 신호의 판단 논리를 최적화하고, 잘못된 판단률을 줄일 수 있다. 더 많은 가격 행동 특성을 도입하여 더 안정적이고 신뢰할 수 있는 판단 규칙을 구축할 수 있다.

  4. 기계 학습 모델을 도입하여 매개 변수를 자동으로 최적화하거나, 심층 강도 학습 프로그래밍을 사용하여 전략 평가 및 개선을 시도하십시오.

요약하다

이 전략은 켈트 통로, 변동률 중지 및 윌리엄 지표의 조합을 사용하여 시간 프레임에 걸쳐 중개 시스템을 구축합니다. 다중 지표 조합은 거래 신호의 정확성을 향상시키고, 동적 중지은 위험을 제어합니다. 그러나 매개 변수 설정 및 최적화 측면에서 개선할 여지가 있습니다.

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

//@version=4
strategy("QuarryLake", overlay=true)  ///Ultilized modified full kelly for this strategy = 36%

///Keltner channel///
nPeriod = input(title="Keltner Period", type=input.integer, defval=200, minval=1)
Mult = input(title="Keltner Mult", type=input.integer, defval=5, minval=1)
xPrice = ema(hlc3, nPeriod)
xMove = ema(high - low, nPeriod)
xMoveMult = xMove * Mult
xUpper = xPrice + xMoveMult
xLower = xPrice - xMoveMult

// plot(xPrice, color=red, title="KSmid")
p1 = plot(xUpper, color=color.white, title="KSup")
p2 = plot(xLower, color=color.white, title="KSdn")
fill(p1, p2, color=close > xUpper ? color.green : close < xLower ? color.red : color.white)

kclongcondition = close > xUpper
kcshortcondition = close < xLower
kccloselongcondition = crossunder(close, xUpper)
kccloseshortcondition = crossover(close, xLower)

///Volatility Stop///
length = input(title="Vstop length", type=input.integer, defval=3, minval=1)
mult1 = 1.5

atr_ = atr(length)
max1 = 0.0
min1 = 0.0
is_uptrend_prev = false
stop = 0.0
vstop_prev = 0.0
vstop1 = 0.0
is_uptrend = false
is_trend_changed = false
max_ = 0.0
min_ = 0.0
vstop = 0.0
max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)
is_uptrend_prev := nz(is_uptrend[1], true)
stop := is_uptrend_prev ? max1 - mult1 * atr_ : min1 + mult1 * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult1 * atr_ : min_ + mult1 * atr_ : 
   vstop1

plot(vstop, color=is_uptrend ? color.green : color.red, style=plot.style_line, linewidth=1)

vstoplongcondition = close > vstop
vstoplongclosecondition = crossunder(close, vstop)
vstopshortcondition = close < vstop
vstopshortclosecondition = crossover(close, vstop)

///Waddah Attar Explosion///
sensitivity = input(150, title="Sensitivity")
fastLength = input(20, title="FastEMA Length")
slowLength = input(40, title="SlowEMA Length")
channelLength = input(20, title="BB Channel Length")
mult = input(2.0, title="BB Stdev Multiplier")
DEAD_ZONE = nz(rma(tr(true), 100)) * 3.7
calc_macd(source, fastLength, slowLength) =>
    fastMA = ema(source, fastLength)
    slowMA = ema(source, slowLength)
    fastMA - slowMA
calc_BBUpper(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis + dev
calc_BBLower(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis - dev
t1 = (calc_macd(close, fastLength, slowLength) - 
   calc_macd(close[1], fastLength, slowLength)) * sensitivity
t2 = (calc_macd(close[2], fastLength, slowLength) - 
   calc_macd(close[3], fastLength, slowLength)) * sensitivity
e1 = calc_BBUpper(close, channelLength, mult) - 
   calc_BBLower(close, channelLength, mult)
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

waelongcondition = trendUp and trendUp > DEAD_ZONE and trendUp > e1
waeshortcondition = trendDown and trendDown > DEAD_ZONE and trendDown > e1

///Long Entry///
longcondition = kclongcondition and vstoplongcondition and waelongcondition
if longcondition
    strategy.entry("Long", strategy.long)

///Long exit///
closeconditionlong = kccloselongcondition or vstoplongclosecondition
if closeconditionlong
    strategy.close("Long")

///Short Entry///
shortcondition = kcshortcondition and vstopshortcondition and waeshortcondition
if shortcondition
    strategy.entry("Short", strategy.short)

///Short exit///
closeconditionshort = kccloseshortcondition or vstopshortclosecondition
if closeconditionshort
    strategy.close("Short")

///Free Hong Kong, the revolution of our time///