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

OBV 및 MA 크로스오버 신호에 기반한 전략을 따르는 경향

저자:차오장, 날짜: 2024-04-29 13:48:58
태그:OBVMASMA

img

전반적인 설명

이 전략은 OBV 및 MA 크로스오버 신호에 기반한 트렌드 다음 전략 (OBVVious MA Strategy: Trend Following Strategy Based on OBV and MA Crossover Signals) 이라고 불리며, 거래 신호를 생성하기 위해 밸런스 볼륨 (OBV) 지표와 이동 평균 사이의 크로스오버를 활용합니다. OBV는 선도적인 트렌드 신호를 제공할 수 있으며, 이 전략은 트렌드를 캡처하기 위해 진입 및 출구 조건으로 이동 평균 이상 또는 이하의 OBV 브레이크를 사용합니다. 분리된 진입 및 출구 MA를 사용하여 보유 기간에 대한 더 유연한 통제를 허용합니다. 이 전략은 간단한 시범이지만 볼륨 분석에 OBV를 효과적으로 사용하는 방법을 보여줍니다.

전략 원칙

  1. OBV 지표 값을 계산합니다. 현재 종료 가격이 이전 촛불보다 높으면 현재 부피를 OBV에 추가합니다. 그렇지 않으면 부피를 빼십시오.
  2. OBV의 4개의 이동 평균을 계산합니다: 장기 장기 출입 MA, 장기 장기 출입 MA, 단기 단기 출입 MA, 단기 단기 출입 MA.
  3. 거래 신호를 생성합니다.
    • OBV가 장기 장기 입점 MA를 넘어서면 방향 필터가 short로 설정되지 않으면 긴 포지션을 개척합니다.
    • OBV가 장기 장기 출구 MA 아래로 넘어가면 긴 포지션을 닫습니다.
    • OBV가 단기 단기 엔트리 MA 이하로 넘어가면 방향 필터가 길게 설정되지 않으면, 짧은 포지션을 개척합니다.
    • OBV가 단기 단기 출구 MA를 넘으면 단기 포지션을 닫습니다.
  4. 거래 관리: 반대 신호가 생성되면 새로운 포지션을 열기 전에 원래 포지션은 닫힐 것입니다.

전략적 장점

  1. 트렌드의 시작에서 포지션을 설정하기 위해 OBV의 주요 트렌드 신호를 완전히 활용합니다.
  2. 입구와 출구 MAs를 분리하면 입구와 출구 타이밍의 독립적인 최적화가 가능합니다.
  3. 코드 논리는 간단하고 명확하고 이해하기 쉽고 개선하기 쉽습니다.
  4. 방향 필터를 도입하면 빈번한 거래를 피하고 비용을 줄일 수 있습니다.

전략 위험

  1. 다른 확인 지표가 없기 때문에 잘못된 신호를 생성 할 수 있습니다. 다른 지표와 함께 사용하는 것이 좋습니다.
  2. 스톱 로스 및 포지션 관리가 부족하여 단일 거래 손실이 증가 할 위험이 있습니다. 합리적인 스톱 로스 및 자금 관리 조치가 추가 될 수 있습니다.
  3. 부적절한 매개 변수 선택은 전략의 성과에 영향을 줄 것입니다. 매개 변수들은 다른 시장 특성과 시간 프레임에 따라 최적화되어야합니다.

전략 최적화 방향

  1. 신호 품질을 향상시키기 위해 MA 방향, ATR 등과 같은 트렌드 필터를 도입하는 것을 고려하십시오.
  2. OBV에서 다른 유형의 MAs를 사용할 수 있습니다. 예를 들어 EMA, WMA 등, 다양한 속도의 경향을 포착하기 위해.
  3. 트렌드 강도가 증가할 때 포지션을 추가하고 감소할 때 포지션을 줄이기 위해 스케일링 전략을 사용하는 것과 같은 포지션 관리를 최적화하십시오.
  4. MVA, PVT 등과 같은 다른 부피 및 가격 지표와 결합하여 승률을 향상시키기 위해 공동 신호를 구성합니다.

