
Эта стратегия основана на движущейся средней кросс-стратегии на графике Ренко. Она использует индикатор TEMA для построения кросс-сигнала и фильтрации в сочетании с долгосрочной средней линией, чтобы идентифицировать тенденции на графике Ренко и подавать сигналы покупки и продажи.
Основными источниками сигналов для этой стратегии являются короткосрочные TEMA и золотые форки SMA. Конкретная логика заключается в следующем:
Когда краткосрочная TEMA пересекает краткосрочную SMA, делают больше; когда краткосрочная TEMA пересекает краткосрочную SMA, делают меньше.
Кроме того, в стратегии также установлены два параметра avg_protection и gain_protection для регулирования логики входа и остановки:
При avg_protection>0 покупают только тогда, когда цена закрытия ниже средней цены текущей позиции, что позволяет снизить стоимость позиции;
При gain_protection>0 продается только стоп, когда цена закрытия превышает определенную процентную долю от цены входа, что блокирует прибыль.
Наконец, стратегия также использует долгосрочный индикатор SMMA в качестве фильтра тренда. Повышенный сигнал подается только тогда, когда цена закрытия ниже SMMA.
Основные преимущества этой стратегии:
Однако эта стратегия также несет в себе некоторые риски:
Эти риски можно избежать путем соответствующей корректировки параметров, установки стоп-позиции и т. д.
Эта стратегия может быть оптимизирована в следующих аспектах:
Стратегия в целом представляет собой простую, но очень практичную стратегию пересечения движущихся средних линий. Она основывается на превосходном эффекте отключения шума от линии Renko K и высокой чувствительности к созданию сигналов для индикатора TEMA. В то же время, сочетание с долгосрочной средней линией также усиливает ее способность следовать тенденциям.
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("TEMA Cross", overlay = true)
tema(src, len) =>
3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len)
smma(src, len) =>
sa = 0.0
sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len
sa
temaLength = input(5)
smaLength = input(3)
smmaLength = input(30)
tema1 = tema(close, temaLength)
sma1 = sma(tema1, smaLength)
smma1 = smma(close,smmaLength)
plot(tema1, color = green, title = "TEMA")
plot(sma1, color = orange, title = "SMA")
plot(smma1, color = red, title = "SMMA")
minGainPercent = input(2)
gainMultiplier = minGainPercent * 0.01 + 1
avg_protection = input(1)
gain_protection = input(1)
longCondition = crossover(tema1, sma1) and tema1 < smma1
shortCondition = crossunder(tema1, sma1)
strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))