Экспоненциальная скользящая средняя (EMA) — это популярный индикатор технического анализа, используемый трейдерами для определения тенденций и потенциальных точек входа или выхода на рынке.
EMA похожа на простую скользящую среднюю (SMA) тем, что рассчитывает среднюю цену ценной бумаги за определенный период времени. Однако EMA придает больший вес более свежим ценам, что делает ее более чувствительной к изменениям ценового движения.
df['EMA1']=((ta.trend.ema_indicator(close=df['close'], window=5,fillna= True)) ) df['EMA2']=((ta.trend.ema_indicator(close=df['close'], window=9,fillna= True)) )
Стратегия EMA предполагает использование двух или более EMA с разными периодами времени. Как правило, трейдеры используют краткосрочную EMA (например, 5 или 9 периодов) и долгосрочную EMA (например, 9 или 21 период), чтобы определить потенциальные развороты тренда или подтвердить существующие тренды.
signals.append(0) for i in range(1, len(df)-1): # Your trading strategy goes here if df.iloc[i]['EMA1'] > df.iloc[i]['EMA2'] : signals.append(1) elif df.iloc[i]['EMA1'] < df.iloc[i]['EMA2'] : signals.append(-1) else : signals.append(0) signals.append(0) # Add the signals list to the dataframe as a new column df["signal"] = signals
Приведенный выше код демонстрирует, как реализовать стратегию EMA в Python с использованием библиотеки TA-Lib. Код рассчитывает две EMA с периодами 5 и 9 дней соответственно, а затем генерирует сигналы на покупку/продажу на основе пересечения двух линий.
Когда краткосрочная EMA пересекает долгосрочную EMA, генерируется сигнал на покупку, а когда краткосрочная EMA пересекается ниже долгосрочной EMA, генерируется сигнал на продажу.
Важно отметить, что стратегия EMA не является надежным методом торговли и должна использоваться в сочетании с другими инструментами технического и фундаментального анализа. Кроме того, трейдеры всегда должны учитывать управление рисками и размер позиции при реализации любой торговой стратегии.
Давайте проведем бэктест с ETHUSDT сейчас на 1-часовом таймфрейме:
Затем я установил начальный капитал в 1000 долларов. Затем я провел бэктест и распечатал окончательную стоимость портфеля.
df["signal"] = signals print(signals) investment = 1000 current_investment = 1000 invested_amount = 0 fees = 0 profit = 0 is_invested = False best_trade = -99999999 worst_trade = 99999999 largest_loss = 0 largest_gain = 0 total_trades = 0 for i in range(500, len(df)): signal = df.iloc[i]['signal'] close = df.iloc[i]['close'] if signal == 1 and not is_invested: Entrypoint = close print(signal) print(close) quantity = (current_investment / close) print(current_investment) print(quantity) invested_amount = quantity * close is_invested = True elif signal == -1 and is_invested: print(signal) print('close', close) profit = quantity * (close - Entrypoint) - 2 print('profit' ,profit) current_investment += profit invested_amount = 0 total_trades += 1 is_invested = False if profit > largest_gain: largest_gain = profit if profit < largest_loss: largest_loss = profit if profit > best_trade: best_trade = profit if profit < worst_trade: worst_trade = profit else: pass final_profit = current_investment - investment print("Final Profit: ", final_profit) print("Best Trade: ", best_trade) print("Worst Trade: ", worst_trade) print("Largest Loss: ", largest_loss) print("Largest Gain: ", largest_gain) print("Total Trades: ", total_trades)
После проведения ретроспективного тестирования на исторических данных я получил окончательную стоимость портфеля в размере 26 163 долларов США. Этот результат указывает на то, что стратегия была прибыльной, и ее потенциально можно использовать для получения положительной прибыли в будущем.
Однако важно помнить, что прошлые результаты не гарантируют будущих результатов, и очень важно провести тщательный анализ и управление рисками, прежде чем внедрять какую-либо торговую стратегию на рынке.
В заключение, стратегия EMA является популярным и эффективным инструментом для определения тенденций и потенциальных точек входа или выхода на рынке. Используя несколько EMA с разными периодами времени, трейдеры могут лучше понять динамику рынка и принимать более обоснованные торговые решения.
Тем не менее, трейдеры всегда должны проявлять осторожность и использовать надлежащее управление рисками при реализации любой торговой стратегии.