Стратегия Dual SMA Crossover генерирует торговые сигналы, рассчитывая перекресток двух линий SMA с различными параметрами. Когда более быстрая линия SMA пересекает более медленную линию SMA, генерируется сигнал покупки. Когда более медленная линия SMA пересекает ниже более быстрой линии SMA, генерируется сигнал продажи. Стратегия использует два набора параметров SMA одновременно, один набор для определения точек входа, а другой для определения точек выхода.
Эта стратегия использует два набора параметров SMA,smaB1
, smaB2
для сигналов покупки, иsmaS1
, smaS2
для сигналов продажи, представляющих более медленные и более быстрые скользящие средние соответственно.smaB1
кресты сверхуsmaB2
, сигнал покупки генерируется.smaS2
кресты внизуsmaS1
Это позволяет гибко регулировать условия входа и выхода, чтобы адаптироваться к изменяющейся рыночной среде.
В частности, эта стратегия отслеживает ситуации перекрестного пересечения между двумя линиями SMA, рассчитанные на основе цены закрытия, чтобы определить сроки покупки и продажи. Когда более быстрая линия SMA пересекает более медленную линию SMA, считается, что ценовая тенденция растет, поэтому в это время идет длинный. А когда более медленная линия SMA пересекает ниже более быстрой линии SMA, ценовая тенденция меняется в сторону падения, поэтому выходите из длинных позиций.
Основными преимуществами этой стратегии являются:
Существуют также некоторые риски, связанные с этой стратегией:
Чтобы контролировать вышеуказанные риски, для улучшения стратегии могут использоваться такие методы, как оптимизация параметров SMA, динамический стоп-лосс для закрепления прибыли и т. д.
Некоторые направления оптимизации для этой стратегии:
Стратегия SMA Crossover генерирует простые и эффективные торговые сигналы путем расчета ситуаций перекрестного взаимодействия между двумя линиями SMA. Гибкость корректировки параметров делает эту стратегию адаптируемой к различным продуктам, и это широко используемая стратегия тренда. Дальнейшие улучшения этой стратегии могут быть внесены посредством оптимизации параметров, фильтрации сигналов и т. Д. для генерации более надежных сигналов.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 5m basePeriod: 1m 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/ // © melihtuna //@version=4 strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent) smaB1 = input(title="smaB1",defval=377) smaB2 = input(title="smaB2",defval=200) smaS1 = input(title="smaS1",defval=377) smaS2 = input(title="smaS2",defval=200) smawidth = 2 plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1') plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2') plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1') plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2') // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2020, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false longCondition = crossover(sma(close, smaB1),sma(close, smaB2)) if (window() and longCondition) strategy.entry("BUY", strategy.long) shortCondition = crossover(sma(close, smaS2),sma(close, smaS1)) if (window() and shortCondition) strategy.entry("SELL", strategy.short)