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

Автор:Чао Чжан, Дата: 2023-12-20 14:54:41
Тэги:

img

Обзор

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

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

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

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

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

  1. Система двойного MA может эффективно идентифицировать изменения тренда для преследования вверх и остановки вниз.

  2. Измерение волатильности и RSI гарантируют, что мы не попадем в ловушку на боковых рынках.

  3. 20-дневный быстрый MA позволяет быстрее остановить потерю.

Риски

  1. Есть некоторая задержка, не в состоянии быстро реализовать стоп-лосс.

  2. Не устанавливается стоп-лосс, может привести к большим потерям.

  3. Отсутствие оптимизации параметров, параметры устанавливаются довольно произвольно.

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

Возможности для расширения

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

Резюме

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


/*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)

Больше