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

Автор:Чао Чжан, Дата: 2024-01-23 10:49:57
Тэги:

img

Обзор

Эта стратегия является долгосрочной, следующей только тренду, которая генерирует торговые сигналы посредством двойного подтверждения индикатора Аруна и линии линейной регрессионной скользящей средней (LSMA).

Принципы стратегии

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

В частности, правила генерации торговых сигналов следуют:

  1. Сигнал длинного входа: верхняя полоса пересекает нижнюю полосу (показатель Аруна определяет тенденцию к росту) и цена закрытия дня находится выше линии LSMA (цена закрытия имеет тенденцию к росту).

  2. Сигнал длинного выхода: верхняя полоса пересекается ниже нижней полосы (показатель Аруна определяет тенденцию к снижению) и цена закрытия дня находится ниже линии LSMA (цена закрытия находится в тенденции к снижению).

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

  1. Использование индикатора Aroon для определения тенденции позволяет избежать помех шума
  2. Добавление строки LSMA для фильтрации ложных прорывов
  3. Только долго, в соответствии с долгосрочным подъемом на более широком рынке
  4. Простые параметры, легко внедряемые

Риски

  1. Только делая долго, трудно получить прибыль на боковом рынке
  2. Фиксированные параметры могут привести к перенастройке
  3. Трудно своевременно сократить убытки, когда тенденция меняется.

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

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

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

Резюме

В общем, это относительно простая и практичная двойная стратегия подтверждения тренда. Использование Aroon для определения тренда и LSMA для фильтрации шума просто. При правильной настройке параметров он может достичь приличных результатов. Он подходит для среднесрочного и долгосрочного хранения, чтобы избежать шума. Добавляя такие модули, как стоп-лосс, стратегия может быть дополнительно оптимизирована для усиления ее сильных сторон и снижения рисков.


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © exlux99

//@version=4

strategy(title = "Aroon Strategy long only", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)

//Time
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 = 2010, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//INPUTS

length = input(15, minval=1, title="Aroon Legnth")
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length

lengthx = input(title="Length LSMA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, lengthx, offset)


long = crossover(upper,lower) and close > lsma
longexit = crossunder(upper,lower) and close < lsma

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.close("long",when=longexit)


Больше