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

Динаполи сдерживает стратегию осциллятора

Автор:Чао Чжан, Дата: 23 сентября 2023 года 15:48:40
Тэги:

Обзор

Эта стратегия генерирует торговые сигналы, основанные на динаполийском детеррентном осцилляторе. Она отражает уровни перекупленности/перепродажи на основе разницы между ценой и скользящей средней, направленной на выявление возможностей реверсии. Сигналы генерируются, когда осциллятор пересекает порог.

Логика стратегии

Ключевыми компонентами являются:

  1. Движущаяся средняя: рассчитывает базовую линию тренда.

  2. Дифференциальный индикатор: цена минус скользящая средняя составляет осциллятор.

  3. Пересечение порога запускает сигналы.

  4. Длинный сигнал: пересечение осциллятора над порогом.

  5. Короткий сигнал: пересечение осциллятора ниже порога.

  6. Обратный вариант: переключает длинные/короткие сигналы.

Стратегия направлена на выявление краткосрочных перемен путем выявления расхождений между ценой и трендом.

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

По сравнению с другими стратегиями обратного действия преимущества:

  1. Простая и интуитивная логика, легко внедряемая.

  2. Минимальные параметры, удобное обратное тестирование.

  3. Гибкость в настройке параметров для разных периодов.

  4. Обратный вариант, адаптируемый к различным рынкам.

  5. Очистить остановки и выходы для контроля риска.

  6. Относительно небольшие выбросы, настраиваемые через параметры.

  7. Потенциал оптимизации с помощью машинного обучения.

  8. В целом хороший риск/прибыль для краткосрочной торговли.

Риски

Однако основными рисками являются:

  1. Слишком большое зависимость от оптимизации параметров рискует переустановить.

  2. Отставание в скользящей средней и осцилляторе.

  3. Отсутствие подтверждения от других переменных.

  4. Временный эффект может ухудшаться на меняющихся рынках.

  5. Трудно постоянно генерировать альфа, требует частого корректирования.

  6. Необходимо следить за соотношением вознаграждения/риска и плавностью кривой.

  7. Высокая частота торговли увеличивает затраты на транзакции.

  8. Устойчивость на всех рынках требует проверки.

Усовершенствования

На основе анализа улучшения могут включать:

  1. Испытание различных параметров скользящей средней.

  2. Добавляю подтверждение объема.

  3. Использование остановок и выходов для контроля риска.

  4. Оценка устойчивости на разных рынках и в разное время.

  5. Проверка заднего прохода для непрерывной проверки.

  6. Настройка размеров позиций на более низкую частоту.

  7. Включение машинного обучения для улучшения параметров.

  8. Оптимизация стратегий управления рисками.

  9. Непрерывные итерации для адаптации к изменяющимся рынкам.

Заключение

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


/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/12/2016
// DiNapoli Detrended Oscillator Strategy
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="DiNapoli Detrended Oscillator Strategy Backtest")
Length = input(14, minval=1)
Trigger = input(0)
reverse = input(true, title="Trade reverse")
hline(Trigger, color=gray, linestyle=line)
xSMA = sma(close, Length)
nRes = close - xSMA
pos = iff(nRes > Trigger, 1,
	   iff(nRes <= Trigger, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
         iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
plot(nRes, color=blue, title="DiNapoli")
barcolor(possig == -1 ? red: possig == 1 ? green : blue )

Больше