Торговая стратегия с использованием многолинейного индикатора MACD


Дата создания: 2024-02-19 11:03:54 Последнее изменение: 2024-02-19 11:03:54
Копировать: 0 Количество просмотров: 697
1
Подписаться
1617
Подписчики

Торговая стратегия с использованием многолинейного индикатора MACD

Обзор

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

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

Стратегия рассчитывает одновременно 3 движущихся средних: весомое движущееся среднее WMA и два показателя движущейся средней EMA. Параметры этих трех движущихся средних настроены по-разному - на 25, 50 и 100 дней соответственно. Это позволяет движущимся средним покрывать различные циклы ценового движения.

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

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

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

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

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

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

  • Одно из последних исследований, проведенное в Китае, показало, что в Китае наблюдается задержка в оценке макроциклических показателей.
  • Риск потерь при прорыве
  • PARAMETERS Небольшие корректировки на позднем этапе для оптимизации стоп-лома

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

Эта стратегия может быть оптимизирована в следующих аспектах:

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TC - MACDoscillator v2", overlay=true)
// ___________      .__                   _________               .__  __         .__   
// \__    ___/____  |  |    ____   ____   \_   ___ \_____  ______ |__|/  |______  |  |  
//   |    |  \__  \ |  |   / ___\ /  _ \  /    \  \/\__  \ \____ \|  \   __\__  \ |  |  
//   |    |   / __ \|  |__/ /_/  >  <_> ) \     \____/ __ \|  |_> >  ||  |  / __ \|  |__
//   |____|  (____  /____/\___  / \____/   \______  (____  /   __/|__||__| (____  /____/
//                \/     /_____/                  \/     \/|__|                 \/      
//
// MACDoscillator Strategy v2
// Josh Breitfeld 2016
//

/// INPUTS START ///

//tradeSize = input(title="Shares Per Trade",  defval=2500, step=1)
WMALength = input(title="WMA Length",  defval=25, step=1)
EMA1Length = input(title="EMA1 Length",  defval=50, step=1)
EMA2Length = input(title="EMA2 Length",  defval=100, step=1)
//security = input(title="Alternate Security", type=string, defval="SPX500")
//inverse = input(title="Inverse Signals", type=bool, defval=true)

/// INPUTS END ///

/// ALGORITHM START ///

/// Define calculations
WMA = wma(close,WMALength)
EMA1 = ema(close,EMA1Length)
EMA2 = ema(close,EMA2Length)

/// Grab values from alternate security
dWMA = WMA
dEMA1 = EMA1
dEMA2 = EMA2

aClose = close

/// Crossover signal system

/// Long crosses
lc1 = aClose > dWMA ? true : false
lc2 = aClose > dEMA1 ? true : false
lc3 = aClose > dEMA2 ? true: false

/// Short crosses
sc1 = aClose < dWMA ? true : false
sc2 = aClose < dEMA1 ? true : false
sc3 = aClose < dEMA2 ? true : false

//plot(lc1,color=green)
//plot(lc2,color=green)
//plot(lc3,color=green)
//plot(sc1,color=red)
//plot(sc2,color=red)
//plot(sc3,color=red)


/// ALGO ORDER CONDITIONS START ///

pBuyToOpen = (lc1 and lc2 and lc3 ? true : false)
pSellToOpen = (sc1 and sc2 and sc3 ?  true : false)
pSellToClose = (lc1 ? true : false) and not pBuyToOpen
pBuyToClose = (sc1 ? true : false) and not pSellToOpen

//plot(pBuyToOpen,color=lime)
//plot(pBuyToClose,color=lime)
//plot(pSellToOpen,color=red)
//plot(pSellToClose,color=red)
/// INVERT SIGNALS

//buyToOpen = inverse ? -pBuyToOpen : pBuyToOpen
//sellToOpen = inverse ? -pBuyToOpen : pSellToOpen
//sellToClose = inverse ? -pSellToClose : pSellToClose
//buyToClose = inverse ? -pBuyToClose : pBuyToClose

/// ALGO ORDER CONDITIONS END ///

/// ALGORITHM END ///

/// DEFINE PLOTS ///

plot(dWMA,"WMA",lime,1,line)
plot(dEMA1,"EMA1",blue,2,line)
plot(dEMA2,"EMA2",red,3,line)
//plot(aClose,"Close",orange,4,line)

/// PLOTS END ///

/// ORDER BLOCK ///

    //strategy.entry("My Long Entry Id", strategy.long)

/// OPENING ORDERS START ///
if(pBuyToOpen) 
    strategy.entry("BTO", strategy.long, comment="BTO")
if(pSellToOpen) 
    strategy.entry("STO", strategy.short, comment="STO")

/// OPENING ORDERS END ///

/// CLOSING ORDERS START ///
strategy.close("BTO", pBuyToClose)
strategy.close("STO", pSellToClose)
/// CLOSING ORDERS END ///

/// END ORDER BLOCK ///

// Josh Breitfeld - Talgo Capital 2016
/// STRATEGY END ///