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

인공지능 기반의 변동성 가격 시스템 격차 거래 전략

저자:차오장, 날짜: 2024-12-27 13:51:33
태그:VPSRSIATR와우알리

img

전반적인 설명

이 전략은 인공 지능 기술을 통합한 고급 트렌드 추적 거래 시스템으로, 주로 VPS (변동성 가격 시스템) 격차 지표와 WOW 트렌드 방법론을 통합합니다. 이 전략은 잠재적인 가격 역전 지점을 감지하기 위해 RSI 격차를 결합하면서 시장 변동성과 트렌드 강도를 식별하기 위해 VPS를 활용합니다. 이 전략은 길고 짧은 거래에 대한 정확한 입시 신호를 제공하여 트렌드 모멘텀과 격차 분석을 모두 활용함으로써 시장 예측 정확성을 향상시킬 수 있습니다.

전략 원칙

이 전략은 세 가지 핵심 요소를 기반으로 합니다.

  1. 트렌드 변경을 확인하기 위한 WOW 트렌드 지표 (승향에서 하락으로 또는 그 반대의 경우)
  2. 변동성 및 트렌드 강도를 확인하는 VPS 조건
  3. 잠재적인 전환점을 식별하기 위한 RSI 분차 분석

이 시스템은 먼저 ATR를 기반으로 동적 지지 및 저항 채널을 계산하고, 시장 조건을 평가하기 위해 VPS 길이 매개 변수 (디폴트 11) 와 결합하여 계산합니다. 가격이 과잉 구매 (78) 또는 과잉 판매 (27) 수준을 넘을 때 시스템은 거래 신호를 유발합니다. 또한 전략은 거래 방향을 추가로 확인하기 위해 가격과 VPS 지표 사이의 분리를 모니터링합니다.

전략적 장점

  1. 다차원 분석: 트렌드 추적, 변동성 및 분산 분석을 결합하여 보다 포괄적인 시장 관점을 제공합니다.
  2. 강력한 적응력: 시장 변동에 자동으로 적응하는 동적 ATR 채널을 사용합니다.
  3. 포괄적 리스크 관리: 미리 설정된 수익 목표에 기초한 자동 포지션 폐쇄와 함께 이익 취득 및 스톱-러스 메커니즘을 구축
  4. 신호 확인 메커니즘: 트레이드 트리거에 대해 여러 조건이 동시에 충족되어야 하며, 잘못된 신호를 줄여줍니다.
  5. 양방향 거래 능력: 시장 변동성을 완전히 활용하여 장기 및 단기 거래 기회를 모두 포착 할 수 있습니다.

전략 위험

  1. 시장 소음: 측면 또는 낮은 변동성 환경에서 잘못된 신호를 생성할 수 있습니다.
  2. 매개 변수 민감도: 전략 성능은 지표 매개 변수 설정 (예를 들어, VPS 길이, 과잉 구매/ 과잉 판매 수준) 에 크게 의존합니다.
  3. 미끄러짐 위험: 짧은 시간 (예를 들어, 5 분) 에서 중요한 미끄러짐 영향을 받을 수 있습니다.
  4. 신호 지연: 여러 확인 메커니즘으로 인해 상대적으로 지연된 입력 시기가 발생할 수 있습니다.
  5. 자금 관리: 고정 자본 할당 방법은 다양한 시장 조건에서 다르게 작동 할 수 있습니다.

전략 최적화 방향

  1. 동적 매개 변수 조정: 시장 조건에 따라 VPS 길이와 과잉 구매/ 과잉 판매 기준을 동적으로 조정하기 위한 적응적 매개 변수 메커니즘을 도입
  2. 시장 환경 필터링: 불리한 시장 조건에서 거래를 중단하기 위해 시장 환경 인식 모듈을 추가합니다.
  3. 스톱 로스 최적화: ATR에 기반한 보다 유연한 스톱 로스 메커니즘을 설계하여 위험 통제의 정확성을 향상시킵니다.
  4. 시간 기간 최적화: 다른 거래 세션에 대한 전략 매개 변수 및 거래 규칙을 조정
  5. 자본 관리 최적화: 시장 변동성 및 이익/손실 상태에 따라 거래 규모를 조정하기 위해 동적 위치 관리를 도입

요약

이 전략은 여러 가지 기술 지표와 분석 방법을 통합하는 포괄적인 거래 전략이다. 인공 지능 기술을 전통적인 기술 분석과 결합함으로써 전략은 안정성을 유지하면서 높은 거래 정확도를 제공할 수 있다. 핵심 장점은 다층 신호 확인 메커니즘과 포괄적인 위험 관리 시스템, 최적화의 주요 영역은 동적 매개 변수 조정 및 시장 환경 인식이다. 지속적인 최적화와 개선을 통해 이 전략은 다양한 시장 조건에서 안정적인 성능을 유지할 수 있다.


/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-25 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("AI+VPS Vijay Prasad Strategy", overlay=true)

// --- VPS Divergence Strategy Inputs ---
vps_length = input.int(11, title="VPS Length")
vps_overbought = input.int(78, title="VPS Overbought Level")  // Overbought level for VPS
vps_oversold = input.int(27, title="VPS Oversold Level")  // Oversold level for VPS

// Calculate VPS (Relative Strength Index alternative) - here using a custom divergence condition
vps = ta.rsi(close, vps_length)

