
Эта стратегия является системой слежения за тенденциями, основанной на пересечении двух равнозначных линий, которая использует пересечение двух простых движущихся средних (SMA) в краткосрочной и долгосрочной перспективе для создания четкого многополосного торгового сигнала. Эта стратегия разработана в кратком и понятном виде, легко понятна и реализуема, особенно подходит для трейдеров, которые хотят овладеть основными принципами пересечения движущихся средних.
В основе стратегии лежит взаимодействие двух простых скользящих средних (SMA):
Логика генерирования торговых сигналов:
Процесс исполнения сделки:
Стратегия также позволяет пользователям настраивать источник цены (по умолчанию цена открытия) и продолжительность среднелинейного цикла, чтобы адаптироваться к различным рыночным условиям или стилям торговли.
В результате глубокого анализа кода стратегии мы можем выделить следующие очевидные преимущества:
Несмотря на то, что эта стратегия была разработана в кратком и эффективном виде, существуют следующие потенциальные риски:
Частые сделки на рынках волатильности: в рынок волатильности или волатильности, краткосрочные и долгосрочные средние линии могут часто пересекаться, что приводит к избыточному количеству торговых сигналов и ненужным торговым затратам
Отсталость: скользящие средние по своей сути являются отсталыми, сигналы могут быть сделаны только тогда, когда тренд уже развился или близок к завершению
Риск ложного прорыва: цены могут пересечь среднюю линию и вернуться к прежней тенденции, что приведет к ложному сигналу
Отсутствие механизмов остановки убытков: отсутствие четких установок для остановки убытков в текущей стратегии может привести к большим убыткам в сильной обратной ситуации
Чувствительность параметров: эффективность стратегии чувствительна к выбору длины среднелинейного цикла, неправильные параметры могут привести к значительному изменению эффективности стратегии
На основе глубокого анализа кода, я предлагаю следующие направления оптимизации:
Добавление фильтра тренда: введение ADX, индикатора интенсивности тренда или оценки относительной позиции цены к средней линии, генерирование сигналов только в подтвержденной трендовой среде, избежание частых торгов на колеблющихся рынках
Внедрение механизма динамического остановки: установление динамического уровня остановки на основе ATR или других показателей волатильности, защита прибыли и ограничение максимального риска для одной сделки
Оптимизация времени входа: рассмотреть возможность использования небольших циклов подтверждения или ожидания обратного вызова после генерации сигнала для получения лучшей цены исполнения
Повышение фильтрации объемов сделок: увеличение подтверждения объемов сделок на основе перекрестных сигналов и выполнение сделок только в том случае, если объем сделок также поддерживает изменение направления
Реализация адаптивных среднелинейных циклов: автоматическая коррекция среднелинейных циклов в зависимости от волатильности рынка, использование более длинных циклов в условиях высокой волатильности и более коротких циклов в условиях низкой волатильности
Добавление механизма для открытия и сохранения складов в группах: вместо того, чтобы создавать все склады за один раз, они будут создаваться поэтапно, чтобы снизить риск выбора временных точек
Двухлинейная перекрестная стратегия отслеживания тенденций - это простая и мощная количественная торговая система, генерирующая четкие торговые сигналы через перекрестные краткосрочные и долгосрочные движущиеся средние. Ее основные преимущества заключаются в простоте эксплуатации, визуальной интуиции и автоматическом механизме обратного отсчета, позволяющем трейдерам объективно следить за тенденциями рынка. Однако эта стратегия также сопряжена с рисками, такими как частота торговли на шокирующем рынке и задержка сигнала.
Эта основная стратегия может быть значительно усилена путем добавления фильтров тренда, внедрения механизмов динамического остановки убытков, оптимизации времени входа и увеличения объема подтверждения сделок. В частности, в сочетании с другими техническими показателями для фильтрации сигналов и оптимизации управления рисками будет способствовать повышению эффективности стратегии в различных рыночных условиях.
Для новичков, желающих начать количественную торговлю, это идеальная отправная точка; для опытных трейдеров это обеспечивает прочную основу для дальнейшей настройки и оптимизации. Важно отметить, что любые улучшения, принятые, должны быть оценены с помощью строгих обратных проверок и проверки вперед, чтобы убедиться, что стратегические улучшения действительно добавляют долгосрочную ценность.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-24 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//@version=6
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @author = Da_mENIZ
// © denis_zvegelj
// last change 20.Mar.2025
//
// Simple MA Crossover strategy that shows on the chart with Long/Short indicators. Feel free to use it to suit
// your needs
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy("DZ Simple MA Crossover Strategy", shorttitle="DZ_MACross", overlay=true, calc_on_every_tick=true)
// Define the moving average lengths
i_src_price = input.source (open, "Price source", group="Main Settings")
i_shMA_len = input.int (9, "Short MA Length", minval=1, group="Main Settings")
i_loMA_len = input.int (21, "Long MA Length", minval=6, group="Main Settings")
// Calculate the moving averages
short_MA = ta.sma(i_src_price, i_shMA_len)
long_MA = ta.sma(i_src_price, i_loMA_len)
// Plot the moving averages on the chart
plot(short_MA, color=color.red, linewidth=2, title="Short MA")
plot(long_MA, color=color.blue, linewidth=2, title="Long MA")
// Generate the buy and sell signals
long_Cond = ta.crossover(short_MA, long_MA)
short_Cond = ta.crossunder(short_MA, long_MA)
// Place the orders based on conditions
if (long_Cond)
strategy.close("Short", immediately = true, comment = "Close")
strategy.entry("Long", strategy.long, comment = "Enter")
label.new(bar_index+1, open, "Long\n" + str.tostring(open), style=label.style_label_down, color=color.blue, textcolor=color.white, yloc=yloc.abovebar)
if (short_Cond)
strategy.close("Long", immediately = true, comment = "Close")
// strategy.entry("Short", strategy.short, comment = "Short\n" + str.tostring(open))
strategy.entry("Short", strategy.short, comment = "Enter")
label.new(bar_index+1, open, "Short\n" + str.tostring(open), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)