Стратегия скользящей средней полигона

Автор:Чао Чжан, Дата: 31-10-2023 14:53:50
Тэги:

img

Обзор

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

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

Стратегия планирует несколько EMA, таких как 3-периодические, 7-периодические и 13-периодические EMA, для формирования многоугольного канала. Когда цена превышает EMA, генерируется длинный сигнал. Когда цена превышает EMA, генерируется короткий сигнал. Это помогает избежать многих ложных прорывов.

Код определяет сигналы прорыва, сравнивая цену закрытия с EMA с использованием условий, таких как close>ema1 и ema1>ema2 и ema2>ema3. Временное условие time_cond добавляется для ограничения периода обратного теста. Стратегия использует стоп-лосс для защиты прибыли после входа.

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

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

Риски и решения

Основной риск заключается в том, что эта стратегия не может определить точки переворота тренда и может привести к потере во время переворота тренда. Неправильные настройки периода MA также могут привести к переоценке или отставанию сигналов. Риски могут быть уменьшены путем оптимизации комбинаций MA, добавления индикаторов переворота, расширения диапазона стоп-лосса и т. Д.

Руководство по оптимизации

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

  1. Оптимизируйте периоды MA, чтобы найти лучшую комбинацию.

  2. Добавьте индикаторы обратного движения, такие как RSI и MACD, чтобы своевременно выйти из торговли.

  3. Оптимизировать диапазон стоп-лосса и смещение, чтобы уменьшить преждевременные стоп-лосы.

  4. Оптимизировать параметры для различных продуктов для улучшения адаптивности.

Резюме

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


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
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/
// © Crypto-Oli

//@version=4
strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


/// YOUR INPUTS BELOW - DELET EXAPLES ///


ema1=ema(close,input(3))
ema2=ema(close,input(7))
ema3=ema(close,input(13))


/// PLOTS IF YOU NEED BELOW - DELET EXAPLES ///


plot(ema1, "EMA1", color.yellow)
plot(ema2, "EMA2", color.white)
plot(ema3, "EMA3", color.blue)


/// YOUR CONDITIONS BELOW - DELET EXAPLES ///


longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond
shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond

/// EXECUTION ///


if (longCondition)
    strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

if (shortCondition)
    strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

Больше