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


Дата создания: 2023-12-18 12:25:13 Последнее изменение: 2023-12-18 12:25:13
Копировать: 1 Количество просмотров: 807
1
Подписаться
1621
Подписчики

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

Обзор

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

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

  1. Вычислить скоростные линии EMA ((close, 5), медленные линии EMA ((close, 8) и сигнальные линии SMA ((MACD, 3)
  2. Определение многоголовной сигнализации: при переходе через медленную линию на скоростной линию делается больше.
  3. Определение пустого сигнала: быстрое прохождение медленной линии под линией или пустота при закрытии цены в день ниже вчерашнего минимума
  4. Общий объем позиций равен начальному капиталу в 2000 долларов США, деленному на конечную цену.
  5. Многоголовая остановка с использованием пустого сигнала

Анализ преимуществ

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

Анализ рисков

  1. MACD-индикатор отстает и может пропустить короткую линию
  2. Двухлинейные торговые сигналы могут создавать ложные сигналы
  3. Стоп-пойнты слишком радикальны, существует вероятность чрезмерно частого остановки

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

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

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

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

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

//@version=2
// macd/cam v1 strategizing Chris Moody Macd indicator https://www.tradingview.com/script/OQx7vju0-MacD-Custom-Indicator-Multiple-Time-Frame-All-Available-Options/
// macd/cam v2 changing to macd 5,8,3
// macd/cam v2.1 
//      Sell when lower than previous day low. 
//      Initial capital of $2k. Buy/sell quantity of initial capital / close price
//      Quitar short action
//      Note: custom 1-week resolution seems to put AMD at 80% profitable

strategy(title="MACD/CAM 2.1", shorttitle="MACD/CAM 2.1") //
source = close
//get inputs from options
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")
venderLowerPrev = input(true,title="Vender cuando closing price < previous day low?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(5, minval=1), slowLength=input(8,minval=1)
signalLength=input(3,minval=1)

// find exponential moving average of price as x and fastLength var as y
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
// simple moving average
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)

circleCondition = sd and cross(outMacD, outSignal)

// Determine long and short conditions
longCondition  = circleCondition and macd_color == lime

redCircle = circleCondition and macd_color == red
redCirclePrevLow = redCircle or low<low[1]
shortCondition = redCircle
if (venderLowerPrev)
    shortCondition = redCirclePrevLow

strategy.initial_capital = 20000
// Set quantity to initial capital / closing price
cantidad = strategy.initial_capital/close

// Submit orders
strategy.entry(id="long", long=true, qty=cantidad, when=longCondition)
strategy.close(id="long", when=shortCondition)
plot(circleCondition ? circleYPosition : na, title="Cross", style=cross, linewidth=10, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)