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

Автор:Чао Чжан, Дата: 2024-03-22 15:49:28
Тэги:

img

Обзор стратегии

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

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

Основными принципами этой стратегии являются следующие:

  1. Вычислить верхние, средние и нижние полосы полос Боллинджера. Верхние и нижние полосы рассчитываются путем сложения и вычитания N раз стандартного отклонения от среднего полосы, где N можно настроить.

  2. Когда цена закрытия превышает нижний диапазон и ранее не открывалась ни одна позиция, стратегия открывает длинную позицию; когда цена закрытия превышает верхний диапазон и ранее не открывалась ни одна позиция, стратегия открывает короткую позицию.

  3. После открытия длинной позиции, если цена закрытия прорывается вверх через среднюю полосу, считается, что сформировался восходящий тренд, и переменная baseCrossed отмечается как истинная. После открытия короткой позиции, если цена закрытия прорывается вниз через среднюю полосу, baseCrossed также отмечается как истинная.

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

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

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

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

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

  2. Динамическое добавление позиций: на этапе отступления после формирования тренда стратегия будет постепенно добавлять позиции, которые могут получить более высокую прибыль на трендовых рынках.

  3. Гибкие параметры: параметры полос Боллинджера, такие как значения N и P, могут быть гибко скорректированы в соответствии с различными характеристиками рынка и стилями торговли.

  4. Сильная адаптивность: Болинджерская полоса - классический технический индикатор с хорошей способностью улавливать тенденции. В сочетании с динамическим управлением позициями он может играть стабильную роль на различных финансовых рынках.

  5. Ясная логика: условия открытия и закрытия и логика добавления и уменьшения позиций этой стратегии очень ясны и просты в понимании, что удобно для трейдеров для понимания и контроля.

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

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

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

  3. Экстремальные ситуации: в экстремальных ситуациях (таких как резкие подъемы и падения) тенденция полос Боллинджера может быть ненормальной, что приводит к неудаче стратегии.

  4. Настройки параметров: Ненадлежащие настройки параметров серьезно повлияют на производительность этой стратегии. Например, слишком низкое значение N приведет к частым транзакциям, а слишком большое значение N приведет к задержке сигнала.

  5. События черного лебедя: если произойдут крупные политические и экономические события, эта стратегия может подвергнуться большему риску.

Чтобы контролировать вышеуказанные риски, мы можем начать с двух аспектов: 1) разумно установить параметры и оптимизировать параметры для различных целей и рыночных условий; 2) добавить больше фильтрующих условий в стратегию, таких как суждение о тренде, фильтрация волатильности и т. Д., Чтобы улучшить качество сигналов. Кроме того, в фактическом использовании также необходимо хорошо справляться с контролем позиций и управлением рисками и строго контролировать риск одной сделки.

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

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

  2. Фильтрация волатильности: полосы Боллинджера на самом деле являются своего рода индикатором волатильности. Показатели волатильности, такие как ATR и историческая волатильность, могут быть введены для определения волатильности рынка. Позиции могут быть должным образом уменьшены в состояниях высокой волатильности и увеличены в состояниях низкой волатильности, чтобы лучше контролировать риски.

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

  4. Комбинированные стратегии: эта стратегия может быть объединена с другими классическими стратегиями, такими как MACD и RSI, для формирования комбинированных стратегий, повышающих надежность и рентабельность системы.

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

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

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

Резюме

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


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//  Bollinger Bands 1Bb 상하한 크로스 롱숏 실행

strategy(shorttitle="BB", title="Bollinger Bands", overlay=true )
 // bb
length = input.int(12, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
add = input.float(0.98, step = 0.001)
// plot(upper - lower, "Basis", color=color.red, offset = offset)
var bool entryMade = false
var bool basisCrossed = false
var bool upperCrossed = false
var bool lowerCrossed = false
strategy.initial_capital = 50000
if close < lower and not entryMade
    strategy.entry("롱", strategy.long, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossover(close, basis) and entryMade and not upperCrossed
    basisCrossed := true
if close > upper
    upperCrossed := true
if close < lower and entryMade and basisCrossed and not upperCrossed and close < strategy.position_avg_price*add
    strategy.entry("추가롱", strategy.long, strategy.initial_capital/10000)
    basisCrossed := false
if close > upper
    strategy.close("롱")
    strategy.close("추가롱")
    entryMade := false
    basisCrossed := false
    upperCrossed := false
///////////반대 포지션
if close > upper and not entryMade
    strategy.entry("s", strategy.short, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossunder(close, basis) and entryMade and not lowerCrossed
    basisCrossed := true
if close < lower
    lowerCrossed := true
if close > upper and entryMade and basisCrossed and not lowerCrossed and close > strategy.position_avg_price*add
    strategy.entry("추가s", strategy.short, strategy.initial_capital/10000)
    basisCrossed := false
if close < lower
    strategy.close("s")
    strategy.close("추가s")
    entryMade := false
    basisCrossed := false
    upperCrossed := false


Больше