- Площадь
- Стратегия прорыва "бычьего флага" на основе коэффициента риска и вознаграждения и технического анализа
Стратегия прорыва "бычьего флага" на основе коэффициента риска и вознаграждения и технического анализа
Автор:
Чао Чжан, Дата: 2024-05-28 10:47:51
Тэги:
Обзор
Эта стратегия основана на модели бычьего флага. Она покупает, когда цена выходит выше максимума диапазона флага, устанавливает стоп-лосс на нижней границе диапазона флага и устанавливает целевую прибыль в соответствии с соотношением риск-вознаграждение. Стратегия использует функции самой высокой и самой низкой цены для определения диапазона флага и определяет прорыв, сравнивая текущую цену закрытия с самой высокой ценой предыдущей свечи.
Принцип стратегии
- Определить модель бычьего флага: рассчитать высокий и низкий диапазон флага с использованием функций самой высокой и самой низкой цены, и определить, если текущая цена превышает высокий флаг.
- Вход: Если текущая цена закрытия превышает самую высокую цену предыдущей свечи, а самая высокая цена предыдущей свечи ниже флага, то покупать.
- Стоп-лосс: цена стоп-лосса устанавливается на уровне флага минус значение буфера.
- Приобрести прибыль: рассчитать целевую цену на основе соотношения риск-вознаграждение. Целевая цена = цена входа + (цена входа - цена остановки потери) * соотношение риск-вознаграждение
Преимущества стратегии
- Основываясь на классическом паттерне бычьего флага, он может поймать возможности отката в сильных тенденциях.
- Стоп-лосс устанавливается на минимальном уровне, что делает риск контролируемым.
- Используйте соотношение риск-вознаграждение для установления целевой цены и поиска более высокой доходности.
- Логика кода ясна и использует встроенные функции TradingView, что облегчает понимание и изменение.
Стратегические риски
- На волатильном рынке или когда тенденция неясна, цены могут быстро перевернуться после выхода из флага, что приводит к значительным снижениям.
- Неправильное установление значения буфера может привести к преждевременным стоп-потерям.
- Фактическое соотношение риск-прибыль может не достигать установленного значения.
- Стратегия может не сработать для некоторых деформированных шаблонов флага.
Направления оптимизации стратегии
- Подумайте о добавлении дополнительных условий для фильтрации сигналов, таких как изменения объема торговли, направления скользящей средней, и т. д., чтобы улучшить качество сигнала.
- Оптимизировать параметры в соответствии с различными характеристиками рынка, такими как длина диапазона флага, соотношение риск-прибыль, значение буфера стоп-лосса и т.д.
- Рассмотреть возможность создания позиций по партиям и использования динамических стоп-потерь для снижения риска.
- Добавьте управление позициями для контроля общего риска.
Резюме
Эта стратегия - это стратегия выхода на рынок, основанная на классическом паттерне бычьего флага, который улавливает возможности продолжения тренда путем выявления диапазона флага и ценового выхода. Преимущества стратегии заключаются в явной логике и контролируемом риске, но она сталкивается с определенными рисками на волатильных рынках или с изменением тренда.
/*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)
Больше