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

Тенденция в соответствии со стратегией динамической сетки размеров позиций

Автор:Чао Чжан, Дата: 2024-12-12 11:19:17
Тэги:ТТМЕМАГРИДDCAATRSMA

img

Обзор

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

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

Основная логика заключается в расчете состояния TTM, реализованном с помощью следующих шагов:

  1. Вычислить две EMA на основе параметра ttmPeriod: EMA минимумов (lowMA) и максимумов (highMA)
  2. Определить два пороговых уровня между высокой и низкой МА:
    • низкийThird: 1/3 положение от нижнего
    • Высокий Третий: 2/3 положение с нижнего
  3. Определить состояние TTM на основе ценовой позиции закрытия по отношению к этим порогам:
    • Возвращает 1 (верхний тренд), когда закрытие превышает максимум
    • Возвращает 0 (низкий тренд) при закрытии ниже низкого уровня
    • Возвращает -1 (нейтральное состояние), когда close находится между lowThird и highThird

Система торговли сетью регулируется динамически на основе состояния TTM:

  1. Обновляет базовую цену и направление сети при изменении состояния TTM
  2. Вычисляет уровни цены покупки/продажи на основе направления сетки и расстояния
  3. Исполняет соответствующие операции по покупке или продаже, когда цена переходит через уровни сетки

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

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

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

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

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

  1. Оптимизация обнаружения тенденций:
    • Включить анализ нескольких временных рамок для улучшения точности обнаружения тенденций
    • Комбинировать с другими техническими показателями, такими как RSI, MACD для подтверждения тренда
  2. Оптимизация параметров сетки:
    • Динамическое регулирование расстояния между сетями на основе волатильности
    • Внедрение адаптивного механизма корректировки уровня сети
  3. Улучшение управления капиталом:
    • Внедрение динамического распределения позиций
    • Добавить механизм паритета рисков
  4. Улучшение механизма исполнения:
    • Добавление механизмов стоп-лосса и получения прибыли
    • Оптимизировать сроки выполнения заказов

Резюме

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


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

//@version=5
strategy("TTM Grid Strategy", overlay=true)

// Input parameters
int ttmPeriod = input.int(6, minval=1, title="TTM Period")
int gridLevels = input.int(5, minval=2, title="Grid Levels")
float gridSpacing = input.float(0.01, minval=0.0001, title="Grid Spacing (%)")

// Calculate TTM State
ttmState() =>
    lowMA = ta.ema(low, ttmPeriod)
    highMA = ta.ema(high, ttmPeriod)
    lowThird = (highMA - lowMA) / 3 + lowMA
    highThird = 2 * (highMA - lowMA) / 3 + lowMA

    if close > highThird
        1
    else if close < lowThird
        0
    else
        -1

// State tracking variables
var float gridBasePrice = 0.0
var int gridDirection = -1

// Determine grid state
updateGridState(float currentClose, int currentState) =>
    float newBasePrice = gridBasePrice
    int newDirection = gridDirection

    if currentState != -1 and currentState != gridDirection
        newBasePrice := currentClose
        newDirection := currentState
    
    [newBasePrice, newDirection]

// Calculate grid levels
calcGridLevels(float basePrice, int direction, int levels) =>
    float[] buyLevels = array.new_float(levels)
    float[] sellLevels = array.new_float(levels)

    for i = 1 to levels
        multiplier = i * gridSpacing
        if direction == 1  // Buy grid
            array.set(buyLevels, i-1, basePrice * (1 - multiplier))
            array.set(sellLevels, i-1, basePrice * (1 + multiplier))
        else  // Sell grid
            array.set(buyLevels, i-1, basePrice * (1 + multiplier))
            array.set(sellLevels, i-1, basePrice * (1 - multiplier))
    
    [buyLevels, sellLevels]

// Execute grid trades
executeGridTrades(float basePrice, int direction, int levels) =>
    [buyLevels, sellLevels] = calcGridLevels(basePrice, direction, levels)

    for i = 0 to levels - 1
        float buyLevel = array.get(buyLevels, i)
        float sellLevel = array.get(sellLevels, i)

        if direction == 1  // Buy grid
            if low <= buyLevel
                strategy.entry("GridBuy" + str.tostring(i), strategy.long, comment="Buy Level " + str.tostring(i))
            if high >= sellLevel
                strategy.entry("GridSell" + str.tostring(i), strategy.short, comment="Sell Level " + str.tostring(i))
        else  // Sell grid
            if high >= buyLevel
                strategy.entry("GridBuy" + str.tostring(i), strategy.long, comment="Buy Level " + str.tostring(i))
            if low <= sellLevel
                strategy.entry("GridSell" + str.tostring(i), strategy.short, comment="Sell Level " + str.tostring(i))

// Main strategy logic
currentState = ttmState()
[newGridBasePrice, newGridDirection] = updateGridState(close, currentState)

// Update global variables
if newGridBasePrice != gridBasePrice
    gridBasePrice := newGridBasePrice
if newGridDirection != gridDirection
    gridDirection := newGridDirection

// Execute grid trades
executeGridTrades(newGridBasePrice, newGridDirection, gridLevels)

// Visualization
plotColor = newGridDirection == 1 ? color.green : color.red
plot(newGridBasePrice, color=plotColor, style=plot.style_cross)

Связанные

Больше