Тенденция, следующая стратегии двойной скользящей средней

Автор:Чао Чжан, Дата: 2023-10-25 11:42:23
Тэги:

img

Обзор

Эта стратегия использует средний индекс направленного движения (ADXR) для выявления рыночных тенденций и сочетает двойные скользящие средние для генерации торговых сигналов. Она относится к типичной стратегии следующего тренду.

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

  1. Вычислить значение индикатора ADXR. ADX отражает силу тренда; ADXR сглаживает ADX и лучше отображает тренд.

  2. Установите двойные пороги для индикатора ADXR. Когда ADXR пересекает первый порог, он указывает на восходящий тренд. Когда он пересекает ниже второго порога, он указывает на понижающий тренд.

  3. Определите направление позиции на основе сигналов ADXR. Продолжайте, когда ADXR пересекает первый порог, и продолжайте, когда он пересекает второй порог.

  4. Фильтр сигналов с двойными скользящими средними. Идите длинные только тогда, когда цена выше быстрой MA, и идти короткие только тогда, когда цена ниже медленной MA. Это фильтрация избегает неправильных сделок во время переворотов тренда.

  5. Окрасьте свечи в зависимости от направления позиции.

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

  1. ADXR сглаживает колебания цен и эффективно определяет тенденции, избегая рисков торговли на различных рынках.

  2. Двойная фильтрация скользящей средней снижает снижение, избегая потерь от переворота тренда.

  3. Объединение индикатора тренда и скользящих сред обеспечивает торговлю по тенденциям при одновременном контроле рисков, подходящих для рынков с тенденциями.

  4. Логика стратегии проста и гибка для настройки параметров для различных рыночных условий.

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

  1. Неправильные параметры ADXR могут не своевременно отражать изменения тренда.

  2. Неправильные параметры скользящих средних могут отфильтровать слишком много действительных сигналов.

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

  4. Уменьшить размер позиций на различных рынках, чтобы ограничить потери.

Руководство по оптимизации

  1. Другие индикаторы, такие как MACD и Bollinger Bands, могут быть добавлены для подтверждения сигналов ADXR и повышения точности.

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

  3. Оптимизировать параметры, основанные на эффективности рынка, например, более длительные периоды среднего значения для рынков с низкой эффективностью.

  4. Включайте стратегии управления деньгами, такие как фиксированный размер позиций, чтобы лучше контролировать общие риски.

Заключение

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


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/05/2018
// The Average Directional Movement Index Rating (ADXR) measures the strength 
// of the Average Directional Movement Index (ADX). It's calculated by taking 
// the average of the current ADX and the ADX from one time period before 
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening 
// and weakening trends. However, because it represents an average of ADX, values 
// don't fluctuate as dramatically and some analysts believe the indicator helps 
// better display trends in volatile markets.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

strategy(title="Average Directional Movement Index Rating Backtest", shorttitle="ADXR")
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
reverse = input(false, title="Trade reverse")
Signal1 = input(13, step=0.01)
Signal2 = input(45, step=0.01)
hline(Signal1, color=green, linestyle=line)
hline(Signal2, color=red, linestyle=line)
xADX = fADX(LengthADX)
xADXR = (xADX + xADX[LengthADXR]) / 2
pos = iff(xADXR < Signal1, 1,
       iff(xADXR > Signal2, -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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xADXR, color=green, title="ADXR")

Больше