Эта стратегия динамически выбирает различные типы скользящих средних по нескольким временным рамкам для генерации торговых сигналов.
Стратегия позволяет выбирать из SMA, EMA, TEMA, WMA и HMA скользящих средних, с настраиваемой длиной периода. Различные типы скользящих средних будут графизироваться динамически на основе выбора.
В частности, стратегия сначала определяет период обратного тестирования на основе входных параметров.
Соответствующая скользящая средняя будет отображаться на основе выбора. Она будет длинной, когда цена закрытия выше скользящей средней, и короткой, когда ниже.
Комбинируя различные типы скользящих средних, стратегия может сгладить данные о ценах и отфильтровать шум рынка, чтобы генерировать более надежные торговые сигналы.
Риски могут быть уменьшены:
Стратегия может быть улучшена в нескольких аспектах:
Добавить другие фильтры для более стабильных сигналов
Например, показатели объема для предотвращения ложных прорывов без подтверждения объема.
Оптимизировать логику входа и выхода
Установите ценовые каналы и прекратите потери, чтобы уменьшить ненужные потери.
Периоды динамической скользящей средней
Использовать более длительные периоды в период сильных тенденций и более короткие периоды во время консолидации.
Улучшить управление деньгами
Корректировка размеров позиций на основе вывода средств и получения прибыли.
Стратегия сочетает в себе различные скользящие средние за разные временные рамки, чтобы генерировать относительно стабильные трендовые эффекты.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000) qty = input(100000000, "Buy quantity") testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"]) len1 = input(7, minval=1, title="Period") s=sma(close,len1) e=ema(close,len1) xEMA1 = ema(close, len1) xEMA2 = ema(xEMA1, len1) xEMA3 = ema(xEMA2, len1) t = 3 * xEMA1 - 3 * xEMA2 + xEMA3 f_hma(_src, _length)=> _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length))) h = f_hma(close, len1) w = wma(close, len1) ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na buy= close>ma sell= close<ma alertcondition(buy, title='buy', message='buy') alertcondition(sell, title='sell', message='sell') ordersize=floor(strategy.equity/close) if testPeriod() strategy.entry("long",strategy.long,ordersize,when=buy) strategy.close("long", when = sell )