Стратегия пирамиды на основе индикатора OBV


Дата создания: 2023-12-08 15:58:29 Последнее изменение: 2023-12-08 15:58:29
Копировать: 0 Количество просмотров: 705
1
Подписаться
1621
Подписчики

Стратегия пирамиды на основе индикатора OBV

Обзор

Эта стратегия, называемая “пирамида OBV”, основана на OBV-индикаторе и использует пирамидальный подход к пополнению позиций. После появления тренда, в течение нескольких пополнений, отслеживая тенденцию, получается прибыль.

Стратегический принцип

Эта стратегия использует индикатор OBV для определения направления тренда. Индикатор OBV основан на изменении объема сделок для определения ценового тренда, изменение объема сделок отражает отношение участников рынка.

Стратегия подтверждает формирование многоголового тренда путем определения того, проходит ли OBV через 0-угол. При формировании многоголового тренда устанавливается пирамидальный накладный, который может быть наложен не более 7 раз. Для получения прибыли путем отслеживания тренда устанавливается механизм стоп-стоп-лосс-выхода.

Анализ преимуществ

Наибольшим преимуществом стратегии является то, что она может улавливать тренды, отслеживать их появление с помощью пирамиды, и иметь большой потенциал для получения прибыли. Кроме того, стратегия контролирует риск и имеет параметры для остановки и убытков.

В частности, преимущества проявляются в следующем:

  1. Использование OBV для определения точного направления тренда;
  2. В частности, пирамида позволяет отслеживать тенденции прибыли.
  3. Настройка сдерживания сдерживания сдерживания сдерживания сдерживания;
  4. Логика стратегии проста, ясна и понятна.

Анализ рисков

Основные риски этой стратегии исходят из двух аспектов:

  1. Ошибки в оценке OBV, которые приводят к упущенным возможностям или ошибочным позициям;
  2. “Очень рискованно, слишком рискованно.

Решение проблемы:

  1. Оптимизация параметров OBV для обеспечения точности суждений;
  2. Допустим, что вы хотите, чтобы ваш бизнес был более безопасным, чем ваш бизнес.

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

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

  1. Оптимизация параметров OBV для повышения точности суждения;
  2. Оптимизация количества и суммы депозитов;
  3. Оптимизация стоп-стоп-лосс;
  4. В сочетании с другими показателями, чтобы избежать одиночного оценки риска OBV.

Оптимизация этого контента позволяет сделать стратегию более стабильной, более управляемой и более масштабируемой.

Подвести итог

Стратегия в целом очень практична. Она использует индикаторы OBV для определения направления тенденции, а затем отслеживает тенденцию через пирамиду по наращиванию позиций. Логика стратегии ясна, понятна и легко воспринимается.

Исходный код стратегии
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelZioni

//@version=4

strategy(title = " OBV Pyr", overlay = true, pyramiding=5,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 20, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
 
//
 
filter=true 
src = close


LengthOBV = input(20)

nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume 
c = cum(nv) 
c_tb = c - sma(c,LengthOBV) 

// Conditions

longCond = crossover(c_tb,0)
//shortCond =crossunder(cnv_tb,0)

//

longsignal  = (v1 > v2 or filter == false ) and longCond
//shortsignal = (v1 < v2 or filter == false ) and shortCond 
 
//set take profit
 
ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick
 
//set take profit
 
LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick
 
 
////Order Placing
//
strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)
//
strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)
//
strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)
//
strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)
//
strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)
//
strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)
//
strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)
//
//
//
if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)