Эта стратегия является комплексной торговой стратегией для биткоина и других криптовалют с 15-минутным периодом времени. Она объединяет несколько индикаторов, генерирующих сигналы покупки и продажи, включая тройную скользящую среднюю, среднюю реальную величину колебаний и диаграмму балансовой линии, а также имеет механизмы управления рисками, такие как остановка и остановка потерь.
В этой стратегии используются следующие показатели:
Тройная скользящая средняя ((TEMA): использует 3 TEMA разной длины и источника, рассчитанные на основе высоких, низких и закрытых цен соответственно.
Средняя реальная волатильность (ATR): используйте EMA Smooth для расчета рыночной волатильности (ATR).
Индикатор сверхтенденции: определяет направление тренда на основе ATR и множителей.
Простая скользящая средняя ((SMA): SMA для краткосрочной TEMA рассчитывается с плавными значениями.
Закрытие балансовой линии: для дополнительного подтверждения тренда.
Сигнал покупать возникает, когда короткий период TEMA выше двух длинных периодов TEMA, сверхтяжелый индикатор bullish, короткий период TEMA выше его SMA, и цена закрытия равновесной линии выше, чем за предыдущий день.
Сигнал продажи возникает, когда короткий период TEMA ниже двух длинных периодов TEMA, сверхурочный индекс понижается, короткий период TEMA ниже его SMA, а закрытие равновесной линии ниже, чем за день до этого.
Стоп-стоп устанавливается в размере 1% и 3% от цены входа. При этом учитывается фактор комиссионных.
В сочетании с различными показателями, такими как тенденции, волатильность, форма, можно повысить точность суждения и избежать ложных сигналов.
Разумная установка стоп-стоп может блокировать прибыль, а также эффективно ограничивать индивидуальные потери.
Параметры индикатора могут быть гибко адаптированы к изменениям рынка, чтобы найти оптимальное сочетание.
Добавление коэффициента комиссионных сборов может приблизить результаты отчета к фактическим результатам сделки.
Слишком большое количество комбинаций показателей может привести к ошибочным выводам, поэтому необходимо тщательно оценивать их эффективность.
По сравнению с более длительным циклом, 15-минутные операции более подвержены воздействию внезапных событий и имеют более высокий риск случайных случаев.
Эта стратегия еще должна быть проверена на более длительных периодах и на нескольких рынках, чтобы обеспечить стабильность.
Поскольку множественные комбинации приводят к большому количеству параметров, оптимизация всех комбинаций параметров требует большего времени.
Проверить фактическое повышение эффективности каждого показателя, избегая использования избыточных показателей.
Оптимизация параметров тестирования на большем количестве рынков обеспечивает стабильность и надежность.
Дополнительный контроль рисков, например, с помощью мобильного стоп-поста или стоп-поста.
В частности, стоимость скольжения позволяет более точно оценивать обратную связь.
Стратегия, объединяющая несколько показателей и механизмов контроля риска, разработана для торговли 15-минутным циклом биткоина. Ее оптимизация имеет большое пространство, требует глубокого ответа на оценку эффективности показателей, широкого тестирования стабильности рынка, а также добавления большего количества реальных факторов, чтобы найти оптимальную комбинацию параметров в многофакторной стратегии. Если продолжать оптимизировать и проверять, стратегия может стать эффективным инструментом для торговли криптовалютой.
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-09 00:00:00
period: 10m
basePeriod: 1m
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/
// © deperp
//@version=5
strategy('3kilos', shorttitle='3kilos BTC 15m', overlay=true, initial_capital=100000, max_bars_back=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)
short = input.int(50, minval=1)
srcShort = input(high, title='TEMA short')
long = input.int(100, minval=1)
srcLong = input(low, title='TEMA long 2')
long2 = input.int(350, minval=1)
srcLong2 = input(close, title='TEMA long 3')
atrLength = input.int(550, title='ATR Length', minval=1)
mult = input.float(3, title="Multiplier", minval=0.5, step=1)
smaPeriod = input.int(100, title="SMA Period", minval=1)
takeProfitPercent = input.float(1, title="Take Profit (%)", minval=0.1) / 100
stopLossPercent = input.float(3, title="Stop Loss (%)", minval=0.1) / 100
tema(src, length) =>
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)
3 * (ema1 - ema2) + ema3
tema1 = tema(srcShort, short)
plot(tema1, color=color.new(color.red, 0), linewidth=2)
tema2 = tema(srcLong, long)
plot(tema2, color=color.new(color.blue, 0), linewidth=2)
tema3 = tema(srcLong2, long2)
plot(tema3, color=color.new(color.green, 0), linewidth=2)
// Custom ATR calculation with EMA smoothing
atr_ema(src, length) =>
trueRange = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
emaTrueRange = ta.ema(trueRange, length)
emaTrueRange
// Calculate ATR with EMA smoothing
atr = atr_ema(close, atrLength)
// Calculate Supertrend
var float up = na
var float dn = na
var bool uptrend = na
up := na(up[1]) ? hl2 - (mult * atr) : uptrend[1] ? math.max(hl2 - (mult * atr), up[1]) : hl2 - (mult * atr)
dn := na(dn[1]) ? hl2 + (mult * atr) : uptrend[1] ? hl2 + (mult * atr) : math.min(hl2 + (mult * atr), dn[1])
uptrend := na(uptrend[1]) ? true : close[1] > dn[1] ? true : close[1] < up[1] ? false : uptrend[1]
// Calculate SMA
sma = ta.sma(tema1, smaPeriod)
// Heikin-Ashi Close
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
// Trend determination using Heikin-Ashi Close
longC = tema1 > tema2 and tema1 > tema3 and uptrend and tema1 > sma and haClose > haClose[1]
shortC = tema1 < tema2 and tema1 < tema3 and not uptrend and tema1 < sma and haClose < haClose[1]
alertlong = longC and not longC[1]
alertshort = shortC and not shortC[1]
useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2023"),
title="Start Date", group="Backtest Time Period",
tooltip="This start date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
inTradeWindow = true
stopLossLevelLong = close - atr * mult
stopLossLevelShort = close + atr * mult
longTakeProfitLevel = close * (1 + takeProfitPercent)
longStopLossLevel = close * (1 - stopLossPercent)
shortTakeProfitLevel = close * (1 - takeProfitPercent)
shortStopLossLevel = close * (1 + stopLossPercent)
if inTradeWindow and longC
strategy.entry('Long', strategy.long, comment='Long')
strategy.exit("TP Long", "Long", limit=longTakeProfitLevel, stop=longStopLossLevel, comment="TP/SL Long")
if inTradeWindow and shortC
strategy.entry('Short', strategy.short, comment='Short')
strategy.exit("TP Short", "Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel, comment="TP/SL Short")
// Alerts
alertcondition(longC, title='Long', message=' Buy Signal ')
alertcondition(shortC, title='Short', message=' Sell Signal ')