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

Система торговли многопериодным ценовым уровнем на основе ключевых ценовых уровней

Автор:Чао Чжан, Дата: 2025-01-06 16:06:30
Тэги:ОВДМестонахождениеPMHPMLPDHПДЛМ.А.РСИATRADX

img

Обзор

Эта стратегия представляет собой систему трейдинга, основанную на нескольких ключевых уровнях цен. Она в основном отслеживает шесть критических уровней цен: высокий день (HOD), низкий день (LOD), премаркетный высокий (PMH), премаркетный низкий (PML), предыдущий день высокий (PDH) и предыдущий день низкий (PDL).

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

Основная логика включает в себя несколько ключевых компонентов:

  1. Расчет ключевого уровня цен: использует функцию request.security для получения данных о ценах с разных периодов времени для расчета шести ключевых уровней цен.
  2. Условия входа: открывает длинные позиции, когда цена превышает PMH или PDH; открывает короткие позиции, когда цена превышает PML или PDL.
  3. Условия выхода: закрывает длинные позиции, когда цена достигает HOD; закрывает короткие позиции, когда цена достигает LOD.
  4. Визуальное представление: Ценовые уровни обозначаются различными цветовыми горизонтальными линиями - белым для HOD, фиолетовым для LOD, оранжевым для PDH, синим для PDL, зеленым для PMH и красным для PML.

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

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

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

  1. Риск ложного прорыва: рынок может генерировать ложные прорывы, приводящие к неправильным сигналам.
  2. Зависимость от волатильности: стратегия может быть менее эффективной в условиях низкой волатильности.
  3. Недостаточный контроль рисков: отсутствует динамический механизм стоп-лосса и получения прибыли.
  4. Зависимость от рыночной среды: может привести к частым сделкам на разных рынках.
  5. Влияние сдвига: может иметь место значительный сдвиг на менее ликвидных рынках.

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

  1. Добавить фильтры технических показателей:
  • Включить RSI для фильтрации перекупленности/перепроданности
  • Использование ATR для динамического размещения стоп-лосса
  • Интегрировать ADX для подтверждения силы тренда
  1. Улучшить управление рисками:
  • Внедрение динамических механизмов стоп-лосса
  • Добавить функцию " Trailing Stop "
  • Создать масштабную систему получения прибыли
  1. Оптимизировать подтверждение сигнала:
  • Добавить подтверждение объема
  • Включить подтверждение тенденции на несколько временных рамок
  • Установка механизма подтверждения задержки сигнала

Резюме

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


/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradingbauhaus

//@version=6
strategy("HOD/LOD/PMH/PML/PDH/PDL Strategy by tradingbauhaus ", shorttitle="HOD/LOD Strategy", overlay=true)

// Daily high and low
dailyhigh = request.security(syminfo.tickerid, 'D', high)
dailylow = request.security(syminfo.tickerid, 'D', low)

// Previous day high and low
var float previousdayhigh = na
var float previousdaylow = na
high1 = request.security(syminfo.tickerid, 'D', high[1])
low1 = request.security(syminfo.tickerid, 'D', low[1])
high0 = request.security(syminfo.tickerid, 'D', high[0])
low0 = request.security(syminfo.tickerid, 'D', low[0])

// Yesterday high and low
if (hour == 9 and minute > 30) or hour > 10
    previousdayhigh := high1
    previousdaylow := low1
else
    previousdayhigh := high0
    previousdaylow := low0

// Premarket high and low
t = time("1440", "0000-0930") // 1440 is the number of minutes in a whole day.
is_first = na(t[1]) and not na(t) or t[1] < t
ending_hour = 9
ending_minute = 30

var float pm_high = na
var float pm_low = na

if is_first and barstate.isnew and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute))
    pm_high := high
    pm_low := low
else 
    pm_high := pm_high[1]
    pm_low := pm_low[1]

if high > pm_high and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute))
    pm_high := high
    
if low < pm_low and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute))
    pm_low := low

// Plotting levels
plot(dailyhigh, style=plot.style_line, title="Daily high", color=color.white, linewidth=1, trackprice=true)
plot(dailylow, style=plot.style_line, title="Daily low", color=color.purple, linewidth=1, trackprice=true)
plot(previousdayhigh, style=plot.style_line, title="Previous Day high", color=color.orange, linewidth=1, trackprice=true)
plot(previousdaylow, style=plot.style_line, title="Previous Day low", color=color.blue, linewidth=1, trackprice=true)
plot(pm_high, style=plot.style_line, title="Premarket high", color=color.green, linewidth=1, trackprice=true)
plot(pm_low, style=plot.style_line, title="Premarket low", color=color.red, linewidth=1, trackprice=true)

// Strategy logic
// Long entry: Price crosses above PMH or PDH
if (ta.crossover(close, pm_high) or ta.crossover(close, previousdayhigh)) and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

// Short entry: Price crosses below PML or PDL
if (ta.crossunder(close, pm_low) or ta.crossunder(close, previousdaylow)) and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

// Exit long: Price reaches HOD
if strategy.position_size > 0 and ta.crossover(close, dailyhigh)
    strategy.close("Long")

// Exit short: Price reaches LOD
if strategy.position_size < 0 and ta.crossunder(close, dailylow)
    strategy.close("Short")

Связанные

Больше