Type/to search
8
Follow
1370
Followers
Адаптивная система торговли скользящей средней цифровой валютой и анализ алгоритма KAMA - на основе количественного торгового программного обеспечения изобретателя
Original
Created 2019-07-06 16:21:15  Updated 2023-10-24 21:42:44
 1
 6514

img

Введение в адаптивную скользящую среднюю KAMA

Как следует из названия, адаптивная скользящая средняя (КАМА) относится к категории скользящих средних, но в отличие от традиционной скользящей средней она очень «умная». Мы знаем, что обычные скользящие средние имеют много недостатков. Например, краткосрочная скользящая средняя близка к ценовому тренду и очень чувствительна, но легко генерирует ложные сигналы; долгосрочная скользящая средняя очень точна в оценке тенденции, но рынку часто требуется некоторое время, чтобы отреагировать.

«Интеллект» KAMA заключается в его способности автономно регулировать свою чувствительность в зависимости от текущих рыночных условий, то есть волатильности. Проявление его таково: на волатильном рынке изменения КАМА существенно замедляются; при появлении тренда он реагирует быстро. В реальной торговле преимущество заключается в том, что он позволяет сократить транзакционные издержки, вызванные «ежедневной суетой», и вовремя включиться в работу, когда рынок набирает обороты.

КАМА в графике

img

Метод расчета КАМА

  • Направление (DIR) = Цена закрытия - Цена закрытия n дней назад
  • Волатильность (VIR) = сумма(абс(цена закрытия - цена закрытия предыдущего торгового дня), n)
  • Эффективность (ER) = Направление / Волатильность
  • Быстро = 2 / (n1 + 1)
  • Медленно = 2 / (n2 + 1)
  • Плавность (CS) = Эффективность * (Быстро - Медленно) + Медленно
  • Коэффициент(CQ) = Сглаживание * Сглаживание
  • KAMA = экспоненциально взвешенная средняя (динамическая скользящая средняя (цена закрытия, коэффициент), 2)

Среди них n, n1 и n2 — все параметры периода. По умолчанию n — 10 периодов, n1 — 2 краткосрочных периода, а n2 — 30 долгосрочных периодов. Это также набор параметров, признанных Перри Кауфманом, автором KAMA. n используется для расчета направления и эффективности волатильности, n1 и n2 — периоды быстрой скользящей средней и медленной скользящей средней. В теории, чем больше Чем больше параметр n1, тем более плавной будет КАМА.

Метод расчета KAMA следующий: сначала рассчитывается направление (DIR) и волатильность (VIR), а затем рассчитывается эффективность на основе соотношения этих двух показателей. Эффективность (ER) — это мера степени изменения цены, которая рассчитывается просто: Направление/Волатильность. Результат расчета находится в диапазоне от 0 до 1. Когда значение ER ближе к 0, это указывает на то, что рынок находится в волатильном состоянии. Когда значение ER ближе к 1, это указывает на то, что рынок находится в трендовом состоянии.

После расчета эффективности (ER) быстрое скользящее среднее и медленное скользящее среднее можно объединить для получения константы сглаживания (CS): эффективность * (быстрое - медленное) + медленное. CS представляет собой скорость движения тренда. Согласно формуле расчета CS, можно обнаружить, что изменение CS всегда пропорционально изменению ER.

Затем коэффициент (CQ) рассчитывается на основе сглаживающей способности с целью придания параметрам медленного цикла более важной роли в расчетах, что также является более консервативным подходом. Окончательная гладкость KAMA определяется коэффициентом (CQ). При расчете KAMA коэффициент (CQ) определяет параметры периода сглаживания двух последних скользящих средних, а именно: экспоненциально взвешенное среднее (динамическое скользящее среднее (цена закрытия, коэффициент), 2).

Как использовать КАМА

Хотя метод расчета KAMA очень сложен, его использование похоже на использование обычных скользящих средних. В практических приложениях он может не только определять рыночные тенденции, но и использоваться для точных точек покупки и продажи. Поскольку он очень «умный», его можно использовать во многих торговых стратегиях, и его даже стоит попробовать в цифровых валютах.

  • Когда цена превышает KAMA и KAMA направлена ​​вверх, открывайте длинную позицию.
  • Когда цена ниже KAMA, а KAMA движется вниз, открывается короткая позиция.
  • Когда цена ниже KAMA или KAMA движется вниз, длинные позиции закрываются.
  • Когда цена превышает KAMA или KAMA движется вверх, короткая позиция закрывается.

