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

다량 동력 결합 거래 전략

저자:차오장, 날짜: 2024-11-12 10:52:54
태그:OBVRSIMFICMFVWAPVRSI

img

전반적인 설명

이 전략은 7개의 다른 볼륨 지표에 기반한 포괄적인 거래 전략이다. 이 전략은 포괄적인 거래 시스템을 구축하기 위해 OBV, A/D 라인, CMF, MFI, VWAP, 볼륨 오시레이터 및 볼륨 RSI 등 여러 볼륨 지표를 통합한다. 핵심 개념은 여러 지표 확인을 통해 거래 정확성을 향상시키는 것이며, 4개 이상의 지표가 동시에 구매 또는 판매 신호를 할 때만 거래를 실행하는 것이다.

전략 원칙

이 전략은 다음과 같은 여러 가지 지표 검증 방법을 사용합니다.

  1. OBV (balance-on-volume) - 누적량 변화를 추적하기 위해
  2. A/D 라인 (모금/분배)
  3. 현금 흐름을 측정하기 위한 CMF (Chaikin Money Flow)
  4. 구매/판매 압박에 대한 MFI (돈 흐름 지수)
  5. VWAP (Volume Weighted Average Price) 가 동적 지지/저항으로
  6. 부피 트렌드의 부피 오시레이터
  7. VRSI (Volume Relative Strength Index)

이 전략은 4개 이상의 지표가 동시에 일관된 신호를 내면 강력한 트렌드 기회를 나타낼 때 거래를 실행합니다.

전략적 장점

  1. 여러 지표의 교차 검증으로 잘못된 신호가 감소합니다.
  2. 부피와 가격 분석 방법을 결합합니다.
  3. 동력과 트렌드를 따르는 특징을 모두 포함합니다.
  4. 명확한 입국 및 출국 조건
  5. 강력한 적응력과 확장성

전략 위험

  1. 여러 가지 지표가 신호 지연으로 이어질 수 있습니다.
  2. 다양한 시장에서 과도한 거래를 일으킬 수 있습니다.
  3. 매개 변수 최적화 위험 과잉 조정
  4. 상당한 컴퓨팅 자원을 필요로 합니다.
  5. 유동성이 낮은 시장에서 실적이 떨어질 수 있습니다.

최적화 방향

  1. 적응적 매개 변수 메커니즘을 도입
  2. 시장 변동성 필터를 추가합니다
  3. 지표 무게 분포를 최적화
  4. 스톱 로스 및 수익 목표를 추가합니다
  5. 시간 필터를 구현하는 것을 고려하십시오.

요약

이 전략은 다차원 시장 분석을 통해 거래 정확성을 향상시키는 복수의 볼륨 지표에 기반한 포괄적인 거래 전략입니다. 전략은 강력한 이론적 기초와 실용적 가치를 가지고 있지만 실제 응용에서 적절한 매개 변수 최적화 및 위험 관리가 필요합니다.


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

//@version=5
strategy("Combined Volume Indicators Strategy", overlay=true)

// تنظیمات
lengthRSI = 14
lengthMFI = 14
lengthCMF = 20
fastLength = 5
slowLength = 10

// محاسبه OBV
obv = ta.cum(close > close[1] ? volume : close < close[1] ? -volume : 0)

// محاسبه A/D به‌صورت دستی
var float ad = na
ad := na(ad[1]) ? 0 : ad[1] + ((close - low) - (high - close)) / (high - low) * volume

// محاسبه CMF (Chaikin Money Flow)
moneyFlowMultiplier = ((close - low) - (high - close)) / (high - low)
moneyFlowVolume = moneyFlowMultiplier * volume
cmf = ta.sma(moneyFlowVolume, lengthCMF) / ta.sma(volume, lengthCMF)

// محاسبه MFI به‌صورت دستی
typicalPrice = (high + low + close) / 3
moneyFlow = typicalPrice * volume

// محاسبه جریان پول مثبت و منفی
positiveFlow = 0.0
negativeFlow = 0.0

for i = 0 to lengthMFI - 1
    positiveFlow := positiveFlow + (close[i] > close[i + 1] ? moneyFlow[i] : 0)
    negativeFlow := negativeFlow + (close[i] < close[i + 1] ? moneyFlow[i] : 0)

mfi = 100 - (100 / (1 + (positiveFlow / negativeFlow)))

// محاسبه VWAP
vwap = ta.vwap(close)

// محاسبه Volume Oscillator
fastVolMA = ta.sma(volume, fastLength)
slowVolMA = ta.sma(volume, slowLength)
volumeOscillator = fastVolMA - slowVolMA

// محاسبه VRSI (Volume RSI)
vrsi = ta.rsi(volume, lengthRSI)

// شمارش اندیکاتورهای سیگنال خرید
buySignals = 0
buySignals := buySignals + (obv > obv[1] ? 1 : 0)
buySignals := buySignals + (ad > ad[1] ? 1 : 0)
buySignals := buySignals + (cmf > 0 ? 1 : 0)
buySignals := buySignals + (mfi < 40 ? 1 : 0)
buySignals := buySignals + (close < vwap ? 1 : 0)
buySignals := buySignals + (volumeOscillator > 0 ? 1 : 0)
buySignals := buySignals + (vrsi < 40 ? 1 : 0)

// شمارش اندیکاتورهای سیگنال فروش
sellSignals = 0
sellSignals := sellSignals + (obv < obv[1] ? 1 : 0)
sellSignals := sellSignals + (ad < ad[1] ? 1 : 0)
sellSignals := sellSignals + (cmf < 0 ? 1 : 0)
sellSignals := sellSignals + (mfi > 60 ? 1 : 0)
sellSignals := sellSignals + (close > vwap ? 1 : 0)
sellSignals := sellSignals + (volumeOscillator < 0 ? 1 : 0)
sellSignals := sellSignals + (vrsi > 60 ? 1 : 0)

// شرایط سیگنال خرید: اگر بیش از 4 اندیکاتور سیگنال خرید دهند
buyCondition = (buySignals > 4)

// شرایط سیگنال فروش: اگر بیش از 4 اندیکاتور سیگنال فروش دهند
sellCondition = (sellSignals > 4)

// ورود به معامله خرید
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// خروج از معامله فروش
if (sellCondition)
    strategy.close("Buy")

// رسم سیگنال‌های خرید و فروش بر روی چارت
plotshape(buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


관련

더 많은