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

Признание многообразных моделей и стратегия торговли на уровне SR

Автор:Чао Чжан, Дата: 2024-12-05 16:30:14
Тэги:SRАртериальное давлениеТПFIBOATRSMA

img

Обзор

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

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

Стратегия использует механизм тройной проверки для принятия торговых решений: во-первых, она идентифицирует двойные нижние модели с помощью конкретных алгоритмов, включая более резкий Adam bottom и более округлый Eve bottom; во-вторых, она использует уровни ретракции Фибоначчи (0,618 и 1,618) для определения целевых зон; наконец, она подтверждает торговые сигналы с помощью проверки уровня поддержки и сопротивления. Торговые сигналы генерируются только при одновременном выполнении условий распознавания шаблонов, уровней Фибоначчи и уровней поддержки / сопротивления. В частности, длинный сигнал запускается, когда уровень поддержки / сопротивления выше расширения 1,618 Фибоначчи, в то время как короткий сигнал запускается, когда уровень поддержки / сопротивления ниже расширения 0,618 Фибоначчи.

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

  1. Многочисленные механизмы проверки значительно повышают надежность торговых сигналов
  2. Алгоритмы распознавания моделей точно фиксируют переломные моменты на рынке
  3. Уровни Фибоначчи дают точные целевые зоны
  4. Проверка уровня поддержки/сопротивления повышает безопасность торговли
  5. Высоко регулируемые параметры адаптируются к различным рыночным условиям
  6. Высокая степень автоматизации уменьшает субъективную предвзятость

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

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

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

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

Резюме

Эта стратегия строит относительно полную торговую систему, всесторонне используя несколько методов технического анализа, включая распознавание моделей, уровни Фибоначчи и линии поддержки / сопротивления. Ее сила заключается в высокой надежности, обеспечиваемой несколькими механизмами проверки, в то время как ее регулируемость позволяет адаптироваться к различным рыночным условиям.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Double Bottom with Support/Resistance Strategy - Aynet", overlay=true)

// Inputs
lookbackPeriod = input(21, "Lookback Period")
swingLowThreshold = input(1.5, "Swing Low Threshold")
fibLevel1 = input(0.618, "Fibonacci Level 1")
fibLevel3 = input(1.618, "Fibonacci Level 2")
srPeriod = input(21, "Support/Resistance Period") 
srThreshold = input(3, "Support/Resistance Touch Points")

// Support/Resistance Function
get_sr_level(idx) =>
    var level = 0.0
    var count = 0
    
    if bar_index % srPeriod == 0
        highCount = 0
        lowCount = 0
        for i = 0 to srPeriod - 1
            if math.abs(high[i] - high) < (high * 0.001)
                highCount += 1
            if math.abs(low[i] - low) < (low * 0.001)
                lowCount += 1
                
        if highCount >= srThreshold
            level := high
            count := highCount
        if lowCount >= srThreshold
            level := low
            count := lowCount
            
    [level, count]

// Pattern Detection Functions
isSwingLow(src, left, right) =>
    isLow = true
    for i = 0 to left + right
        if src[i] < src[right]
            isLow := false
    isLow

getSpikeSharpness(index) =>
    priceRange = high[index] - low[index]
    bodyRange = math.abs(close[index] - open[index])
    sharpness = priceRange / bodyRange
    sharpness

// Pattern Variables
var float firstBottom = na
var float secondBottom = na
var bool isAdam = false
var bool isEve = false
var float level1Value = na
var float level3Value = na

// Pattern Detection
bottom = isSwingLow(low, lookbackPeriod, lookbackPeriod)
if bottom
    sharpness = getSpikeSharpness(0)
    if na(firstBottom)
        firstBottom := low
        isAdam := sharpness > swingLowThreshold
    else if low <= firstBottom * 1.02 and low >= firstBottom * 0.98
        secondBottom := low
        isEve := sharpness <= swingLowThreshold

// Calculate Fibonacci
if not na(secondBottom)
    highPoint = ta.highest(high, lookbackPeriod)
    fibDistance = highPoint - math.min(firstBottom, secondBottom)
    level1Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel1
    level3Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel3

// Get S/R Level
[srLevel, srCount] = get_sr_level(0)

// Trading Logic
longCondition = srLevel > level3Value
shortCondition = srLevel < level1Value

if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Reset Pattern
if high > ta.highest(high[1], lookbackPeriod)
    firstBottom := na
    secondBottom := na
    isAdam := false
    isEve := false
var table logo = table.new(position.top_right, 1, 1)
table.cell(logo, 0, 0, 'Double Bottom with Support/Resistance Strategy - Aynet', text_size=size.large, text_color=color.white)
// Plots
plot(level1Value, "0.236", color=color.rgb(245, 0, 0), style=plot.style_line)
plot(level3Value, "0.618", color=color.rgb(82, 166, 255), style=plot.style_line)
plot(srLevel, "S/R Level", color=color.white)

plotshape(bottom and not na(firstBottom) and na(secondBottom), "Adam Bottom", shape.circle, location.belowbar, color.green)
plotshape(bottom and not na(secondBottom), "Eve Bottom", shape.circle, location.belowbar, color.yellow)

Связанные

Больше