В процессе загрузки ресурсов... загрузка...

Стратегия прорыва "бычьего флага" на основе коэффициента риска и вознаграждения и технического анализа

Автор:Чао Чжан, Дата: 2024-05-28 10:47:51
Тэги:

img

Обзор

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

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

  1. Определить модель бычьего флага: рассчитать высокий и низкий диапазон флага с использованием функций самой высокой и самой низкой цены, и определить, если текущая цена превышает высокий флаг.
  2. Вход: Если текущая цена закрытия превышает самую высокую цену предыдущей свечи, а самая высокая цена предыдущей свечи ниже флага, то покупать.
  3. Стоп-лосс: цена стоп-лосса устанавливается на уровне флага минус значение буфера.
  4. Приобрести прибыль: рассчитать целевую цену на основе соотношения риск-вознаграждение. Целевая цена = цена входа + (цена входа - цена остановки потери) * соотношение риск-вознаграждение

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

  1. Основываясь на классическом паттерне бычьего флага, он может поймать возможности отката в сильных тенденциях.
  2. Стоп-лосс устанавливается на минимальном уровне, что делает риск контролируемым.
  3. Используйте соотношение риск-вознаграждение для установления целевой цены и поиска более высокой доходности.
  4. Логика кода ясна и использует встроенные функции TradingView, что облегчает понимание и изменение.

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

  1. На волатильном рынке или когда тенденция неясна, цены могут быстро перевернуться после выхода из флага, что приводит к значительным снижениям.
  2. Неправильное установление значения буфера может привести к преждевременным стоп-потерям.
  3. Фактическое соотношение риск-прибыль может не достигать установленного значения.
  4. Стратегия может не сработать для некоторых деформированных шаблонов флага.

Направления оптимизации стратегии

  1. Подумайте о добавлении дополнительных условий для фильтрации сигналов, таких как изменения объема торговли, направления скользящей средней, и т. д., чтобы улучшить качество сигнала.
  2. Оптимизировать параметры в соответствии с различными характеристиками рынка, такими как длина диапазона флага, соотношение риск-прибыль, значение буфера стоп-лосса и т.д.
  3. Рассмотреть возможность создания позиций по партиям и использования динамических стоп-потерь для снижения риска.
  4. Добавьте управление позициями для контроля общего риска.

Резюме

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


/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bull Flag Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Параметры стратегии
riskRewardRatio = 3.0
flagLength = input.int(5, title="Flag Length")
stopLossBuffer = input.float(0.01, title="Stop Loss Buffer", step=0.001)

// Функция для вычисления стоп-лосса и тейк-профита
calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) =>
    takeProfitPrice = entryPrice + (entryPrice - stopLossPrice) * riskRewardRatio
    [stopLossPrice, takeProfitPrice]

// Найти минимум и максимум флага
flagLow = ta.lowest(low, flagLength)
flagHigh = ta.highest(high, flagLength)

// Условия для формирования бычьего флага
isBullFlag = high[1] < flagHigh and close > high[1]

// Условия для входа в сделку
if (isBullFlag)
    entryPrice = close
    stopLossPrice = flagLow - stopLossBuffer
    [calculatedStopLoss, calculatedTakeProfit] = calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio)
    
    // Открыть длинную позицию
    strategy.entry("Bull Flag Long", strategy.long)
    strategy.exit("Take Profit", "Bull Flag Long", limit=calculatedTakeProfit)
    strategy.exit("Stop Loss", "Bull Flag Long", stop=calculatedStopLoss)
    label.new(bar_index, high, "Buy", color=color.green, textcolor=color.white, style=label.style_label_down)


Больше