Timeframe
5m
Direction
Long Only
Stoploss
-4.0%
Trailing Stop
No
ROI
0m: 5.0%, 20m: 4.0%, 30m: 3.0%, 60m: 1.0%
Interface Version
3
Startup Candles
250
Indicators
2
"""
Auto-generated by trade-md from macd-ema@0.1.0.
DO NOT EDIT BY HAND - modify TRADE.md and recompile.
Source strategy: macd-ema
Version: 0.1.0
Thesis: MACD crossover in the direction of a long-term EMA(200) trend filter. Enters long
"""
from __future__ import annotations
from pandas import DataFrame
import talib.abstract as ta
from freqtrade.strategy import IStrategy, merge_informative_pair
class MacdEma(IStrategy):
"""Compiled from TRADE.md. Parent: none"""
INTERFACE_VERSION = 3
timeframe = '5m'
stoploss = -0.04
minimal_roi = {"0": 0.05, "20": 0.04, "30": 0.03, "60": 0.01}
trailing_stop = False
startup_candle_count = 250
max_open_trades = 3
process_only_new_candles = True
can_short = False
@property
def protections(self):
return []
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe['macd'] = ta.MACD(dataframe)['macd']
dataframe['macd_signal'] = ta.MACD(dataframe)['macdsignal']
dataframe['macd_shift_1'] = dataframe['macd'].shift(1)
dataframe['macd_signal_shift_1'] = dataframe['macd_signal'].shift(1)
dataframe['ema_200'] = ta.EMA(dataframe, timeperiod=200)
return dataframe
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(((dataframe['macd'] > dataframe['macd_signal']) & (dataframe['macd_shift_1'] <= dataframe['macd_signal_shift_1'])) & (dataframe['close'] > dataframe['ema_200'])),
['enter_long', 'enter_tag']
] = (1, 'macd_cross_above_ema200')
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(((dataframe['macd'] < dataframe['macd_signal']) & (dataframe['macd_shift_1'] >= dataframe['macd_signal_shift_1'])) & (dataframe['close'] < dataframe['ema_200'])),
['exit_long', 'exit_tag']
] = (1, 'macd_cross_below_ema200')
return dataframe