요약

이 전략은 OBV와 MA 크로스오버를 기반으로 한 간단한 트렌드 추적 방법을 보여줍니다. 이 전략의 장점은 명확한 논리, 신속한 트렌드 캡처 및 별도의 입출출 MAs를 통해 유연한 보유 제어입니다. 그러나 이의 단점은 위험 관리 조치 및 신호 확인 방법의 부족을 포함합니다. 더 강력한 전략 성능을 얻기 위해 트렌드 필터링, 매개 변수 최적화, 위치 관리 및 공동 신호와 같은 분야에서 개선이 가능합니다. 이 전략은 다른 전략과 함께 사용할 수 있는 가이드 신호로 더 적합합니다.


/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
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/
// © ThousandX_Trader

//@version=5
strategy(title="OBVious MA Strategy [1000X]", overlay=false, 
         initial_capital=10000, margin_long=0.1, margin_short=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         slippage=1, commission_type=strategy.commission.percent, commission_value=0.1)

// Direction Input ///
tradeDirection = input.string("long", title="Direction", options=["long", "short"], group = "Direction Filter")

    ///////////////////////////////////////
   //  1000X OBV MA INDICATOR           //
  ///////////////////////////////////////

// OBV Trend Length Inputs //
long_entry_length = input(190, title="Long Entry MA Length", group = "Moving Average Settings")
long_exit_length = input(202, title="Long Exit MA Length", group = "Moving Average Settings")
short_entry_length = input(395, title="Short MA Entry Length", group = "Moving Average Settings")
short_exit_length = input(300, title="Short Exit MA Length", group = "Moving Average Settings")

// OBV Calculation
obv = ta.cum(ta.change(close) >= 0 ? volume : -volume)

// Calculate OBV Moving Averages
obv_ma_long_entry = ta.sma(obv, long_entry_length)
obv_ma_long_exit = ta.sma(obv, long_exit_length)
obv_ma_short_entry = ta.sma(obv, short_entry_length)
obv_ma_short_exit = ta.sma(obv, short_exit_length)

   ///////////////////////////////////////
  //         STRATEGY RULES            //
 ///////////////////////////////////////

longCondition = ta.crossover(obv, obv_ma_long_entry) and tradeDirection != "short" and strategy.position_size <= 0
longExitCondition = ta.crossunder(obv, obv_ma_long_exit)
shortCondition = ta.crossunder(obv, obv_ma_short_entry) and tradeDirection != "long" and strategy.position_size >= 0
shortExitCondition = ta.crossover(obv, obv_ma_short_exit)

  ///////////////////////////////////////
 //         ORDER EXECUTION           //
///////////////////////////////////////

// Close opposite trades before entering new ones
if (longCondition and strategy.position_size < 0)
    strategy.close("Short Entry")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long Entry")

// Enter new trades
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// Exit conditions
if (longExitCondition)
    strategy.close("Long Entry")

if (shortExitCondition)
    strategy.close("Short Entry")

  ///////////////////////////////////////
 //            PLOTTING               //
///////////////////////////////////////

// Plot OBV line with specified color
plot(obv, title="OBV", color=color.new(#2962FF, 0), linewidth=1)

// Conditionally plot Long MAs with specified colors based on Direction Filter
plot(tradeDirection == "long" ? obv_ma_long_entry : na, title="Long Entry MA", color=color.new(color.rgb(2, 130, 228), 0), linewidth=1)
plot(tradeDirection == "long" ? obv_ma_long_exit : na, title="Long Exit MA", color=color.new(color.rgb(106, 168, 209), 0), linewidth=1)

// Conditionally plot Short MAs with specified colors based on Direction Filter
plot(tradeDirection == "short" ? obv_ma_short_entry : na, title="Short Entry MA", color=color.new(color.rgb(163, 2, 227), 0), linewidth=1)
plot(tradeDirection == "short" ? obv_ma_short_exit : na, title="Short Exit MA", color=color.new(color.rgb(192, 119, 205), 0), linewidth=1)


관련

더 많은