[TOC]

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

Среди них 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 очень сложен, его использование похоже на использование обычных скользящих средних. В практических приложениях он может не только определять рыночные тенденции, но и использоваться для точных точек покупки и продажи. Поскольку он очень «умный», его можно использовать во многих торговых стратегиях, и его даже стоит попробовать в цифровых валютах.
Шаг 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 скачка для открытия и закрытия позиций для проведения стресс-тестирования во время бэктестинга. Тестовая среда выглядит следующим образом:
Тестовая среда
Подробная информация о доходах
Кривая финансирования

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