리소스 로딩... 로딩...

다층 변동성 대역 거래 전략

저자:차오장, 날짜: 2024-07-31 14:08:36
태그:SMAEMASMMAWMAVWMAATR

img

전반적인 설명

다층 변동성 대역 거래 전략 (Multi-Layer Volatility Band Trading Strategy) 은 가격 변동성에 기반한 양적 거래 접근법이다. 이 전략은 시장에서 과잉 구매 및 과잉 판매 영역을 식별하기 위해 여러 변동성 대역을 활용하여 가격이 이 영역에 닿을 때 거래를 시작합니다. 핵심 아이디어는 가격이 평균에서 벗어나 수익을 올릴 때 포지션을 설정하는 것입니다. 이 방법은 마르틴게일 전략의 요소를 통합하면서 평균 회귀 이론을 기반으로하며 수익 기회를 향상시키기 위해 불리한 가격 움직임 중에 포지션을 증가시킵니다.

전략 원칙

  1. 이동 평균 계산: 전략은 기본 라인을 계산하기 위해 선택 가능한 이동 평균 유형 (SMA, EMA, SMMA, WMA, VWMA) 을 사용합니다.

  2. 변동성 대역 설정: 여러 변동성 대역은 기본 선에 기초하여 표준편차를 인수로 곱하여 설정됩니다.

  3. 피보나치 레벨: 피보나치 리트레이싱 레벨 (23.6%, 38.2%, 50%, 61.8%) 은 변동성 대역을 분할하여 더 많은 거래 기회를 창출하는 데 사용됩니다.

  4. 동적 조정: ATR (Average True Range) 에 기반한 동적 곱셈을 사용하여 변동성 대역의 폭을 자동으로 조정할 수 있는 옵션.

  5. 엔트리 로직 (Entry Logic): 가격이 변동성 대역에 해당하는 방향으로 닿거나 넘을 때 포지션이 설정됩니다.

  6. 포지션 스케일링: 가격이 계속 불리하게 움직이면 전략은 마틴게일 전략 개념을 구현하여 더 많은 변동성 대역 수준에서 포지션을 추가합니다.

  7. 출구 논리: 가격이 기본 라인으로 되돌아 갈 때 이윤을 취합니다. 가격이 기본 라인을 넘을 때 포지션을 닫는 옵션도 있습니다.

전략적 장점

  1. 다단계 진입: 여러 변동성 대역과 피보나치 수준을 설정함으로써 전략은 다른 가격 수준에서 시장 변동성을 포착하여 더 많은 거래 기회를 제공합니다.

  2. 높은 유연성: 전략은 사용자가 다양한 시장 환경과 거래 도구에 적응하기 위해 다양한 유형의 이동 평균, 기간 및 매개 변수를 선택할 수 있습니다.

  3. 동적 적응: 선택적 동적 곱셈 기능으로 전략은 시장 변동성에 따라 자동으로 조정되어 적응성을 향상시킵니다.

  4. 리스크 관리: 불리한 가격 변동 중에 포지션을 증가시킴으로써 전략은 평균 입시 가격을 낮추고 궁극적인 수익성의 가능성을 증가시킵니다.

  5. 평균 반전 개념: 이 전략은 가격이 결국 평균으로 돌아갈 것이라는 생각에 기반하고 있으며, 이는 많은 시장과 시간 틀에서 잘 수행됩니다.

  6. 사용자 정의 가능성: 사용자는 자신의 위험 선호도와 거래 스타일에 따라 주식 크기 및 피보나치 레벨과 같은 매개 변수를 조정할 수 있습니다.

