Стратегия инвестирования в акции, основанная на двойных скользящих средних и волатильности


Дата создания: 2023-12-20 14:54:41 Последнее изменение: 2023-12-20 14:54:41
Копировать: 0 Количество просмотров: 661
1
Подписаться
1621
Подписчики

Стратегия инвестирования в акции, основанная на двойных скользящих средних и волатильности

Обзор

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

Стратегический принцип

Стратегия использует двойную равнолинейную систему, состоящую из 150-недельной линейной средней и 50-дневной быстрой средней, а также 20-дневную самую быструю среднюю линию. Когда цена пересекает 150-недельную линию, считается, что она начинает расти, а когда цена пересекает 50-дневную линию, считается, что она начинает падать. Это позволяет преследовать падение во время восхождения, а во время падения остановить убытки.

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

Стратегические преимущества

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

Стратегический риск

  1. Есть определенная задержка, которую нельзя быстро остановить.
  2. Нет установленных стоп-листов, что приводит к большим потерям
  3. Отсутствие оптимизации параметров, параметры настроены субъективно

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

Направление оптимизации стратегии

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Relative Strength
strategy("Stan my man", overlay=true)
comparativeTickerId = input("BTC_USDT:swap",  title="Comparative Symbol")
l = input(50, type=input.integer, minval=1, title="Period")
baseSymbol = security(syminfo.tickerid, timeframe.period, close)
comparativeSymbol = security(comparativeTickerId, timeframe.period, close)
hline(0, color=color.black, linestyle=hline.style_dotted)
res = baseSymbol / baseSymbol[l] /(comparativeSymbol / comparativeSymbol[l]) - 1
plot(res, title="RS", color=#1155CC)

//volume ma
vol1 = sma(volume,20)
// 30 week ma
ema1 = ema(close, 150)
//consolidation
h1 = highest(high[1],365)

fastPeriod = input(title="Fast MA", type=input.integer, defval=50)
slowPeriod = input(title="Slow MA", type=input.integer, defval=150)
fastestperiod = input(title="Fastest MA", type=input.integer, defval=20)

fastEMA = ema(close, fastPeriod)
slowEMA = ema(close, slowPeriod)
fastestEMA = ema(close, fastestperiod)

monitorStrategy = close < close[20]


// trade conditions
buytradecondition1 = close >ema1 and res>0 and volume> 1.5*vol1 and close > h1
buytradecondition2 = close > fastEMA  and volume> 1.5* vol1 
selltradecondition1  = close< 0.95 * fastEMA 
selltradecondition2  = close< 0.90 * open

if (buytradecondition1)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over Slow moving average",alert.freq_all)
    
if (buytradecondition2)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over fast moving average",alert.freq_all)
    
if (selltradecondition1)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down fast moving average",alert.freq_all)
    
if (selltradecondition2)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down 10% below open price  ",alert.freq_all)

//alertcondition(buytradecondition1,title ="BuySignal", message ="Price Crossed Slow Moving EMA ")

plot(fastEMA, color=color.navy)
plot(slowEMA, color=color.fuchsia)
plot(fastestEMA, color=color.green)