Построение торговой стратегии на основе КАМА

Шаг 1: Рассчитайте КАМА
Уведомление! В левом верхнем углу выберите язык программирования:My语言. В библиотеке talib уже есть готовая KAMA, но у нее есть только один внешний параметр (n) period, а n1 и n2 по умолчанию равны 2 и 30. Стратегии в этой статье приведены только для справки. Друзья с хорошими практическими навыками также могут написать свои собственные. Тогда язык My также может быть напрямую смешан с языком JavaScript. Обратите внимание на следующий код:

%% // My语言内JavaScript的标准格式 scope.KAMA = function() { var r = _C(exchange.GetRecords); // 获取K线数组 if (r.length > 140) { // 过滤K线长度 var kama = talib.KAMA(r, 140); // 调用talib库计算KAMA return kama[kama.length - 2]; // 返回KAMA的具体数值 } return; } %% // My语言内JavaScript的标准格式

Шаг 2: Рассчитайте торговые условия и разместите заказ

%% scope.KAMA = function() { var r = _C(exchange.GetRecords); if (r.length > 140) { var kama = talib.KAMA(r, 140); return kama[kama.length - 2]; } return; } %% K^^KAMA; // 把KAMA打印到图表上 A:CLOSE; // 把收盘价打印到图表上 K > REF(K, 1) && CLOSE > K,BK; // 开多 K < REF(K, 1) && CLOSE < K,SK; // 开空 K < REF(K, 1) || CLOSE < K,SP; // 平多 K > REF(K, 1) || CLOSE > K,BP; // 平空

Шаг 3: Установите метод фильтрации сигнала стратегии

%% scope.KAMA = function() { var r = _C(exchange.GetRecords); if (r.length > 140) { var kama = talib.KAMA(r, 140); return kama[kama.length - 2]; } return; } %% K^^KAMA; A:CLOSE; K > REF(K, 1) && CLOSE > K,BK; K < REF(K, 1) && CLOSE < K,SK; K < REF(K, 1) || CLOSE < K,SP; K > REF(K, 1) || CLOSE > K,BP; AUTOFILTER; // 启用一开一平信号过滤机制

Стратегия бэктестинга

Чтобы быть ближе к реальной торговой среде, мы используем проскальзывание в 2 скачка для открытия и закрытия позиций для проведения стресс-тестирования во время бэктестинга. Тестовая среда выглядит следующим образом:

  • Биржа: BitMEX
  • Тип рынка: XBTUSD
  • Торговый инструмент: XBTUSD
  • Время: 1 июля 2017 г. ~ 1 июля 2019 г.
  • Цикл К-линии: ежедневный
  • Проскальзывание: 2 скачка для открытия и закрытия позиций

Тестовая среда
img
Подробная информация о доходах
img
Кривая финансирования
img

Судя по результатам бэктеста выше, эта простая стратегия KAMA действительно оправдала ожидания. Даже на супермедвежьем рынке цифровой валюты в 2018 году кривая капитала не показала большого отката, и рынок находился в долгосрочном периоде волатильности Открытие и закрытие позиций туда и обратно приведет к ненужным потерям. В то же время он также показал хорошие результаты на бычьем рынке в 2019 году.

Исходный код стратегии

Нажмите, чтобы скопировать полный исходный код стратегии, основанный на My language, подходящий для товарных фьючерсов и цифровых валют.

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

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

Related Recommendations
Comment
All comments (1)

    大神,求教一下,kama最后那一步的代码怎么写啊?KAMA = 指数加权平均(动态移动平均(收盘价, 系数), 2)就是这个。我搜了一下有的说是写成KAMA = 前一个KAMA + 系数 * (当前价格 - 前一个KAMA)。问题是计算最开始的第一个KAMA的值的时候,是没有“前一个KAMA”的。求指点。

    5 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)