Стратегия Ларри Уильямса по пересечению скользящих средних


Дата создания: 2023-12-26 15:03:16 Последнее изменение: 2023-12-26 15:03:16
Копировать: 1 Количество просмотров: 1523
1
Подписаться
1623
Подписчики

Стратегия Ларри Уильямса по пересечению скользящих средних

Обзор

Эта стратегия является простой классической стратегией пересечения движущихся средних, созданной известным трейдером Ларри Уильямсом. Стратегия использует 9-дневную простую движущуюся среднюю в качестве быстрой линии, 21-дневную индексную движущуюся среднюю в качестве медленной линии.

Стратегический принцип

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

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

В частности, сигнал “сделать больше” заключается в следующем: скоростная линия всплывает, прорывая вчерашний максимум, и в то же время скоростная линия прорывает 21-ю линию, чтобы установить многоголовие; сигнал “сделать пустоту” заключается в следующем: скоростная линия опускается, прорывая вчерашний минимум, и в то же время скоростная линия прорывает 21-ю линию, чтобы установить пустоту.

Анализ преимуществ

Основными преимуществами этой стратегии являются:

  1. Стратегическая концепция проста, легко понятна и реализуема.
  2. Технология движущихся средних достаточно развита и широко используется.
  3. Введение эффективной фильтрации проникновения.
  4. При использовании вчерашних критических точек входа в игру, можно избежать промаха.
  5. Политические параметры устойчивы и не легко подстраиваются.

Анализ рисков

Основные риски этой стратегии:

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

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

  1. Внедрение вспомогательного суждения MACD-индикатора для получения дополнительных сигналов в реальном времени.
  2. Повышение циклических параметров скользящих средних, снижение частоты торгов.
  3. Повышение стратегии сдерживания убытков, контроль за единичными потерями.

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

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

  1. Оптимальные параметры. Можно использовать более систематический метод для тестирования комбинации параметров цикла MA, чтобы найти более оптимальные параметры.

  2. Увеличение убытков. Установление разумных методов, таких как перемещение убытков, уменьшение убытков, эффективное управление одиночными убытками.

  3. В сочетании с другими индикаторами. Введение других индикаторных сигналов, таких как MACD, ATR, KD, чтобы получить больше измерений подтверждения и повысить стабильность стратегии.

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

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

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

Исходный код стратегии
// @_benac
//@version=5
strategy('Larry', overlay=true , initial_capital=1000 )


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Usage for Stocks , or Criptos with value bigger then 1, cuz of 0.01 ´pip.
// Daily timeframe
//Observation Point
start     = timestamp(2020, 00, 00, 00, 00)         // backtest start window
finish    = timestamp(2022, 01, 07, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"  

if time < start 
    strategy.close_all("Closing All")

// Take infos from inputs. 
inp_mmshort = input.int(defval = 9, title = "Media Curta"  )
inp_mminter = input.int(defval = 21, title = "Media Curta"  )

// Risk Manager, here define max and min 
inp_max = input.int(defval = 15, title = "Percentual Ganho"  )
inp_min = input.int(defval = 5, title = "Percental  Perda"  )

// Converting the input to % 
pmax = (inp_max / 100 )
pmin =  (inp_min / 100)

// Infos From Moving Average
mm_short = ta.sma(close , inp_mmshort)
mm_inter = ta.ema(close , inp_mminter)


// Trend Logic
//Long Condition 

//Setup do Larry Willians Bem Simples , media virou para cima e rompeu a maxima de referencia, compra. 
tendencia_alta = mm_short[2] > mm_short[1] and mm_short > mm_short[1] and close > high[1] and close > mm_short and mm_short > mm_inter
tendencia_baixa = mm_short[2] < mm_short[1] and mm_short < mm_short[1] and close > low[1] and close < mm_short and mm_short < mm_inter

// Creating the entry
if tendencia_alta 
    strategy.entry("Compra" , strategy.long , stop = low - 0.01  )
    stop_inst = low - 0.01 
if tendencia_baixa 
    strategy.entry("Venda" , strategy.short , stop= high + 0.01  )
    stop_inst = high + 0.01


// TrailingStop Creation

// Sell Position
if strategy.position_size < 0 
    gain_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close < gain_p 
        strategy.close_all(comment = " 1 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close > stop_p 
        strategy.close_all(comment = " 2 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    
    if  high > mm_short[1]
        strategy.close_all(comment = " 3 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
      

// Buy Position    
if strategy.position_size > 0
    gain_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close > gain_p 
        strategy.close_all(comment = " 1- Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close < stop_p 
        strategy.close_all(comment = " 2 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if low < mm_short[1]
        strategy.close_all(comment = " 3 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )