Расширенная стратегия торговли на основе множественных прорывов моделей

DOJI PIN BAR HAMMER BREAKOUT CANDLESTICK RSI
Дата создания: 2025-02-20 13:33:36 Последнее изменение: 2025-02-20 13:33:36
Копировать: 0 Количество просмотров: 349
2
Подписаться
319
Подписчики

Расширенная стратегия торговли на основе множественных прорывов моделей Расширенная стратегия торговли на основе множественных прорывов моделей

Обзор

Стратегия является высокотехнологичной торговой системой, основанной на распознавании форм с использованием нескольких технологий, объединяющей анализ форм с использованием криптовалюты и принципы прорывного трейдинга. Стратегия способна распознавать и торговать различными классическими формами с использованием криптовалюты, включая формы с крестным звездочкой (Doji), молотком (Hammer) и иглой (Pin Bar), а также использовать систему подтверждения двойных ниток для повышения надежности торгового сигнала.

Стратегический принцип

Основная логика стратегии основана на следующих ключевых элементах:

  1. Система распознавания форм - с помощью точных математических вычислений идентифицирует три ключевых формы рисунка: крестозвезды, скобки и игольчатые формы. Каждая форма имеет свои уникальные критерии идентификации, такие как соотношение объекта к теневой линии.
  2. Механизм подтверждения прорыва - используется система подтверждения двойных ниток, требующая, чтобы вторая нитка прорвала высокую точку предыдущей нитки (более) или низкую точку (менее) для уменьшения ложного сигнала.
  3. Определение целевой цены - используется регулируемый период отсчета (по умолчанию 20 циклов) для определения ближайшего максимума или минимума в качестве целевой цены, чтобы стратегия была динамически адаптируемой.

Стратегические преимущества

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

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

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

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

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Target(Made by Karan)", overlay=true)

// Input for lookback period
lookbackPeriod = input.int(20, title="Lookback Period for Recent High/Low", minval=1)

// --- Pattern Identification Functions ---

// Identify Doji pattern
isDoji(open, high, low, close) =>
    bodySize = math.abs(close - open)
    rangeSize = high - low
    bodySize <= rangeSize * 0.1  // Small body compared to total range

// Identify Hammer pattern
isHammer(open, high, low, close) =>
    bodySize = math.abs(close - open)
    lowerShadow = open - low
    upperShadow = high - close
    bodySize <= (high - low) * 0.3 and lowerShadow > 2 * bodySize and upperShadow <= bodySize * 0.3  // Long lower shadow, small upper shadow

// Identify Pin Bar pattern
isPinBar(open, high, low, close) =>
    bodySize = math.abs(close - open)
    rangeSize = high - low
    upperShadow = high - math.max(open, close)
    lowerShadow = math.min(open, close) - low
    (upperShadow > bodySize * 2 and lowerShadow < bodySize) or (lowerShadow > bodySize * 2 and upperShadow < bodySize)  // Long shadow on one side

// --- Candle Breakout Logic ---

// Identify the first green candle (Bullish)
is_first_green_candle = close > open

// Identify the breakout above the high of the first green candle
breakout_green_candle = ta.crossover(close, high[1]) and is_first_green_candle[1]

// Identify the second green candle confirming the breakout
second_green_candle = close > open and breakout_green_candle[1]

// Find the recent high (for the target)
recent_high = ta.highest(high, lookbackPeriod)  // Use adjustable lookback period

// Plot the green rectangle box if the conditions are met and generate buy signal
var float start_price_green = na
var float end_price_green = na

if second_green_candle
    start_price_green := low[1]  // Low of the breakout green candle
    end_price_green := recent_high  // The most recent high in the lookback period
    strategy.entry("Buy", strategy.long)  // Buy signal

// --- Red Candle Logic ---

// Identify the first red candle (Bearish)
is_first_red_candle = close < open

// Identify the breakdown below the low of the first red candle
breakdown_red_candle = ta.crossunder(close, low[1]) and is_first_red_candle[1]

// Identify the second red candle confirming the breakdown
second_red_candle = close < open and breakdown_red_candle[1]

// Find the recent low (for the target)
recent_low = ta.lowest(low, lookbackPeriod)  // Use adjustable lookback period

// Plot the red rectangle box if the conditions are met and generate sell signal
var float start_price_red = na
var float end_price_red = na

if second_red_candle
    start_price_red := high[1]  // High of the breakout red candle
    end_price_red := recent_low  // The most recent low in the lookback period
    strategy.entry("Sell", strategy.short)  // Sell signal

// --- Pattern Breakout Logic for Doji, Hammer, Pin Bar ---

// Detect breakout of Doji, Hammer, or Pin Bar patterns
var float start_price_pattern = na
var float end_price_pattern = na

// Check for Doji breakout
if isDoji(open, high, low, close) and ta.crossover(close, high[1])
    start_price_pattern := low[1]  // Low of the breakout Doji
    end_price_pattern := recent_high  // The most recent high in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = end_price_pattern, bottom = start_price_pattern, border_color = color.new(color.blue, 0), bgcolor = color.new(color.blue, 80))
    strategy.entry("Buy Doji", strategy.long)  // Buy signal for Doji breakout

// Check for Hammer breakout
if isHammer(open, high, low, close) and ta.crossover(close, high[1])
    start_price_pattern := low[1]  // Low of the breakout Hammer
    end_price_pattern := recent_high  // The most recent high in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = end_price_pattern, bottom = start_price_pattern, border_color = color.new(color.blue, 0), bgcolor = color.new(color.blue, 80))
    strategy.entry("Buy Hammer", strategy.long)  // Buy signal for Hammer breakout

// Check for Pin Bar breakout
if isPinBar(open, high, low, close) and ta.crossover(close, high[1])
    start_price_pattern := low[1]  // Low of the breakout Pin Bar
    end_price_pattern := recent_high  // The most recent high in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = end_price_pattern, bottom = start_price_pattern, border_color = color.new(color.blue, 0), bgcolor = color.new(color.blue, 80))
    strategy.entry("Buy Pin Bar", strategy.long)  // Buy signal for Pin Bar breakout

// Check for bearish Doji breakout
if isDoji(open, high, low, close) and ta.crossunder(close, low[1])
    start_price_pattern := high[1]  // High of the breakdown Doji
    end_price_pattern := recent_low  // The most recent low in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = start_price_pattern, bottom = end_price_pattern, border_color = color.new(color.orange, 0), bgcolor = color.new(color.orange, 80))
    strategy.entry("Sell Doji", strategy.short)  // Sell signal for Doji breakdown

// Check for bearish Hammer breakout
if isHammer(open, high, low, close) and ta.crossunder(close, low[1])
    start_price_pattern := high[1]  // High of the breakdown Hammer
    end_price_pattern := recent_low  // The most recent low in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = start_price_pattern, bottom = end_price_pattern, border_color = color.new(color.orange, 0), bgcolor = color.new(color.orange, 80))
    strategy.entry("Sell Hammer", strategy.short)  // Sell signal for Hammer breakdown

// Check for bearish Pin Bar breakout
if isPinBar(open, high, low, close) and ta.crossunder(close, low[1])
    start_price_pattern := high[1]  // High of the breakdown Pin Bar
    end_price_pattern := recent_low  // The most recent low in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = start_price_pattern, bottom = end_price_pattern, border_color = color.new(color.orange, 0), bgcolor = color.new(color.orange, 80))
    strategy.entry("Sell Pin Bar", strategy.short)  // Sell signal for Pin Bar breakdown

// Optional: Plot shapes for the green sequence of candles
plotshape(series=is_first_green_candle, location=location.belowbar, color=color.green, style=shape.labelup, text="1st Green")
plotshape(series=breakout_green_candle, location=location.belowbar, color=color.blue, style=shape.labelup, text="Breakout")
plotshape(series=second_green_candle, location=location.belowbar, color=color.orange, style=shape.labelup, text="2nd Green")

// Optional: Plot shapes for the red sequence of candles
plotshape(series=is_first_red_candle, location=location.abovebar, color=color.red, style=shape.labeldown, text="1st Red")
plotshape(series=breakdown_red_candle, location=location.abovebar, color=color.blue, style=shape.labeldown, text="Breakdown")
plotshape(series=second_red_candle, location=location.abovebar, color=color.orange, style=shape.labeldown, text="2nd Red")