Мобильная средняя стратегия торговли золотом

Автор:Чао Чжан, Дата: 2024-02-22 16:25:13
Тэги:

移动平均线金叉死叉交易策略

Обзор

Принципы стратегии

Эта стратегия основывается на 12-й ЕМА, 26-й ЕМА и MACD. Конкретная логика:

  1. ЭМА 12 числа и ЭМА 26 числа.
  2. Вычислить MACD (т.е. 12-дневный EMA минус 26-дневный EMA) ‒
  3. Расчет 9-дневной ЭМА MACD как сигнальной линии.
  4. Когда MACD проходит по сигнальным линиям, он генерирует сигнал покупки.
  5. Когда MACD проходит через сигналную линию, он генерирует сигнал продажи.
  6. При закрытии второй линии K, которая создала сигнал, проводится соответствующая операция покупки или продажи.

  1. Торговля ведется в не закрытые часы дня.
  2. Абсолютное значение отклонения между MACD и сигнальной линией должно быть больше 0.08.

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

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

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

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

В то же время в этой стратегии есть некоторые риски:

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

Относительное смягчение:

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

Оптимизация

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

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

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMMA", max_bars_back = 200)

var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2

var earliest = timestamp("20 Jan 2024 00:00 +0000")

// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]

signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)

harskiftetdag = hour(time[confirmationLength]) > hour(time)

enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)

enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)

// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)

if time >= earliest and not harskiftetdag
    if exitLongSignal 
        strategy.close("long")
    else if enterLongSignal
        strategy.close("short")
        strategy.entry("long", strategy.long, qty = qty)

    if exitShortSignal
        strategy.close("short")
    else if enterShortSignal
        strategy.close("long")
        strategy.entry("short", strategy.short, qty = qty)

// Så er det tid til at vise noe

plot(macd, color=color.blue)
plot(signal, color=color.orange)

// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))

histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)

plot(
     delta,
     style=plot.style_columns,
     color=histogramColor
     )

Больше информации