Стратегия перекрестного использования скользящей средней

Автор:Чао Чжан, Дата: 2023-11-07 15:48:41
Тэги:

img

Обзор

Стратегия пересечения скользящей средней является очень классической стратегией технического анализа. Она рассчитывает скользящие средние различных периодов и наблюдает за их пересечением, чтобы определить тенденцию рынка, чтобы достичь цели покупки низкого и продажи высокого. Эта стратегия подходит для средне- и долгосрочной торговли и может эффективно фильтровать рыночный шум и идентифицировать тенденции.

Принцип

Эта стратегия в основном рассчитывает 10-дневную простую скользящую среднюю (SMA) и 10-дневную треугольную скользящую среднюю (TRIMA). Когда SMA пересекает TRIMA, генерируется сигнал покупки, указывающий на то, что рыночная тенденция изменилась с падения на рост, и мы можем купить. Когда SMA пересекает TRIMA, генерируется сигнал продажи, указывающий на то, что рыночная тенденция изменилась с подъема на падение, и мы можем продать.

В частности, стратегия сначала вводит цену закрытия и определяет длины циклов для расчета SMA и TRIMA.

SMA = (P1 + P2 +... + Pn) / n

где Pn - цена закрытия за последние n дней.

Формула расчета TRIMA:

TRIMA = (SMA1 + SMA2 + SMA3) / 3

В данном случае SMA1, SMA2, SMA3 - это SMA цены закрытия за последние n дней соответственно.

Итак, TRIMA на самом деле SMA, рассчитанная на вершине SMA, которая имеет лучший эффект сглаживания. Когда краткосрочная SMA пересекает длинную TRIMA, это указывает на прорыв краткосрочной скользящей средней, и мы можем покупать. Напротив, когда SMA пересекает ниже TRIMA, это указывает на разрыв ниже краткосрочной скользящей средней, и мы можем продавать.

Преимущества

Наибольшее преимущество этой стратегии заключается в том, что она использует способность движущихся средних эффективно определять тенденции рынка и фильтровать краткосрочный рыночный шум, чтобы покупать низко и продавать высоко. По сравнению с одной движущейся средней, сочетание SMA и TRIMA может улучшить надежность прорывов и уменьшить вероятность ложных прорывов. Кроме того, движущаяся средняя сама по себе имеет хорошую плавность, которая также может играть роль стоп-лосса, чтобы уменьшить вероятность одной стоп-лосс. В целом, эта стратегия очень подходит для средне- и долгосрочной торговли.

Риски

Основной риск этой стратегии заключается в том, что скользящая средняя сама отстает от изменений цен, что может пропустить раннюю стадию тренда, что приведет к позднему вхождению. Кроме того, когда на рынке нет очевидной тенденции, эта стратегия будет производить больше ложных прорывов. Наконец, стратегии скользящих средних больше полагаются на оптимизацию параметров. Если параметры не установлены должным образом, это также сильно повлияет на стратегию.

Руководство по оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизируйте параметры цикла скользящей средней, чтобы найти наилучшую комбинацию с научной точки зрения.

  2. Добавьте фильтрующие показатели, такие как объем торговли, чтобы избежать ложных сигналов при низком объеме торговли.

  3. Комбинируйте индикаторы тренда, такие как MACD, чтобы судить о местных тенденциях и избегать частой торговли на консолидационных рынках.

  4. Принять адаптивные скользящие средние для динамической корректировки параметров цикла, когда рынок вступает в определенные этапы.

  5. Проверьте с помощью нескольких временных рамок, например, рассматривая вход только тогда, когда как ежедневные, так и 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")

Больше