// Plot VPS on the chart
plot(vps, title="VPS", color=color.blue, linewidth=2)
hline(vps_overbought, "Overbought", color=color.red, linewidth=1)
hline(vps_oversold, "Oversold", color=color.green, linewidth=1)

// Define Buy and Sell Conditions based on Overbought/Oversold VPS
vps_buy_condition = vps < vps_oversold  // Buy signal when VPS is oversold
vps_sell_condition = vps > vps_overbought  // Sell signal when VPS is overbought

// Define Bullish and Bearish Divergence conditions
bullish_divergence = (low[1] < low[2] and vps[1] > vps[2] and low < low[1] and vps > vps[1])
bearish_divergence = (high[1] > high[2] and vps[1] < vps[2] and high > high[1] and vps < vps[1])

// Combine Buy and Sell signals: 
// Buy when VPS is oversold or Bullish Divergence occurs
vps_buy_condition_final = vps_buy_condition or bullish_divergence
// Sell when VPS is overbought or Bearish Divergence occurs
vps_sell_condition_final = vps_sell_condition or bearish_divergence

// Plot Buy and Sell Signals
plotshape(series=vps_buy_condition_final, title="VPS Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, text="BUY")
plotshape(series=vps_sell_condition_final, title="VPS Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, text="SELL")

// VPS Divergence Highlight
bgcolor(bullish_divergence ? color.new(color.green, 90) : na)  // Highlight background for Bullish Divergence
bgcolor(bearish_divergence ? color.new(color.red, 90) : na)  // Highlight background for Bearish Divergence

// Strategy: Buy and Sell with target
if vps_buy_condition_final
    strategy.entry("Buy", strategy.long)

if vps_sell_condition_final
    strategy.entry("Sell", strategy.short)

// Capital settings for the strategy (for backtesting purposes)
capital_per_trade = input.float(1000, title="Capital per Trade (INR)", minval=1)
buy_target_inr = 1500  // Profit target for Buy in INR
sell_target_inr = 1000  // Profit target for Sell in INR

trade_value = close * (capital_per_trade / close)  // Value of one contract at current price

// Profit threshold calculation
buy_profit_target = buy_target_inr / trade_value  // Profit in price movement for Buy
sell_profit_target = sell_target_inr / trade_value  // Profit in price movement for Sell

// Exit based on profit targets
if strategy.position_size > 0
    profit_inr = (close - strategy.position_avg_price) * strategy.position_size
    if profit_inr >= buy_target_inr
        strategy.close("Buy", comment="Profit Target Reached")

if strategy.position_size < 0
    profit_inr = (strategy.position_avg_price - close) * -strategy.position_size
    if profit_inr >= sell_target_inr
        strategy.close("Sell", comment="Profit Target Reached")

// --- WoW Trends + VPS (Vijay Prasad Strategy) Logic ---
Periods = input.int(title="ATR Period", defval=10)
src = input.source(close, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=1.7)
changeATR = input.bool(title="Change ATR Calculation Method ?", defval=true)
showsignals = input.bool(title="Show Buy/Sell Signals ?", defval=true)

// --- ATR Calculation ---
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

// --- WoW Trends Logic ---
var trend = 1
trend := na(trend[1]) ? 1 : trend
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// --- VPS Logic (Vijay Prasad Strategy) ---
vpsVolatilityCondition = (high - low) > (1.5 * ta.sma(ta.tr, 20))  // VPS condition based on volatility
vpsTrendCondition = trend == 1  // VPS condition to check if trend is up
vpsSignal = vpsVolatilityCondition and vpsTrendCondition  // Combine both VPS conditions

// --- Buy/Sell Signal Logic ---
buySignal = trend == 1 and trend[1] == -1  // Signal to Buy (when trend switches to up)
sellSignal = trend == -1 and trend[1] == 1  // Signal to Sell (when trend switches to down)

// --- Combined Buy/Sell Signal Logic (WoW Trends + VPS) ---
combinedBuySignal = buySignal and vpsSignal
combinedSellSignal = sellSignal and vpsSignal

// --- Plot WoW Trends Lines using plot() ---
plot(trend == 1 ? up : na, title="Up Trend", color=color.green, linewidth=2)
plot(trend == -1 ? dn : na, title="Down Trend", color=color.red, linewidth=2)

// --- Plot VPS Signals ---
plotshape(vpsSignal and showsignals, title="VPS Signal", text="VPS", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.blue, textcolor=color.white)

// --- Plot Combined Buy/Sell Signals ---
plotshape(combinedBuySignal and showsignals, title="Combined Buy Signal", text="BUY", location=location.belowbar, style=shape.labelup, size=size.small, color=color.green, textcolor=color.white)
plotshape(combinedSellSignal and showsignals, title="Combined Sell Signal", text="SELL", location=location.abovebar, style=shape.labeldown, size=size.small, color=color.red, textcolor=color.white)

// --- Strategy Entries ---
if (combinedBuySignal)
    strategy.entry("BUY", strategy.long)

if (combinedSellSignal)
    strategy.entry("SELL", strategy.short)

// --- Highlight Bars for Buy/Sell Signals ---
barcolor(combinedBuySignal ? color.green : na, offset=-1)
barcolor(combinedSellSignal ? color.red : na, offset=-1)


관련

더 많은