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

Автор:Чао Чжан, Дата: 2023-12-26 15:03:16
Тэги:

img

Обзор

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

Логика стратегии

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

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

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

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

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

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

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

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

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

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

  1. Введение индикатора MACD для получения большего количества сигналов в реальном времени.
  2. Увеличить параметры периода MA до более низкой частоты торговли.
  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)  )
        



Больше