Стратегия торговли с перекрестным трендом бык/медведь

Автор:Чао Чжан, Дата: 2023-10-07 09:56:30
Тэги:

Обзор

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

Принцип

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

В частности, стратегия рассчитывает 7-дневную простую скользящую среднюю (SMA) и 5-месячную SMA, выставляя их на графике цен. Когда 7-дневная линия пересекает 5-месячную линию снизу, генерируется сигнал покупки. Когда 7-дневная линия пересекает 5-месячную линию сверху, запускается сигнал продажи. Стратегия также визуализирует периоды сигнала.

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

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

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

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

  3. Быстрые и медленные линии эффективно работают вместе, чтобы определить тенденции и отфильтровать шум рынка.

  4. Различные временные рамки фиксируются с помощью различных периодов МА, обнаруживая изменения тренда в нескольких масштабах.

  5. Простая реализация с ясной, понятной логикой.

  6. Визуализированные сигналы ясны и интуитивно понятны для принятия решений о сделках.

Риски

Существуют также некоторые риски:

  1. Склонны к ложным сигналам, опираясь исключительно на перекрестки MA.

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

  3. Фиксированные периоды MA не могут адаптироваться к изменениям рынка, что требует оптимизации параметров.

  4. Уровни входа и выхода неясны, с некоторыми рисками.

  5. Упрощенная теоретическая основа может поставить под угрозу эффективность и потенциал прибыли.

Улучшение

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

  1. Добавить другие показатели для определения уровней входа и выхода, такие как KDJ для перекупленных/перепроданных.

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

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

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

  5. Оценить силу тренда, например, наклон MA, для масштабирования размера позиции.

  6. Включите несколько временных рамок для лучшей непрерывности тренда.

Заключение

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


/*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())


Больше