Стратегия динамического отслеживания средней цены


Дата создания: 2024-01-29 15:28:53 Последнее изменение: 2024-01-29 15:28:53
Копировать: 0 Количество просмотров: 567
1
Подписаться
1617
Подписчики

Стратегия динамического отслеживания средней цены

Обзор

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

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

Когда цена акции впервые пересекает 20-дневную простую скользящую среднюю, открывайте дополнительные позиции. Если после этого цена акции снизится до установленного целевого процента убытков, например, 10%, то вкладывайте позиции в указанной пропорции, например, 50% от текущей позиции. Это снижает среднюю стоимость позиции.

В частности, функция “стратегия” устанавливает такие параметры, как разрешение на максимальное количество 4-х пополнений, расчет позиции как процент занятого капитала, первоначальная открытая позиция составляет 10%. Получение 20-дневного простого скользящего среднего значения, открытие позиции при пересечении среднего значения по цене закрытия и отсутствии позиции. Затем рассчитывается плавающий убыток и убыток от держания позиции.

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

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

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

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

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

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

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Динамическая коррекция набора позиций. В зависимости от движения крупных рынков и т. д. можно в режиме реального времени корректировать процент набора позиций.

  2. В сочетании с количественными показателями. Например, можно наблюдать за заметным увеличением объема перевозок для подтверждения обратного сигнала, чтобы избежать ошибочного суждения.

  3. Использование отслеживаемого стопа. После набора запасов применяется постепенный стоп, обеспечивающий контроль потерь в определенном пределе.

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

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

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

//@version=3

// ########################################################################## // 
//
// This scipt is intended to demonstrate how pyramiding can be used to average
// down a position.
//
// We will buy when a stock closes above its 20 day MA and Average down if
// the trade does not go in our favor. We will hold until a profit is made. 
// (which could mean we hold forever)
//
// ########################################################################## //

strategy("Average Down", overlay=true )

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2010, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
// Strategy Inputs
target_perc = input(-10, title='Target Loss to Average Down (%)', maxval=0)/100
take_profit = input(10, title='Target Take Profit', minval=0)/100
target_qty  = input(50, title='% Of Current Holdings to Buy', minval=0)/100 
sma_period  = input(20, title='SMA Period') 

// Get our SMA, this will be used for our first entry 
ma = sma(close,sma_period)

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price
take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
first_long = crossover(close, ma) and strategy.position_size == 0 and window
if (first_long)
    strategy.entry("Long", strategy.long)

// Average Down!
if (pnl <= target_perc)
    qty = floor(strategy.position_size * target_qty)
    strategy.entry("Long", strategy.long, qty=qty)

// Take Profit!
strategy.exit("Take Profit", "Long", limit=take_profit_level)

// Plotting
plot(ma, color=blue, linewidth=2, title='SMA')
plot(strategy.position_avg_price, style=linebr, color=red, title='Average Price')