Двойная стратегия перекрестной торговли TEMA

Автор:Чао Чжан, Дата: 2023-10-12 17:34:19
Тэги:

Обзор

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

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

Стратегия использует TEMA (Triple Exponential Moving Average) в качестве основного технического показателя.

TEMA = (3EMA1) - (3EMA2) + EMA3

Если EMA1, EMA2 и EMA3 - это EMA периода N. При расчете EMA три раза TEMA может быстрее реагировать на изменения цен.

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

Ключи этой стратегии заключаются в настройке параметров и логике условий. Быстрая линия с более коротким периодом, таким как 20-дневная, может быстро улавливать динамику цен, в то время как медленная линия с более длительным периодом, таким как 60-дневная, может фильтровать ложные прорывы.

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

Преимущества этой стратегии включают:

  1. TEMA может быстрее реагировать на изменения цен и улавливать изменение тренда.

  2. Двойная структура TEMA помогает фильтровать ложные прорывы и вводить высоковероятные трендовые сделки.

  3. Гибкие регулируемые параметры для адаптации к различным рыночным условиям.

  4. Простая и понятная логика, легко понятная и реализуемая, высокое использование капитала.

  5. Хорошие прибыли можно получить на рынках с тенденциями, особенно на рынках с сильными тенденциями.

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

Риски этой стратегии включают:

  1. Склонность к частым торговым потерям на рынках с диапазоном.

  2. Может генерировать чрезмерные ложные сигналы, если параметры не настроены правильно.

  3. Не в состоянии эффективно реагировать на внезапные события и краткосрочные колебания цен.

  4. Отстающие сигналы могут упустить краткосрочные возможности.

  5. Высокий риск открытия позиций против сильных колебаний.

  6. Требует опыта в оптимизации параметров для адаптации к изменяющимся рынкам.

Меры управления рисками:

  1. Оптимизируйте параметры, чтобы избежать перечувствительности.

  2. Добавить другие индикаторы для фильтрации входных сигналов.

  3. Использовать стоп-потери для ограничения потерь на одной сделке.

  4. Уменьшить размер позиций для контроля риска.

  5. Добавить правила оптимизации параметров и механизмы ручного вмешательства.

Руководство по оптимизации

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

  1. Оптимизировать параметры быстрой и медленной линии для различных продуктов и рыночных условий.

  2. Включите другие индикаторы, такие как MACD, полосы Боллинджера, чтобы улучшить силу сигнала.

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

  4. Избегайте открытия позиций, когда VIX высокий.

  5. Добавьте показатели объема, только подумайте о входе на очевидное расширение объема.

  6. Оптимизировать управление деньгами, например, фиксированное размеры позиций, контроль вывода.

  7. Используйте машинное обучение для автоматической оптимизации параметров.

Резюме

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nickrober

//@version=4
strategy(title="TEMA Cross Backtest", shorttitle="TEMA_X_BT", overlay=true, commission_type=strategy.commission.percent, commission_value=0, initial_capital = 1000,  default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Backtest inputs
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2010)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)

// Define backtest timewindow
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() =>  true

//TEMA Section
xLength = input(20, minval=1, title="Fast Length")
xPrice = close
xEMA1 = ema(xPrice, xLength)
xEMA2 = ema(xEMA1, xLength)
xEMA3 = ema(xEMA2, xLength)
xnRes = (3 * xEMA1) - (3 * xEMA2) + xEMA3
xnResP = plot(xnRes, color=color.green, linewidth=2, title="TEMA1")

yLength = input(60, minval=1, title="Slow Length")
yPrice = close
yEMA1 = ema(yPrice, yLength)
yEMA2 = ema(yEMA1, yLength)
yEMA3 = ema(yEMA2, yLength)
ynRes = (3 * yEMA1) - (3 * yEMA2) + yEMA3
ynResP = plot(ynRes, color=color.red, linewidth=2, title="TEMA2")

fill(xnResP, ynResP, color=xnRes > ynRes ? color.green : color.red, transp=75, editable=true)

// Buy and Sell Triggers
LongEntryAlert = xnRes > ynRes
LongCloseAlert = xnRes < ynRes
ShortEntryAlert = xnRes < ynRes
ShortCloseAlert = xnRes > ynRes

// Entry & Exit signals
strategy.entry("Long", strategy.long, when = xnRes > ynRes and window()) 
strategy.close("Long", when = xnRes < ynRes)
//strategy.entry("Short", strategy.short, when = xnRes < ynRes and window())
//strategy.close("Short", when = xnRes > ynRes)

Больше