Это простая и классическая стратегия кроссовера скользящей средней, созданная известным трейдером Ларри Уильямсом. Стратегия использует 9-дневную простую скользящую среднюю как быструю линию и 21-дневную экспоненциальную скользящую среднюю как медленную линию.
Стратегия основана на золотом кроссовере и смертном кроссовере скользящих средних для определения длинных и коротких возможностей. Когда быстрая линия переходит выше медленной линии снизу, это золотой кроссовер, указывающий на изменение к бычьему тренду. Такой прорыв используется для длинного хода. Когда быстрая линия переходит ниже медленной линии сверху, это смертельный кроссовер, указывающий на изменение к медленному тренду. Такой прорыв используется для короткого хода.
Чтобы избежать ложных прорывов, приводящих к виртуальным потерям, 21-дневная линия также используется для определения основного тренда. Только когда быстрая линия прорывается, и цена также нарушает 21-дневную линию, будут предприняты торговые действия. Это может эффективно отфильтровать многие ложные прорывы.
В частности, длинный сигнал запускается, когда: быстрая линия превышает вчерашний максимум и превышает 21-дневную линию. короткий сигнал запускается, когда: быстрая линия превышает вчерашний минимум и превышает 21-дневную линию.
Основными преимуществами этой стратегии являются:
Основными рисками этой стратегии являются:
Для устранения этих рисков можно оптимизировать следующие аспекты:
К основным направлениям оптимизации этой стратегии относятся:
Оптимизация параметров: более систематические методы могут быть использованы для тестирования различных комбинаций периодов MA для поиска лучших параметров.
Добавьте стоп-лосс. Установите правильные движущиеся стоп-лосс, процентные стоп-лосс и т.д., чтобы эффективно контролировать однократные торговые потери.
Сочетание других индикаторов. Внедрение сигналов от MACD, ATR, KD и т.д. для получения большего количества подтверждений и улучшения стабильности стратегии.
Оптимизируйте механизмы выхода. Исследуйте различные типы методов выхода, такие как выходы с обратным сигналом, выходы с движением прибыли и т. Д.
В целом, эта стратегия пересечения скользящей средней является очень типичной и практичной стратегией, следующей за трендом. Она имеет преимущество в том, что ее легко понять и реализовать, а также имеет место для улучшения.
// @_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) )