Стратегия перекрестки двойной скользящей средней является относительно простой количественной торговой стратегией. Она рассчитывает среднюю цену закрытия 7 свечей и среднюю цену закрытия 20 свечей. Когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю снизу, это сигнализирует о длинной позиции. Когда краткосрочная скользящая средняя пересекает ниже долгосрочной скользящей средней, это сигнализирует о короткой позиции. Это позволяет стратегии захватить точки перегиба в среднесрочных тенденциях рынка.
Основная логика этой стратегии состоит в том, чтобы рассчитать среднюю цену закрытия недавних 7 свечей (за исключением текущей свечи) как краткосрочную скользящую среднюю, а среднюю цену закрытия 20 свечей (за исключением недавних 7 свечей) как долгосрочную скользящую среднюю. Когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю снизу, это указывает на то, что рынок переходит от падения к росту, сигнализируя о длинной позиции. Когда краткосрочная скользящая средняя пересекается ниже долгосрочной скользящей средней сверху, это указывает на то, что рынок переходит от подъема к снижению, сигнализируя о короткой позиции.
После длинного сигнала длинная позиция будет открыта с использованием всего капитала счета. После короткого сигнала существующая длинная позиция будет закрыта сначала перед открытием короткой позиции с использованием той же суммы. Каждая открытая позиция будет удерживаться на 20-25 свечей. В течение этого периода, если произойдет потеря, 50% позиции будет остановлено. Если произойдет достаточная прибыль, 50% позиции будет взята прибыль.
Преимущества этой простой стратегии перекрестного использования двойной скользящей средней составляют:
В качестве простой тенденции следующей стратегии, он также сталкивается с некоторыми потенциальными рисками:
Оптимизации для решения этих рисков:
В качестве простой стратегии перекрестки двойной скользящей средней основными оптимизациями являются:
Оптимизировать параметры MA, тестировать различные краткосрочные и долгосрочные комбинации MA для наилучших параметров;
Добавить другие индикаторы фильтрации, такие как объем, индекс волатильности и т. д., чтобы избежать ложных сигналов на нестабильных рынках;
Оптимизировать стратегии стоп-лосса и прибыли, тестировать различные коэффициенты, чтобы найти оптимальный;
Испытать эффективность в различных циклах рынка и оптимизировать период хранения;
Добавьте алгоритмы машинного обучения, оптимизируйте параметры через обратное тестирование для большей надежности.
В общем, это простая стратегия двойного скользящего среднего перекрестка, использующая перекрестки MA в разные периоды для определения среднесрочных точек изменения тренда. Он имеет высокую практичность и прост в эксплуатации. Но он также имеет ограничения в эффективном определении истинных точек переворота рынка. Необходимы дальнейшие оптимизации при добавлении фильтров, настройки параметров, машинного обучения и т. Д., Чтобы сделать его более надежным в различных рыночных условиях для последовательной альфы.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © nrathi2211 //@version=5 strategy("Closing Prices", overlay=true) //variables closingB7 = ta.highest(close, 7)[7] closingB14 = ta.highest(close, 7)[20] highB14 = ta.highest(low, 50)[7] capital = 50000 //functions qty_find(float price) => capital / int(price) profit_take() => profit = strategy.opentrades.profit(strategy.opentrades - 1) profit*.95 if(closingB7 < closingB14) if(ta.crossover(close, closingB7)) strategy.entry("long_buy", strategy.long, qty_find(close)) current_profit = strategy.opentrades.profit(strategy.opentrades - 1) if(current_profit < 0) strategy.close("Exit long_buy SL", "long_buy", qty_percent = 50) else if(current_profit < profit_take()) strategy.close("Exit long_buy TP", "long_buy", qty_percent = 50) if(ta.crossunder(close, closingB7)) strategy.exit("long_sell", from_entry = "long_buy", stop = closingB7) plot(closingB7, "cl", color.green, 2) //plot(closingB14, "cl", color.red, 2) plot(highB14, "cl", color.purple, 2)