В процессе загрузки ресурсов... загрузка...

Тенденция после стратегии, основанной на перекрестных сигналах OBV и MA

Автор:Чао Чжан, Дата: 2024-04-29 13:48:58
Тэги:OBVМ.А.SMA

img

Обзор

Эта стратегия, получившая название OBVious MA Strategy: Trend Following Strategy Based on OBV and MA Crossover Signals, использует перекресток между индикатором объема баланса (OBV) и скользящими средними для генерирования торговых сигналов. OBV может предоставлять ведущие сигналы тренда, и эта стратегия использует прорывы OBV выше или ниже скользящих средних в качестве условий входа и выхода для улавливания тенденций. Используя отдельные входные и выходные MAs, она позволяет более гибко контролировать периоды хранения. Хотя эта стратегия является простой демонстрацией, она показывает, как эффективно использовать OBV для анализа объема.

Принципы стратегии

  1. Вычислить значение индикатора OBV: если текущая цена закрытия выше, чем предыдущая свеча, добавить текущий объем к OBV; в противном случае вычесть объем.
  2. Вычислить четыре скользящие средние OBV: долгосрочный длинный входный MA, долгосрочный длинный выходный MA, краткосрочный короткий входный MA и краткосрочный короткий выходный MA.
  3. Создание торговых сигналов:
    • Когда OBV пересекает длинный долгосрочный входный MA и направленный фильтр не настроен на короткий, открыть длинную позицию.
    • Когда OBV пересекает длинный долгосрочный выход MA, закрыть длинную позицию.
    • Когда OBV переходит ниже краткосрочного краткосрочного MA входа и направленный фильтр не установлен на длинный, открыть короткую позицию.
    • Когда OBV пересекает пределы краткосрочного короткого выхода MA, закрыть короткую позицию.
  4. Управление торговлей: если будет сгенерирован противоположный сигнал, первоначальная позиция будет закрыта перед открытием новой позиции.

Преимущества стратегии

  1. В полной мере использовать ведущие трендовые сигналы OBV для установления позиций в начале тренда.
  2. Разделение входных и выходных МА позволяет самостоятельно оптимизировать время входа и выхода.
  3. Логика кода проста и понятна, легко понять и улучшить.
  4. Внедрение фильтра направления может избежать частой торговли и снизить затраты.

Стратегические риски

  1. Отсутствуют другие подтверждающие показатели, которые могут генерировать ложные сигналы.
  2. Отсутствие стоп-лосса и управления позициями, с риском увеличения потерь на одной сделке.
  3. Неправильный выбор параметров повлияет на эффективность стратегии.Параметры необходимо оптимизировать на основе различных рыночных характеристик и временных рамок.

Направления оптимизации стратегии

  1. Для улучшения качества сигнала следует рассмотреть возможность внедрения фильтров тренда, таких как направление MA, ATR и т.д.
  2. Различные типы MAs могут использоваться на OBV, такие как EMA, WMA и т. д., чтобы фиксировать тенденции различной скорости.
  3. Оптимизировать управление позициями, например, использовать стратегию масштабирования для добавления позиций при увеличении силы тренда и сокращения позиций при его уменьшении.
  4. Объедините их с другими показателями объема и цены, такими как MVA, PVT и т. д., чтобы создать совместные сигналы для улучшения показателей выигрыша.

Резюме

Эта стратегия демонстрирует простой метод следования трендам, основанный на перекрестках OBV и MA. Ее преимущества - четкая логика, своевременное захват тренда и гибкий контроль задержания через отдельные входные и выходные МА. Однако к ее недостаткам относятся отсутствие мер контроля риска и методов подтверждения сигналов.


/*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)


Связанные

Больше