- Площадь
- Стратегия перемещающейся средней разницы с нулевым перекрестным значением
Стратегия перемещающейся средней разницы с нулевым перекрестным значением
Автор:
Чао Чжан, Дата: 2024-01-26 15:45:03
Тэги:
Обзор
Принцип стратегии
- Вычислить экспоненциальную 8-периодную скользящую среднюю EMA и самую низкую скользящую среднюю за последние 8 дней
- Вычислить разницу между ценой и текущей скользящей средней
- Когда диф меньше 0, это медвежий сигнал, когда диф превышает 0, это нижний дивергенционный сигнал, указывающий на рост.
- Объедините числовое значение дифф, чтобы сравнить максимальное снижение за последнюю неделю, чтобы генерировать торговые сигналы
Анализ преимуществ
- Использование двойной системы скользящей средней может эффективно фильтровать ложные прорывы
- Использование теории минимальной цены для обнаружения сигналов дна
- Численное сравнение для оценки условий перепродажи и перекупки, избегая погони за максимумами и уничтожения минимумов
Анализ рисков
- Стратегии двойной скользящей средней склонны к эффектам випса
- Необходимо обратить внимание на проблему чрезмерной частоты торговли
- Разумное установление параметров скользящих средних имеет решающее значение
Руководство по оптимизации
- Настройка параметров скользящей средней продолжительности для адаптации к различным циклам
- Увеличьте показатели громкости для фильтрации ложных сигналов прорыва
- Комбинировать стохастический индикатор для избежания условий перепродажи и перекупки
Резюме
/*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)
Больше