Многоуровневая еженедельная торговая стратегия поддержки и сопротивления, основанная на возврате к среднему значению

Pivot SR MR SMA RSI ATR MA VOL
Дата создания: 2025-02-18 18:04:15 Последнее изменение: 2025-02-18 18:04:15
Копировать: 2 Количество просмотров: 441
1
Подписаться
1617
Подписчики

Многоуровневая еженедельная торговая стратегия поддержки и сопротивления, основанная на возврате к среднему значению

Обзор

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

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

В основе стратегии лежит вычисление центральных точек на этой неделе с использованием максимальных, минимальных и закрытых цен предыдущей недели, а затем определение нескольких уровней поддержки и сопротивления в зависимости от заданного расстояния между точками. При совершении покупок, когда цена касается поддержки, и установлении целевой прибыли на соответствующем уровне сопротивления. Круговые точки = (высочайшая цена на прошлой неделе + низкая цена на прошлой неделе + цена на закрытие на прошлой неделе) / 3 Стратегия позволяет иметь одновременно не более 4 позиций, каждая из которых соответствует различным позициям поддержки и сопротивления. Все позиции в начале каждой недели пересчитывают новый уровень торгов. Такая конструкция гарантирует непрерывность торговли и адаптируется к изменениям рынка.

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

  1. Логика транзакций ясна, проста для понимания и выполнения.
  2. Поэтапное создание хранилищ снижает риск однократной сделки
  3. Использование опоры на уровне окружности для уменьшения влияния дневного шума
  4. Стратегия может гибко корректировать параметры в зависимости от особенностей рынка
  5. Контроль риска с помощью процентной доли
  6. Нет времени на введение ограничений на ликвидность и предоставление возможности для получения прибыли

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

  1. Без установки стоп-лосса, что может привести к более крупным отступлениям на рынке с сильным трендом
  2. Некоторые позиции могут занять больше денег
  3. Ложные сигналы могут появиться на рынках с высокой волатильностью
  4. Неправильная установка опор может привести к неразумному расположению складов Для снижения риска рекомендуется добавлять трендовые фильтры, открывать позиции только в восходящем тренде; также можно установить динамические стоп-лоски на основе ATR.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 1d
basePeriod: 1d
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/
// © ViZiV

//@version=5
strategy("Weekly Pivot Strategy, Created by ViZiV", overlay=true, pyramiding=50, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, dynamic_requests=true)

// This is my first COMPLETED strategy, go easy on me :) - Feel free to imrprove upon this script by adding more features if you feel up to the task. Im 100% confiedent there are better coders than me :) I'm still learning.

// This is a LONG ONLY SWING STRATEGY (Patience REQUIRED) that being said, you can go short at you're own discretion. I prefer to use on NQ / US100 / USTech 100 but not limited to it. Im sure it can work in most markets. "You'll need to change settings to suit you're market".

// IMPORTANT NOTE: "default_qty_type=strategy.percent_of_equity" Can be changed to "Contacts" within the properties tab which allow you to see backtest of other markets. Reccomend 1 contract but it comes to preference.

// Inputs for support/resistance distances (Defined by Points). // IMPORTANT NOTE: Completely user Defined. Figure out best settings for what you're trading. Each market is different with different characteristics. Up to you to figure out YOU'RE market volatility for better results. 
s1_offset = input.float(155, "S1 Distance", step=1)
s2_offset = input.float(310, "S2 Distance", step=1)
s3_offset = input.float(465, "S3 Distance", step=1)
s4_offset = input.float(775, "S4 Distance", step=1)
r1_offset = input.float(155, "R1 Distance", step=1)
r2_offset = input.float(310, "R2 Distance", step=1)
r3_offset = input.float(465, "R3 Distance", step=1)
r4_offset = input.float(775, "R4 Distance", step=1)

// Weekly pivot calculation
var float pivot = na
var float s1 = na
var float s2 = na
var float s3 = na
var float s4 = na
var float r1 = na
var float r2 = na
var float r3 = na
var float r4 = na

// Get weekly data (Pivot Calculation)
prevWeekHigh = request.security(syminfo.tickerid, "W", high[1], lookahead=barmerge.lookahead_on)
prevWeekLow = request.security(syminfo.tickerid, "W", low[1], lookahead=barmerge.lookahead_on)
prevWeekClose = request.security(syminfo.tickerid, "W", close[1], lookahead=barmerge.lookahead_on)

// Track active trades
var array<string> entry_ids = array.new<string>(0)
var array<float> profit_targets = array.new<float>(0)

// Update weekly levels
isNewWeek = ta.change(time("W")) != 0
if isNewWeek or na(pivot)
    pivot := (prevWeekHigh + prevWeekLow + prevWeekClose) / 3
    s1 := pivot - s1_offset
    s2 := pivot - s2_offset
    s3 := pivot - s3_offset
    s4 := pivot - s4_offset
    r1 := pivot + r1_offset
    r2 := pivot + r2_offset
    r3 := pivot + r3_offset
    r4 := pivot + r4_offset

// Plot current week's levels
plot(pivot, "Pivot", color=color.gray, linewidth=2)
plot(s1, "S1", color=color.blue, linewidth=1)
plot(s2, "S2", color=color.blue, linewidth=1)
plot(s3, "S3", color=color.blue, linewidth=1)
plot(s4, "S4", color=color.blue, linewidth=1)
plot(r1, "R1", color=color.red, linewidth=1)
plot(r2, "R2", color=color.red, linewidth=1)
plot(r3, "R3", color=color.red, linewidth=1)
plot(r4, "R4", color=color.red, linewidth=1)

// Function to create unique trade entries
checkEntry(level, target, entryNumber) =>
    currentWeek = str.tostring(year(time)) + "_" + str.tostring(weekofyear(time))
    entryId = "Entry" + str.tostring(entryNumber) + "_W" + currentWeek
    
    if low <= level and not array.includes(entry_ids, entryId)
        array.push(entry_ids, entryId)
        array.push(profit_targets, target)
        strategy.entry(entryId, strategy.long)
        strategy.exit("Exit" + entryId, entryId, limit=target)

// Check all entry levels
checkEntry(s1, r1, 1)
checkEntry(s2, r2, 2)
checkEntry(s3, r3, 3)
checkEntry(s4, r4, 4)

// Clean up completed trades using while loop
i = array.size(entry_ids) - 1
while i >= 0
    entryId = array.get(entry_ids, i)
    target = array.get(profit_targets, i)
    
    if high >= target
        array.remove(entry_ids, i)
        array.remove(profit_targets, i)
    i := i - 1