Стратегия торговли на основе пересечения трендов


Дата создания: 2023-10-07 09:56:30 Последнее изменение: 2023-10-07 09:56:30
Копировать: 0 Количество просмотров: 637
1
Подписаться
1617
Подписчики

Обзор

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

Принципы

Эта стратегия использует два движущихся средних: 7-дневный средний как быстрая линия и 5-месячный средний как медленная линия. Быстрая линия быстрее улавливает изменения цен, медленная линия устраняет шум и определяет направление тренда.

В частности, стратегия производит сигнал покупки, когда 7-я линия пересекает майскую линию вверх, и сигнал продажи, когда 7-я линия пересекает майскую линию вверх. Также стратегия производит визуальную маркировку времени, когда сигнал производится.

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

Эта стратегия имеет следующие преимущества:

  1. Теория основана на простом и надежном принципе, основанном на широко известном принципе пересечения скользящих средних.

  2. Используя только две скользящие средние, выбор параметров прост и легко реализуется.

  3. Использование комбинации быстрого и медленного курса позволяет эффективно идентифицировать тенденции и фильтровать рыночный шум.

  4. Используя различные циклические средние линии, они могут улавливать изменения тенденций в разных временных масштабах.

  5. Это очень просто, код понятен, логика понятна.

  6. Визуальные сигналы указывают на то, что операционные решения должны быть более четкими.

Риск

Однако эта стратегия также несет в себе некоторые риски:

  1. На основе только равнолинейного перекрестного действия, легко создать ошибочный сигнал.

  2. Невозможно эффективно оценить, насколько сильна или слаба тенденция, и часто может быть приостановлена во время землетрясения.

  3. Фиксированный средний цикл не может адаптироваться к изменениям рынка и требует оптимизации параметров.

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

  5. На более простой теоретической основе, эффект может быть снижен, а прибыль ограничена.

Направление оптимизации

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

  1. Добавление других индикаторов для определения точек купли-продажи, например, индикатор KDJ для определения перекупа и перепродажи.

  2. Добавление механизмов для предотвращения убытков, таких как отслеживание убытков и предотвращение их увеличения.

  3. Оптимизация параметров среднелинейного цикла для адаптации к различным циклам.

  4. Повышение фильтрации трафика, чтобы избежать ложных прорывов.

  5. Оценка сильных и слабых тенденций, например, вычисление среднелинейного скольжения, операции с разной интенсивностью.

  6. В сочетании с более детальным анализом временных циклов, можно судить о том, будет ли тенденция продолжаться.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
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/
// © dadashkadir

//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma
    ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al  = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al,  title = "Giriş",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

FromDay    = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear   = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay      = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if al
    strategy.entry("Al", strategy.long, when=Timerange())
if sat
    strategy.entry("Sat", strategy.short, when=Timerange())