전략 위험

  1. 연속적 손실 위험: 강한 트렌드 시장에서 가격은 지속적으로 여러 변동 범위를 통과하여 연속적인 위치 증가와 상당한 손실을 축적 할 수 있습니다.

  2. 자본 관리 압력: 마틴게일 방식의 위치 확장으로 인해 자본 요구 사항이 급격히 증가하여 계좌 용량을 초과 할 수 있습니다.

  3. 오버 트레이딩: 여러 변동성 대역은 범위 제한 시장에서 과도한 거래 신호를 생성하여 거래 비용을 증가시킬 수 있습니다.

  4. 매개 변수 민감성: 전략 성능은 매개 변수 설정에 크게 의존합니다. 부적절한 매개 변수는 낮은 성능으로 이어질 수 있습니다.

  5. 미끄러짐 및 유동성 위험: 매우 변동적인 시장에서, 특히 규모를 조정할 때 중요한 미끄러짐이 발생할 수 있습니다.

  6. 마감 위험: 전략은 포지션 스케일링을 통해 평균 비용을 낮추는 것을 목표로 하고 있지만 극한 시장 조건에서는 여전히 상당한 마감에 직면 할 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터를 도입하십시오: 강한 트렌드에 자주 반 트렌드 거래를 피하여 트렌드 방향으로만 포지션을 열기 위해 장기 트렌드 지표를 추가하십시오.

  2. 동적 위치 크기: 거래된 주식 수를 계정 크기와 시장 변동성에 따라 조정하여 위험을 더 잘 제어합니다.

  3. 출구 메커니즘을 최적화: 수익을 더 잘 확보하고 위험을 제어하기 위해 후속 중지 또는 변동성 기반 동적 중지 손실을 도입하는 것을 고려하십시오.

  4. 시간 필터를 추가하십시오. 높은 변동성 또는 낮은 유동성 기간을 피하기 위해 거래 시간 창 제한을 구현하십시오.

  5. 시장 정서 지표 통합: VIX와 같은 변동성 지표를 통합하여 전략 매개 변수를 조정하거나 높은 변동성 기간 동안 거래를 중단하십시오.

  6. 기계 학습을 도입: 기계 학습 알고리즘을 사용하여 매개 변수를 동적으로 최적화하여 시장 변화에 대한 전략의 적응력을 향상시킵니다.

  7. 기본 필터 추가: 기본 데이터를 포함하여 특정 기본 조건 하에서만 거래를 허용하여 무역 품질을 향상시킵니다.

결론

다층 변동성 대역 거래 전략 (Multi-Layer Volatility Band Trading Strategy) 은 기술 분석, 확률 이론, 리스크 관리를 결합한 복잡한 거래 시스템이다. 다단계 진입점과 마르틴게일 방식의 위치 확장을 통해 가격 변동으로부터 이익을 얻으려고 시도한다. 전략의 강점은 유연성과 평균 반전을 활용하는 데 있지만 강한 트렌딩 시장에서도 위험에 직면한다.

이 전략을 성공적으로 적용하기 위해서는 시장 특성에 대한 깊은 이해, 신중한 매개 변수 설정 및 엄격한 위험 관리 구현이 필요합니다. 지속적인 최적화 및 백테스팅을 통해 시장 통찰력과 결합하여이 전략은 효과적인 거래 도구가 될 가능성이 있습니다. 그러나 복잡성과 잠재적 위험을 감안하면 실시간 거래 전에 철저한 시뮬레이션 테스트 및 위험 평가를 수행하는 것이 좋습니다.

전반적으로, 다층 변동성 대역 거래 전략은 양적 거래자에게 흥미롭고 도전적인 틀을 제공합니다. 그것의 성공적인 적용은 기술적 분석 기술, 위험 관리 기술 및 지속적인 전략 최적화를 요구합니다.


/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © abtov

//@version=5
strategy("Spider Strategy", overlay=true)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

stdev = input.int(56, "STDEV", group="Stdev")
mult = input.float(2.3, "Multiplier", group="Stdev")
ma_len = input.int(230, "Basis Length", group="Stdev")
ma_type = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Stdev")
auto_mult = input.bool(true, "Dynamic Mult.", group="Stdev")
basis_exit = input.bool(false, "Basis Exit", group="Stdev")

