
Стратегия с адаптивным перекрестным отслеживанием движущихся средних стоп-стоп является количественной торговой стратегией, которая объединяет несколько технических показателей. Стратегия основана на перекрестных сигналах быстрого и медленного простого движущегося среднего значения (SMA) для торговли, а также использует адаптивный отслеживаемый стоп-стоп для управления риском. Стратегия также включает в себя некоторые расширенные функции, такие как размещение позиций на основе волатильности и адаптивные уровни стоп-стоп, чтобы повысить ее адаптивность и устойчивость в различных рыночных условиях.
Основная логика этой стратегии включает в себя следующие ключевые компоненты:
Кроссовая скользящая средняя: используется простая скользящая средняя с двумя различными циклами (SMA), а именно быстрый SMA (дифолтный 5 циклов) и медленный SMA (дифолтный 50 циклов).
Размер позиции: стратегия использует динамический метод размера позиции, основанный на балансе счета и текущей цене. При этом вводится фактор “уверенности”, который позволяет скорректировать долю вложенных средств.
Следить за убытками: внедрение механизма слежения за убытками на основе процентов. Уровень убытков поднимается по мере роста цены, чтобы закрепить прибыль и ограничить отзыв.
Самостоятельно адаптируемая функция: если включена опция “fancy_tests”, стратегия будет использовать динамические стоп-проценты, основанные на стандартной погрешности, что позволит самостоятельно адаптировать уровень стоп-ущерба в зависимости от волатильности рынка.
Логика выхода: стратегия в основном опирается на отслеживание стоп-лосса для ликвидации позиции, без установления фиксированной прибыльной точки.
Следование тренду: используя пересекающиеся скользящие средние, стратегия может улавливать среднесрочные и долгосрочные тенденции, что способствует получению значительных доходов в сильных тенденциях.
Управление рисками: применение механизма отслеживания стоп-лосс позволяет эффективно контролировать нисходящие риски и позволяет свободно расти прибыли.
Самостоятельная адаптация: стратегия может лучше адаптироваться к различным рыночным условиям, корректируя уровень остановки за счет факторов волатильности.
Управление капиталом: Динамическое увеличение позиции помогает увеличить объем торгов по мере роста счета, а также автоматически снижает риск при сокращении счета.
Гибкость: Стратегия предлагает множество регулируемых параметров, таких как скользящая средняя продолжительность, стоп-процент и т. д., которые пользователь может оптимизировать в соответствии с различными рынками и личными предпочтениями риска.
Фальшивые прорывы: в кривых или волатильных рынках могут часто возникать ложные прорывы в движущихся средних, что приводит к многократным остановкам.
Отсталость: движущаяся средняя по своей сути является отсталым показателем, который может не реагировать достаточно быстро в сильно волатильных рынках.
Чрезмерная торговля: если параметры установлены неправильно, это может привести к частым входам и выходам, увеличивая стоимость торгов.
Риск вывода: Несмотря на то, что есть слежение за потерями, в быстро меняющихся рынках все еще может быть большой вывод.
Односторонняя торговля: стратегия в настоящее время заключается в том, чтобы делать больше и не делать ничего, и в нисходящем тренде можно пропустить возможность или понести убытки.
Анализ многократных временных рамок: введение более длительных трендовых показателей, таких как скользящие средние с более длительными периодами, для уменьшения ложных сигналов.
Присоединение к логике дисконтирования: расширение стратегии для поддержки дисконтирования, повышение полноты стратегии и возможности получения прибыли.
Оптимизация времени входа в рынок: учитывайте возможность фильтрации торговых сигналов в сочетании с другими техническими показателями (например, RSI, MACD и т. Д.) для повышения точности входа в рынок.
Оптимизация динамических параметров: внедрение механизмов адаптивной корректировки параметров, например, корректировки циклов скользящих средних на основе динамики волатильности рынка.
Добавление механизмов прибыли: помимо отслеживания стоп-лосса, можно рассмотреть возможность добавления правил прибыли, основанных на технических показателях или фиксированных целях.
Улучшение управления позициями: внедрение более сложных стратегий размещения позиций, таких как основанные на принципах Келли или других методах выравнивания риска.
Добавление фундаментальных фильтров: для торговли акциями можно рассмотреть возможность введения фундаментальных показателей в качестве дополнительных условий фильтрации торгов.
Стратегия самостоятельного отслеживания пересечения скользящих средних является комплексной стратегией, объединяющей несколько концепций количественного трейдинга. Она улавливает тенденции, используя пересечение скользящих средних, управляет рисками отслеживания, а также повышает адаптивность путем корректировки динамических параметров. Несмотря на некоторые присущие риски и ограничения, она имеет потенциал стать стабильной торговой системой с помощью тщательной оптимизации параметров и дальнейшего улучшения стратегии.
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-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/
// © chinmay.hundekari
//@version=5
//@version=5
strategy("test", overlay = true)
// Calculate two moving averages with different lengths.
SLMA = input.int(50,"SMA",minval=10,step=1)
FSMA = input.int(5,"SMA",minval=1,step=1)
fancy_tests = input.bool(true,"Enable Fancy Changes")
longLossPerc = input.float(2, title="Trailing Stop Loss (%)",
minval=0.0, step=0.1) * 0.01
stdMult = input.float(2.0, title="Standard Deviation Multiplier",
minval=0.0, step=0.01)
float fastMA = ta.sma(close, FSMA)
float slowMA = ta.sma(close, SLMA)
float closMA = ta.sma(close, 25)
confidence = 1.0
if (fancy_tests)
longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close
balance = strategy.initial_capital + strategy.netprofit
balanceInContracts = balance* confidence/close
// Enter a long position when `fastMA` crosses over `slowMA`.
if ta.crossover(fastMA, slowMA)
strategy.entry("BUY", strategy.long, qty=balanceInContracts)
//longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
//Trailing Stop loss Code
longStopPrice = 0.0
percLoss = longLossPerc
longStopPrice := if strategy.position_size > 0
//if (strategy.openprofit_percent/100.0 > longLossPerc)
// percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc)
stopValue = close * (1 - percLoss)
math.max(stopValue, longStopPrice[1])
else
0
if strategy.position_size > 0
strategy.exit("STP", stop=longStopPrice)
plot(strategy.position_size > 0 ? longStopPrice : na,
color=color.red, style=plot.style_cross,
linewidth=2, title="Long Stop Loss")
// Enter a short position when `fastMA` crosses under `slowMA`.
//if ta.crossunder(fastMA, closMA)
// strategy.close_all("SEL")//strategy.entry("sell", strategy.short)
// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)
plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)