Распознавание множественных образов и стратегия торговли по процентилю SR

SR BP TP FIBO ATR SMA
Дата создания: 2024-12-05 16:30:14 Последнее изменение: 2024-12-05 16:30:14
Копировать: 0 Количество просмотров: 400
1
Подписаться
1617
Подписчики

Распознавание множественных образов и стратегия торговли по процентилю SR

Обзор

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

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

Стратегия использует механизм тройной верификации для принятия решений о сделках: сначала с помощью специального алгоритма идентифицируют двустворчатые формы, включая более острые “Адамово дно” и более округлые “Еввинское дно”; затем используют уровни фибоначевой обратной связи ((0.618 и 1.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)