col_int = input.int(12, "Collective Value", group="Collective")
col_input = input.bool(true, "Collective Input", group="Collective")


fib1 = input.float(0.236, "Fibonacci Level 1", group = "Fibonacci")
fib2 = input.float(0.382, "Fibonacci Level 2", group = "Fibonacci")
fib3 = input.float(0.5, "Fibonacci Level 3", group = "Fibonacci")
fib4 = input.float(0.618, "Fibonacci Level 4", group = "Fibonacci")

atr_len = input.int(30, "ATR", group="ATR")
atr_bias = input.float(0.72, "Bias", group="ATR")

shares = input.int(1, "Shares Amount", group="Strategy")

if(col_input == true)
    stdev := col_int
    ma_len := col_int
    atr_len := col_int

if(auto_mult == true)
    mult := ma(ta.tr(true), atr_len, ma_type) * atr_bias


basis = ma(close, ma_len, ma_type)
lower = basis - stdev * mult
upper = basis + stdev * mult

lower2 = basis - stdev * mult * fib1
upper2 = basis + stdev * mult * fib1

lower3 = basis - stdev * mult * fib2
upper3 = basis + stdev * mult * fib2

lower4 = basis - stdev * mult * fib3
upper4 = basis + stdev * mult * fib3

lower5 = basis - stdev * mult * fib4
upper5 = basis + stdev * mult * fib4


var lowerAct = false
var lower2Act = false
var lower3Act = false
var lower4Act = false
var lower5Act = false

var upperAct = false
var upper2Act = false
var upper3Act = false
var upper4Act = false
var upper5Act = false


plot(upper, "limit short", color.red)
plot(upper2, "limit 1 short", color.red)
plot(upper3, "limit 2 short", color.red)
plot(upper4, "limit 3 short", color.red)
plot(upper5, "limit 4 short", color.red)
plot(basis, "basis", color.white)
plot(lower, "limit long", color.green)
plot(lower2, "limit 1 long", color.green)
plot(lower3, "limit 2 long", color.green)
plot(lower4, "limit 3 long", color.green)
plot(lower5, "limit 4 long", color.green)


if(lowerAct == false)
    if(close < lower)
        strategy.entry("long", strategy.long, shares)
        lowerAct := true
else
    if(low > basis)
        lowerAct := false


if(lower2Act == false)
    if(close < lower2)
        strategy.entry("long", strategy.long, shares)
        lower2Act := true
else
    if(low > basis)
        lower2Act := false


if(lower3Act == false)
    if(close < lower3)
        strategy.entry("long", strategy.long, shares)
        lower3Act := true
else
    if(low > basis)
        lower3Act := false


if(lower4Act == false)
    if(close < lower4)
        strategy.entry("long", strategy.long, shares)
        lower4Act := true
else
    if(low > basis)
        lower4Act := false


if(lower5Act == false)
    if(close < lower5)
        strategy.entry("long", strategy.long, shares)
        lower5Act := true
else
    if(low > basis)
        lower5Act := false





if(upperAct == false)
    if(close > upper)
        strategy.entry("short", strategy.short, shares)
        upperAct := true
else
    if(high < basis)
        upperAct := false


if(upper2Act == false)
    if(close > upper2)
        strategy.entry("short", strategy.short, shares)
        upper2Act := true
else
    if(high < basis)
        upper2Act := false


if(upper3Act == false)
    if(close > upper3)
        strategy.entry("short", strategy.short, shares)
        upper3Act := true
else
    if(high < basis)
        upper3Act := false


if(upper4Act == false)
    if(close > upper4)
        strategy.entry("short", strategy.short, shares)
        upper4Act := true
else
    if(high < basis)
        upper4Act := false


if(upper5Act == false)
    if(close > upper5)
        strategy.entry("short", strategy.short, shares)
        upper5Act := true
else
    if(high < basis)
        upper5Act := false


if((ta.crossover(close, basis) and basis_exit == true))
    strategy.close("short")
    strategy.close("long")

관련

더 많은