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

Автор:Чао Чжан, Дата: 2023-09-12 16:40:50
Тэги:

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

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

  1. Вычислять быстрые и медленные линии TEMA, обычно 5 и 8 периодов.

  2. Продолжайте, когда быстрая TEMA пересекает медленную TEMA.

  3. Выход длинный, когда быстрая TEMA переходит ниже медленной TEMA.

  4. Опция фильтрации на основе направления свечи для избежания контратендентных сделок.

  5. Проверка заданного периода для моделирования исторических сигналов.

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

  1. TEMA сильно фильтрует шум цен.

  2. Быстрая/медленная комбинация фиксирует промежуточные тенденции.

  3. Фильтр направления улучшает скорость победы, избегая входов в противоположный тренд.

Риски:

  1. TEMA все еще отстает, потенциально не хватает лучших записей.

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

  3. Трудно поддерживать сигналы на различных рынках.

В целом, эта стратегия пересекает линии TEMA для торговли тенденциями с фильтрацией шума для стабильности.


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

//@version=4
strategy("Tema",overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

tema_length_1 = input(5, "Fast TEMA")
tema_length_2 = input(8, "Slow TEMA")
usedir       = input(true, "Use bar's direction ?" )
dirtime      = input(2,"direction bars")

tema(sec, length)=>
    tema1= ema(sec, length)
    tema2= ema(tema1, length)
    tema3= ema(tema2, length)
    tema = 3*tema1-3*tema2+tema3

tema1 = tema(hlc3, tema_length_1)
tema2 = tema(hlc3, tema_length_2)

dir=if close/close[dirtime] > 1
    1
else
    -1

plot(tema1, color=color.green, transp=50)
plot(tema2, color=color.red, transp=50)


up =  crossover(tema1, tema2) 
down = crossunder(tema1, tema2)

long_condition =  up and (usedir ? dir==1 : true) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  down
strategy.close('BUY', when=short_condition)

Больше