
Обзор
Двухлинейная скрещенная динамическая позиция - это количественная торговая стратегия, основанная на скрещенных сигналах двух разных периодов простой движущейся средней (SMA). Эта стратегия использует скрещенные краткосрочные и долгосрочные движущиеся средние для определения тенденций рынка и корректирует направление позиции в зависимости от скрещенных сигналов и динамики цены в отношении долгосрочной скрещенной линии.
Стратегический принцип
- Вычисление скользящих средних: стратегия использует две простые скользящие средние ((SMA) на 9 и 21 день.
- Сигналы транзакций генерируются:
- Сигнал покупки: краткосрочная средняя линия ((9-дневная SMA) на длинную среднюю линию ((21-дневная SMA)
- Продающий сигнал: долгосрочная средняя линия вниз от краткосрочной
- Управление депозитами:
- Открытие позиции: открытие позиции с несколькими головами при появлении сигнала покупки; открытие позиции с несколькими головами при появлении сигнала продажи
- Позиции на равных и на обратных позициях:
a) при удержании позиции с множественными заголовками, если цена открытия ниже средней долгосрочной линии или появляется сигнал продажи, ликвидировать множественные заголовки и открыть пустую позицию
b) при удержании позиции с пустыми позициями, если цена открытия выше долгосрочной средней линии или появляется сигнал покупки, вычеркнуть пустую позицию и открыть позицию с многообещающими позициями
- Управление риском: стратегия не устанавливает фиксированный стоп-лосс, а управляет риском путем динамического изменения направления удержания позиции
Стратегические преимущества
- Следить за тенденциями: использование среднелинейных перекрестков для захвата рыночных тенденций, что помогает получить значительную прибыль в больших тенденциях
- Динамическое удержание позиции: гибкое корректирование позиции в зависимости от отношения цены к долгосрочной средней линии, повышение гибкости и адаптивности стратегии
- Простые и понятные: логика стратегии ясна, ее легко понять и реализовать
- Параметры регулируемы: можно адаптироваться к различным рыночным условиям и торговым видам путем корректировки среднелинейного цикла
- Округлосуточная торговля: стратегия может работать в различных рыночных условиях без ограничений от состояния рынка
- Автоматизированное исполнение: стратегии могут быть запрограммированы для полностью автоматизированных сделок с уменьшением человеческого эмоционального вмешательства
- Управление рисками: динамическая коррекция направления удержания позиции, предотвращение возможных потерь от скольжения, вызванных фиксированными стоп-лоссами
Стратегический риск
- Недостатки рыночных потрясений: частота торговли может привести к убыткам в рыночных поворотах или потрясениях
- Отсталость: скользящая средняя по своей сути является отсталым показателем, который может пропустить начальный этап резкого развития событий
- Риск ложного прорыва: краткосрочные колебания цен могут привести к ложному прорыву средней линии и вызвать ошибочные торговые сигналы
- Отсутствие остановок: стратегия не устанавливает фиксированные остановки, в крайних случаях может быть более крупным убытком
- Чрезмерная торговля: частое изменение позиций может привести к более высоким торговым затратам
- Чувствительные к параметрам: показатели стратегии более чувствительны к выбору среднелинейных параметров, разные параметры могут привести к совершенно разным результатам
- Ограничения одного индикатора: полагаясь только на равномерное скрещивание, можно игнорировать другую важную рыночную информацию
Направление оптимизации стратегии
- Введение дополнительных показателей: в сочетании с RSI, MACD и другими показателями для повышения надежности сигнала
- Оптимизация времени входа: увеличение количества сделок, волатильность и другие фильтрующие условия, уменьшение ложных прорывов
- Присоединение к механизму остановки: установка фиксированного остановки или отслеживания остановки, контроль за риском отдельной сделки
- Корректировка размеров позиций: корректировка размеров позиций в зависимости от динамики волатильности рынка, оптимизация управления капиталом
- Повышение оценки состояния рынка: выявление тенденций и колебаний рынка, применение различных стратегий в различных состояниях рынка
- Выбор оптимальных параметров: поиск оптимальной комбинации среднелинейных параметров с использованием исторических данных
- Добавление фильтра силы тренда: введение таких показателей, как ADX, для торговли только на рынках с сильной тенденцией
- Применение параметров адаптации: автоматическая коррекция среднелинейного цикла в зависимости от волатильности рынка для повышения адаптивности стратегии
Подвести итог
Двухлинейная скрещивающаяся динамическая позиция является классическим и практическим методом количественной торговли, используемым для выявления рыночных тенденций путем улавливания сигналов скрещивания скрещивания и динамической корректировки позиций. Эта стратегия проста, легко понятна, полностью автоматизирована, имеет хорошую способность отслеживать тенденции и гибкость. Однако, стратегия также имеет потенциальные риски, такие как плохая производительность рынка во время колебаний, задержка сигнала.
Исходный код стратегии
/*backtest
start: 2024-06-29 00:00:00
end: 2024-07-29 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10)
// Parâmetros das Médias Móveis
shortlen = input.int(9, "Short MA Length", minval=1)
longlen = input.int(21, "Long MA Length", minval=1)
// Cálculo das Médias Móveis
short = ta.sma(close, shortlen)
long = ta.sma(close, longlen)
// Plotagem das Médias Móveis
plot(short, color=color.orange, title="Short MA")
plot(long, color=color.green, title="Long MA")
// Sinal de Compra baseado no cruzamento das médias móveis
buySignal = ta.crossover(short, long)
// Sinal de Venda (Short) baseado no cruzamento das médias móveis
sellSignal = ta.crossunder(short, long)
// Plotagem dos Sinais de Compra e Venda
plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal")
// Condições para alertas
alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal")
// Lógica da Estratégia de Backtest
if (buySignal)
// Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa
if (strategy.position_size < 0)
strategy.close("Short", comment="Closing Short Position before Long Entry")
strategy.entry("Long", strategy.long)
// Alerta de compra
alert("MA Cross Buy Signal", alert.freq_once_per_bar_close)
if (strategy.position_size > 0)
// Se o preço abrir abaixo da média longa
if (open < long)
strategy.close("Long", comment="Price Opened Below Long MA")
strategy.entry("Short", strategy.short, comment="Switched to Short")
// Alerta de venda
alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close)
// Se a média móvel curta cruzar abaixo da média móvel longa
else if (sellSignal)
strategy.close("Long", comment="Short MA Crossed Below Long MA")
strategy.entry("Short", strategy.short, comment="Switched to Short")
// Alerta de venda
alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close)
if (strategy.position_size < 0)
// Se o preço abrir acima da média longa
if (open > long)
strategy.close("Short", comment="Price Opened Above Long MA")
strategy.entry("Long", strategy.long, comment="Switched to Long")
// Alerta de compra
alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)