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

Автор:Чао Чжан, Дата: 2023-10-26 17:08:43
Тэги:

img

Обзор

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

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

Стратегия использует несколько наборов скользящих средних, таких как 18-, 26-, 36-периодические МА, для улавливания ценовых тенденций. Когда более короткие МА пересекают более длинные МА, это сигнализирует о восходящей тенденции, таким образом, длинный. Когда более короткие МА пересекают ниже более длинных МА, это указывает на нисходящую тенденцию, таким образом, короткий.

Между тем, индикаторы осцилляторов, такие как MACD, RSI, EFI, используются для выявления условий перекупления и перепродажи. Например, переход MACD от отрицательного к положительному предполагает длинный ход, в то время как переход от положительного к отрицательному предполагает короткий.

Правила въезда:

Длинный: Краткий переход MA вверх Длинный MA И MACD>0 И RSI восстанавливается от минимумов И EFI<0

Краткий: Краткий переход MA вниз Длинный MA И MACD<0 И RSI отступает от максимумов И EFI>0

Правила остановки потерь:

Длинный SL: EFI выше порогового значения И ценовые разрывы ниже указанного MA

Краткий SL: EFI ниже порога И ценовые отклонения выше указанного MA

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

  1. Многочисленные МА фиксируют основные моменты изменения тенденции.

  2. Комбании осцилляторов избегают погони за максимумами и продажи минимумов.

  3. Правила SL учитывают как тенденции, так и денежный поток, эффективно контролируя риски.

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

  5. Средняя частота торговли, стабильные сигналы, подходящие для долгосрочного отслеживания трендов.

Риски

  1. Внезапные столкновения могут привести к недействительности SL, диапазон SL должен быть расширен.

  2. Слишком много сигналов на рынках, параметры должны быть скорректированы.

  3. Слишком длительное удержание может увеличить потери, более короткие МА могут ускорить SL.

  4. Замещение теста, реальные результаты торговли в ожидании подтверждения.

Улучшения

  1. Оптимизировать параметры для более высокой отдачи и подходящей частоты.

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

  3. Создать адаптивный механизм SL на основе различных рыночных условий.

  4. Добавьте больше фильтров, чтобы определить лучшие сигналы входа.

  5. Включить стратегии размещения позиций для контроля размера одиночной ставки.

Заключение

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


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 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/
// © murdocksilva

//@version=5

strategy("Daily_Mid Term_Consulting BOLT")

//calculo longuitud
longuitud = input(58, title= "longitud_sma")


px = ta.sma(close, 1)
px2 = ta.sma(low, 1)

Length1 = input.int(18)
Length2 = input.int(18)
Length3 = input.int(26)
Length4 = input.int(36)
Length5 = input.int(78)
Length6 = input.int(1)
Length7 = input.int(1500)
Length8 = input.int(58)
Length9 = input.int(3000)
Length10 = input.int(2)
Length11 = input.int(14)
ma1 = ta.sma(low, Length1)
ma2 = ta.sma(high, Length2)
ma3 = ta.sma(close, Length3)
ma4 = ta.sma(close, Length4)
ma5 = ta.sma(close, Length5)
ma6 = ta.sma(close, Length6)
ma7 = ta.sma(close, Length7)
ma8 = ta.sma(close, Length8)
ma9 = ta.sma(close, Length9)
ma10 = ta.sma(close, Length10)
ma11 = ta.sma(close, Length11)

// calculo EFI
efi = (close[1]-close) * volume / 1000
efi_indicador = (efi[1] + efi) / 2

//Variable  RSI - calculo desv estandar
b = (px-ma10)*(px-ma10)
b2 = (px[1]-ma10[1])*(px[1]-ma10[1])
c = b + b2
c2 = c / 2
desv = math.sqrt(c2)/10

//calculo MACD
macd = ma4 - ma5

//calculo RSI
rsi = ta.rsi(close, 9)

// calculo Divergencia
ma = ta.sma(close, longuitud)
dist = close - ma
porcentaje = dist * 100 / close
ma_dista = ta.sma(porcentaje, 333)

//condición de entrada y salida long
long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd
clong = efi_indicador > 22000 and px < ma8
strategy.entry("BUY", strategy.long, when = long)
strategy.close("BUY", when = clong)

//condición de entrada y salida short
short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd 
cshort =  efi_indicador < 14000 and px > ma8 and ma11 > desv
strategy.entry("SELL", strategy.short, when = short)
strategy.close("SELL", when = cshort)

//SL Y TP
//strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)
//strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)

// GRAFICA smas
plot(ma1, color=color.new(color.orange, 0))
plot(ma2, color=color.new(color.orange, 0))
plot(ma3, color=color.new(color.orange, 0))
plot(ma4, color=color.new(color.orange, 0))
plot(ma5, color=color.new(color.orange, 0))
plot(ma6, color=color.new(color.green, 0))
plot(ma7, color=color.new(color.orange, 0))
plot(ma8, color=color.new(color.orange, 0))
plot(ma9, color=color.new(color.orange, 0))
//GRAFICA MACD
plot(macd, color=color.new(color.red, 0), style = plot.style_columns)
//GRAFICA DIVERGENCIA
plot(porcentaje, style = plot.style_columns)
//GRAFICA MA DIVERGENCIA
plot(ma_dista, color=color.new(color.white, 0))
//GRAFICA MA DIVERGENCIA
plot(desv, color=color.new(color.blue, 0))
//GRAFICA EFI
plot(efi_indicador, color=color.new(color.yellow, 0))
// GRAFICA RSI
l1 = hline(70, color=color.new(color.green, 0))
l2 = hline(30, color=color.new(color.green, 0))
plot(rsi, color=color.new(color.white, 0))




//prueba 1 stop loss and take profit
//sl = 0.05
//tp = 0.1    
//calculo de precio para sl y tp
//longstop=strategy.position_avg_price*(1-sl)
//longprofit=strategy.position_avg_price*(1+tp)

//shortstop=strategy.position_avg_price*(1+sl)
//shortprofit=strategy.position_avg_price*(1-tp)

//if (long)
  //  strategy.exit("BUY", strategy.long)

//sl and tp  long|short
//if strategy.entry("BUY", strategy.long)

//if strategy.position_avg_price > 0
//strategy.exit("BUY", limit = longprofit, stop = longstop)

//if strategy.position_avg_price < 0
//strategy.exit("SELL", limit = shortprofit, stop=shortstop)

Больше