Стратегия Bitcoin Momentum Trailing Stop - это долгосрочная стратегия, основанная только на импульсе, предназначенная для захвата восходящих тенденций Биткоина, снижая снижающийся риск с помощью динамически скорректированных стоп-потерь. Стратегия использует простую, но умную технику, которая затягивает стоп-потерь во время высокой медвежьей волатильности для защиты открытых прибылей и ослабляет стоп-потерь во время устойчивого бычьего импульса, чтобы позволить прибыли. Стратегия остается инвестированной до тех пор, пока цена Биткоина выше 20-недельной экспоненциальной скользящей средней (EMA) и выходит, когда цена закрывается ниже нее.
Стратегия использует еженедельный график и 20-недельную EMA в качестве фильтра тренда, входя только тогда, когда цена выше 20-недельной EMA. 5-периодный ATR используется для динамической корректировки расстояния последующей остановки, которая затягивается в состоянии осторожности.
Простота и эффективность: логика стратегии проста, понятна, легко понять и реализовать, одновременно эффективно отражая основные восходящие тенденции Биткоина.
Динамическая стоп-лосс: позиция стоп-лосса динамически корректируется на основе условий волатильности рынка, контролируя снижение прибыли, что является относительно сбалансированным и надежным подходом к управлению стоп-лосом.
Фильтрация трендов: путем фильтрации с более высоким уровнем скользящей средней (20-недельной EMA), стратегия входит только во время четких восходящих тенденций, значительно улучшая показатель выигрыша и соотношение риск-вознаграждение стратегии.
Размер позиции: по умолчанию торговать с полной позицией, максимизируя использование капитала и повышая эффективность капитала.
Широкая применимость: логика стратегии может быть легко перенесена на другие активы и рынки, имея хорошую обобщаемость.
Применимость параметров: параметры стратегии устанавливаются на основе характеристик рынка биткойнов, и их применимость к другим рынкам должна быть подтверждена и может потребовать оптимизации параметров для разных активов.
Определение тенденций: Стратегия в основном опирается на технические показатели, такие как EMA и ATR более высокого уровня, для оценки тенденций, которые не являются столь всеобъемлющими, как фундаментальный анализ для определения рыночных условий, и подвержены ошибкам в переломные моменты рынка.
Риск стоп-лосса: хотя динамические стоп-лосы могут в определенной степени контролировать риск, значительные снижения могут произойти в экстремальных рыночных условиях (таких как резкие падения или быстрые глубокие колебания).
Потенциал прибыли: стратегия хорошо работает в однонаправленных восходящих тенденциях, но с большей вероятностью попадет в дилемму частых стоп-потерь на рынках с ограниченным диапазоном, потенциально ограничивая общий потенциал прибыли.
Реальная производительность: в то время как стратегия хорошо работает при обратном тестировании, на реальную торговлю влияют такие факторы, как скольжение и комиссии, и фактические результаты могут отличаться от теоретических доходов, что требует тщательной оценки.
Определение тренда: рассмотреть возможность введения более высокоуровневых скользящих средних, показателей волатильности или даже фундаментальных данных для повышения точности и надежности определения тренда.
Динамические параметры: позиции стоп-лосса и параметры ATR могут быть дополнительно оптимизированы путем внедрения механизмов динамической корректировки, связанных с ценой или волатильностью, для адаптации к различным состояниям рынка.
Размер позиции: динамически корректировать размер позиции на основе таких показателей, как сила тренда и волатильность, увеличивать размер позиции при сильной тенденции и уменьшать размер позиции при высокой волатильности для улучшения соотношения риск-прибыль.
Механизм длинного/короткого рынка: ввести механизм короткой продажи на медвежьих рынках для расширения применимости и потенциальной прибыльности стратегии.
Сочетание стратегий: сочетание этой стратегии с другими стратегиями (например, средней реверсией) для дополнения сильных сторон друг друга и повышения стабильности и рентабельности стратегии.
Стратегия Bitcoin Momentum Trailing Stop - это простая и эффективная стратегия импульса, которая фиксирует сильные восходящие тренды Биткойна с использованием скользящих средних и индикаторов ATR более высокого уровня, контролируя снижающийся риск с помощью динамически регулируемых стоп-потерь. Эта стратегия может служить базовым шаблоном, и инвесторы могут дополнительно усовершенствовать ее на основе своих собственных потребностей и опыта в таких областях, как определение тренда, оптимизация параметров, управление позициями и длинные/короткие механизмы, или комбинировать ее с другими стратегиями для достижения более высокого соотношения риск-вознаграждение.
/*backtest start: 2023-03-08 00:00:00 end: 2024-03-07 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/ // © ZenAndTheArtOfTrading // ------------------------------------------------------------------------------------------------------ // System Concept: Capture as much Bitcoin upside volatility as possible while side-stepping downside volatility. // Entry Rule #1: Bitcoin must be trading above higher-timeframe EMA (Weekly 20 EMA) // Entry Rule #2: Bitcoin must not be in 'caution' condition // -> Caution: True if BTC's recent swing high minus its current low is > 1.5x ATR OR close < Daily EMA // Trailing Stop: Stop is trailed 1 ATR from recent swing high, OR 20% of ATR if in caution condition // ------------------------------------------------------------------------------------------------------ // @version=5 strategy("Bitcoin Momentum Strategy", overlay=true) // Get user input var const string G_STRATEGY = "Strategy Entry Settings" var const string G_EXIT = "Strategy Exit Settings" var const string G_FILTER = "Strategy Filters" i_HigherTimeframe = input.timeframe("W", "Higher Timeframe", group=G_STRATEGY, tooltip="Higher timeframe MA reference") i_EmaLength = input.int(20, "EMA Length", group=G_STRATEGY, tooltip="Moving average period length") i_AtrLength = input.int(5, "ATR Length", group=G_STRATEGY, tooltip="ATR period length") i_TrailStopSource = input.source(low, "Trail Stop Source", group=G_EXIT, tooltip="Lowest price source for trailing stop") i_TrailStopLookback = input.int(7, "Trail Stop Lookback", group=G_EXIT, tooltip="How many bars to look back for trailing price source") i_TrailStopMulti = input.float(0.2, "Trailing Stop Ratchet Multiplier", group=G_EXIT, tooltip="When momentum is yellow (caution), shrink ATR distance for TS by this much") i_StartTime = input(timestamp("01 Jan 2000 13:30 +0000"), "Start Filter", group=G_FILTER, tooltip="Start date & time to begin searching for setups") i_EndTime = input(timestamp("1 Jan 2099 19:30 +0000"), "End Filter", group=G_FILTER, tooltip="End date & time to stop searching for setups") // Define custom security function which does not repaint RequestSecurity_NonRP(_market, _res, _exp) => request.security(_market, _res, _exp[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1] // Define date filter check DateFilter(int start, int end) => time >= start and time <= end // Get indicator values float atrValue = ta.atr(i_AtrLength) float emaValue = ta.ema(close, i_EmaLength) float htfEmaValue = RequestSecurity_NonRP(syminfo.tickerid, i_HigherTimeframe, emaValue) float marketPrice = close // Check for bullishness / bearish volatility caution bool isBullish = marketPrice > htfEmaValue bool isCaution = isBullish and (ta.highest(high, 7) - low > (atrValue * 1.5) or marketPrice < emaValue) // Set momentum color color bgCol = color.red if isBullish[1] bgCol := color.green if isCaution[1] bgCol := color.orange // Handle strategy entry, and reset trailing stop var float trailStop = na if isBullish and strategy.position_size == 0 and not isCaution strategy.entry(id="Buy", direction=strategy.long) trailStop := na // Update trailing stop float temp_trailStop = ta.highest(i_TrailStopSource, i_TrailStopLookback) - (isCaution[1] ? atrValue * i_TrailStopMulti : atrValue) if strategy.position_size > 0 if temp_trailStop > trailStop or na(trailStop) trailStop := temp_trailStop // Handle strategy exit if (close < trailStop or close < htfEmaValue) and barstate.isconfirmed strategy.close("Buy", comment="Sell") // Draw trailing stop, HTF EMA and color-coded momentum indicator plotshape(true, color=bgCol, style=shape.square, location=location.bottom, size=size.auto, title="Momentum Strength") plot(htfEmaValue, color=close > htfEmaValue ? color.green : color.red, linewidth=2, title="HTF EMA") plot(emaValue, color=close > emaValue ? color.green : color.red, linewidth=1, title="CTF EMA") plot(strategy.position_size[1] > 0 ? trailStop : na, style=plot.style_linebr, color=color.red, title="Stop Loss")