Динамическая стратегия направления K-line


Дата создания: 2023-10-25 16:57:05 Последнее изменение: 2023-10-25 16:57:05
Копировать: 0 Количество просмотров: 643
1
Подписаться
1617
Подписчики

Динамическая стратегия направления K-line

Обзор

Эта стратегия используется для определения направления будущей K-линии, анализируя ценовые показатели закрытия в прошлом, когда N корневой K-линии была выше / ниже цены открытия. В зависимости от того, насколько свободна направленность K-линии, принимаются операции по увеличению или уменьшению пробела.

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

Основная логика этой стратегии заключается в следующем:

  1. Параметр NUM_CANDLES определяет количество K-линий, которые необходимо проанализировать.

  2. Определяет функцию candle_dir, которая определяет направление одной K-линии. close>open - многоголовый, close

  3. Функция count_candles определяет количество K-линий в разных направлениях в прошедших K-линиях с корнем NUM_CANDLES.

  4. Подсчитать количество многоголовых, пустых и колеблющихся K-линий в прошлых K-линиях корня NUM_CANDLES, хранящихся в ups, dns, neu.

  5. Определите индикатор indic, его значение равно ups-dns плюс положительное и отрицательное значение neu。

  6. Показатели indic показывают, когда нужно делать больше, а когда меньше.

Стратегия принимает торговые решения, оценивая вероятность будущего направления K-линий путем статистики определенного количества K-линий. С помощью параметра NUM_CANDLES можно контролировать количество статистических K-линий и регулировать чувствительность стратегии.

Анализ преимуществ стратегии

  1. Стратегические идеи понятны, легко интерпретируются и проверяются.

  2. Не требуется вычислять сложные показатели, требуются только данные K-линий, снижаются расходы на вычисления.

  3. Количество статистических K-линий может быть скорректировано с помощью параметров, контролирующих чувствительность стратегии.

  4. Используется в любых сортах и в любом цикле, имеет высокую пригодность для применения.

  5. Легкая оптимизация параметров, поиск оптимальных комбинаций параметров.

Анализ рисков

  1. Невозможность урегулировать колебания рынка может привести к частому открытию и закрытию позиций.

  2. Неправильный статистический цикл может привести к задержке сигнала, требуя разумной настройки параметров.

  3. Невозможность справиться с обратным трендом может привести к риску неудач.

  4. Необходимо учитывать влияние стоимости транзакций, чтобы предотвратить их чрезмерную частоту.

  5. Необходимо обратить внимание на проблему оптимизации параметров, которая должна быть подтверждена многократным рыночным отзывом.

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

  1. Можно рассмотреть возможность включения логики стоп-лосса, чтобы снизить риск потерь.

  2. Это может быть связано с трендовыми показателями, чтобы избежать обратных операций.

  3. Можно увеличить статистический цикл или использовать низкий цикл, оптимизировать параметры для повышения стабильности стратегии.

  4. Можно рассмотреть возможность комбинирования различных сортов, чтобы повысить вероятность победы в стратегии.

  5. Параметры автоматической оптимизации могут быть объединены с методами машинного обучения.

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

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

Исходный код стратегии
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Refined CandleCounter Strategy by origo", overlay=true)

// how many candles to count
NUM_CANDLES = 7

// determine candle direction
candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1)

// return # of candles with a given direction
count_candles(dir, max) =>
    count = 0
    for i = 0 to max
        if candle_dir[i] == dir
            count := count + 1
    count

ups = count_candles(1, NUM_CANDLES)
dns = count_candles(-1, NUM_CANDLES)
neu = count_candles(0, NUM_CANDLES)

indic = ups-dns


if indic > 0
    indic := indic+neu
else
    indic := indic-neu

plotarrow(neu, title="UP vs DN")

longCondition = (indic) > 0
shortCondition = (indic) <= 0

strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition)
strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)