
Стратегия пересечения скользящих средних является очень классической технической аналитической стратегией. Она определяет тенденции рынка путем вычисления скользящих средних различных циклов и наблюдения за их пересечением с целью достижения низкой покупки и высокой продажи. Эта стратегия применяется для торговли средними и длинными линиями, которая может эффективно фильтровать рыночный шум и идентифицировать тенденции.
Эта стратегия основана на вычислении 10-дневных простых движущихся средних SMA и 10-дневных треугольных движущихся средних TRIMA. Когда SMA пересекает TRIMA, это дает сигнал к покупке.
В частности, сначала вводится цена закрытия и определяется длина цикла для расчета SMA и TRIMA.
SMA = (P1 + P2 + … + Pn) / n
где Pn - цена закрытия за последние n дней.
Формула TRIMA состоит в следующем:
TRIMA = (SMA1 + SMA2 + SMA3) / 3
где SMA1, SMA2 и SMA3 - это соответственно закрытые цены за последние n дней.
Таким образом, TRIMA является эквивалентом повторного SMA для SMA с лучшим эффектом сглаживания. Когда SMA с коротким периодом проходит через TRIMA с длинным периодом, можно купить. Наоборот, когда SMA с низким TRIMA проходит через BREAK ниже среднего периода, можно продать.
Наибольшим преимуществом этой стратегии является использование способности распознавать тенденции движущихся средних, которые могут эффективно идентифицировать рыночные тенденции, удалять краткосрочный рыночный шум и реализовывать низкие покупки и высокие продажи. По сравнению с одной движущейся средней, комбинированное использование SMA и TRIMA может повысить надежность прорыва и снизить вероятность ложного прорыва. Кроме того, движущаяся средняя сама по себе обладает хорошей плавкостью, а также может иметь эффект остановки убытков и снизить вероятность одиночных стоп-убытков.
Основным риском этой стратегии является то, что движущаяся средняя сама отстает от ценовых изменений и может пропустить предыдущие периоды тренда, что приводит к задержке входа. Кроме того, когда рынок не имеет очевидной тенденции, эта стратегия может привести к большему количеству ложных прорывов.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация циклических параметров движущихся средних, использование более научных методов для поиска оптимальных комбинаций циклов.
Повышение показателей фильтрации загрузки, чтобы избежать ошибочных сигналов при плохом загрузке.
В сочетании с трендовыми показателями, такими как MACD, можно определить локальные тенденции и избежать повторных сделок во время ликвидации.
Применение адаптивных скользящих средних, динамически корректирующих циклические параметры, когда рынок входит в определенный этап.
Проверка проводится с использованием нескольких временных рамок, например, только в том случае, если пробивается дневной и 4-часовой линии.
Стратегия пересечения движущихся средних линий - это простая и практическая стратегия технического анализа, очень подходящая для торговли позициями средних и длинных линий, которая позволяет эффективно идентифицировать направление тенденции. Однако эта стратегия также имеет определенную отсталость, требующую фильтрационной оптимизации в сочетании с индикатором определения тенденции, чтобы снизить вероятность ложного сигнала. Если параметры оптимизированы должным образом, она может защитить средства, а также использовать большие возможности для тренда.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//TMA strategy I came across, uses sma to display entry/exit points for both margin and non margin trading. The buy/sell signals as well as syntax are hidden behind comments if you scroll down.
//Change the commented fields for margin or spot trading!
//@version=3
strategy("MP Rollercoaster Strat", overlay=true)
bgcolor ( color=black, transp=0, title='Blackground', editable=true)
x = input(close, "Red")
n = input(10, "periods")
trima = sma(sma(x,n), n)
kisa=input(5, "Green")
sma = sma(close, kisa)
bull = (sma>trima)
fill(plot(sma, color = green), plot(trima, color=red), bull ? green : red)
//Conditions
buy_signal = crossover(sma,trima)
sell_signal = crossunder(sma,trima)
plotshape(sell_signal, style=shape.triangleup, color = red, text="Short")
plotshape(buy_signal, style=shape.triangledown, color = green, text="Long")
//plotshape(sell_signal, style=shape.triangleup, color = red, text="Sell")
//plotshape(buy_signal, style=shape.triangledown, color = green, text="Buy")
alertcondition(sell_signal, title = 'Short', message = 'e= s= c=position b=long t=market l= | delay=30 | e= s= b=short l= t=market q=0.01')
alertcondition(buy_signal, title = 'Long', message = 'e= s= c=position b=short t=market l= | delay=30 | e= s= b=long l= t=market q=0.01')
//alertcondition(sell_signal, title = 'Sell', message = 'e= s= c=order b=buy | delay=3 | e= b=sell q=99% p=0.70% u=currency')
//alertcondition(buy_signal, title = 'Buy', message = 'e= s= c=order b=sell | delay=30 | e= b=buy q=80 p=0.1% u=currency')
testStartYear = input(2018, "From Year")
testStartMonth = input(4, "From Month")
testStartDay = input(1, "From Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2019, "To Year")
testStopMonth = input(1, "To Month")
testStopDay = input(1, "To Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
if testPeriod()
if buy_signal
strategy.entry("Long", true)
if sell_signal
strategy.close("Long")