Биткойн-моментальный тренд

Автор:Чао Чжан, Дата: 2024-03-08 16:20:16
Тэги:

img

Обзор стратегии

Стратегия Bitcoin Momentum Trailing Stop - это долгосрочная стратегия, основанная только на импульсе, предназначенная для захвата восходящих тенденций Биткоина, снижая снижающийся риск с помощью динамически скорректированных стоп-потерь. Стратегия использует простую, но умную технику, которая затягивает стоп-потерь во время высокой медвежьей волатильности для защиты открытых прибылей и ослабляет стоп-потерь во время устойчивого бычьего импульса, чтобы позволить прибыли. Стратегия остается инвестированной до тех пор, пока цена Биткоина выше 20-недельной экспоненциальной скользящей средней (EMA) и выходит, когда цена закрывается ниже нее.

Принцип стратегии

  1. Текущая цена биткоина должна торговаться выше высокой временной рамки EMA (20-недельной).
  2. Биткойн не должен находиться в состоянии осторожности, определяемом как недавний высокий показатель минус текущий низкий показатель, превышающий 1,5 раза ATR, или ежедневный закрытие ниже ежедневной 20 EMA.
  3. Стоп-лосс устанавливается на последнем высоком уровне минус 1 ATR или минус 20% ATR (т.е. 0,2 ATR), если он находится в состоянии осторожности.
  4. Выход на следующем полюсе открывается, когда цена закрывается ниже стоп-лосса.

Стратегия использует еженедельный график и 20-недельную EMA в качестве фильтра тренда, входя только тогда, когда цена выше 20-недельной EMA. 5-периодный ATR используется для динамической корректировки расстояния последующей остановки, которая затягивается в состоянии осторожности.

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

  1. Простота и эффективность: логика стратегии проста, понятна, легко понять и реализовать, одновременно эффективно отражая основные восходящие тенденции Биткоина.

  2. Динамическая стоп-лосс: позиция стоп-лосса динамически корректируется на основе условий волатильности рынка, контролируя снижение прибыли, что является относительно сбалансированным и надежным подходом к управлению стоп-лосом.

  3. Фильтрация трендов: путем фильтрации с более высоким уровнем скользящей средней (20-недельной EMA), стратегия входит только во время четких восходящих тенденций, значительно улучшая показатель выигрыша и соотношение риск-вознаграждение стратегии.

  4. Размер позиции: по умолчанию торговать с полной позицией, максимизируя использование капитала и повышая эффективность капитала.

  5. Широкая применимость: логика стратегии может быть легко перенесена на другие активы и рынки, имея хорошую обобщаемость.

Стратегические риски

  1. Применимость параметров: параметры стратегии устанавливаются на основе характеристик рынка биткойнов, и их применимость к другим рынкам должна быть подтверждена и может потребовать оптимизации параметров для разных активов.

  2. Определение тенденций: Стратегия в основном опирается на технические показатели, такие как EMA и ATR более высокого уровня, для оценки тенденций, которые не являются столь всеобъемлющими, как фундаментальный анализ для определения рыночных условий, и подвержены ошибкам в переломные моменты рынка.

  3. Риск стоп-лосса: хотя динамические стоп-лосы могут в определенной степени контролировать риск, значительные снижения могут произойти в экстремальных рыночных условиях (таких как резкие падения или быстрые глубокие колебания).

  4. Потенциал прибыли: стратегия хорошо работает в однонаправленных восходящих тенденциях, но с большей вероятностью попадет в дилемму частых стоп-потерь на рынках с ограниченным диапазоном, потенциально ограничивая общий потенциал прибыли.

  5. Реальная производительность: в то время как стратегия хорошо работает при обратном тестировании, на реальную торговлю влияют такие факторы, как скольжение и комиссии, и фактические результаты могут отличаться от теоретических доходов, что требует тщательной оценки.

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

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

  2. Динамические параметры: позиции стоп-лосса и параметры ATR могут быть дополнительно оптимизированы путем внедрения механизмов динамической корректировки, связанных с ценой или волатильностью, для адаптации к различным состояниям рынка.

  3. Размер позиции: динамически корректировать размер позиции на основе таких показателей, как сила тренда и волатильность, увеличивать размер позиции при сильной тенденции и уменьшать размер позиции при высокой волатильности для улучшения соотношения риск-прибыль.

  4. Механизм длинного/короткого рынка: ввести механизм короткой продажи на медвежьих рынках для расширения применимости и потенциальной прибыльности стратегии.

  5. Сочетание стратегий: сочетание этой стратегии с другими стратегиями (например, средней реверсией) для дополнения сильных сторон друг друга и повышения стабильности и рентабельности стратегии.

Резюме стратегии

Стратегия 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")

Больше