Стратегия перемещающейся средней разницы с нулевым перекрестным значением

Автор:Чао Чжан, Дата: 2024-01-26 15:45:03
Тэги:

img

Обзор

Принцип стратегии

  1. Вычислить экспоненциальную 8-периодную скользящую среднюю EMA и самую низкую скользящую среднюю за последние 8 дней
  2. Вычислить разницу между ценой и текущей скользящей средней
  3. Когда диф меньше 0, это медвежий сигнал, когда диф превышает 0, это нижний дивергенционный сигнал, указывающий на рост.
  4. Объедините числовое значение дифф, чтобы сравнить максимальное снижение за последнюю неделю, чтобы генерировать торговые сигналы

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

  1. Использование двойной системы скользящей средней может эффективно фильтровать ложные прорывы
  2. Использование теории минимальной цены для обнаружения сигналов дна
  3. Численное сравнение для оценки условий перепродажи и перекупки, избегая погони за максимумами и уничтожения минимумов

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

  1. Стратегии двойной скользящей средней склонны к эффектам випса
  2. Необходимо обратить внимание на проблему чрезмерной частоты торговли
  3. Разумное установление параметров скользящих средних имеет решающее значение

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

  1. Настройка параметров скользящей средней продолжительности для адаптации к различным циклам
  2. Увеличьте показатели громкости для фильтрации ложных сигналов прорыва
  3. Комбинировать стохастический индикатор для избежания условий перепродажи и перекупки

Резюме


/*backtest
start: 2023-01-19 00:00:00
end: 2024-01-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Estratégia diferença menor preço de 8")

// Configuração da Média Móvel
emaPeriod = 8

ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)

// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA

//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0




// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) 
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)

// Executa as operações de compra/venda
if buy_signal
    strategy.entry("Buy", strategy.long)
if sell_signal
    strategy.exit("Buy")

// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)

plot(diffLow, title="Diferença", color=color.red, linewidth=2)


Больше