Timeframe
15m
Direction
Long & Short
Stoploss
-15.0%
Trailing Stop
Yes
ROI
0m: 5.0%, 30m: 2.0%, 60m: 1.0%, 120m: 0.0%
Interface Version
3
Startup Candles
N/A
Indicators
2
freqtrade/freqtrade-strategies
Strategy 003 author@: Gerald Lonlas github@: https://github.com/freqtrade/freqtrade-strategies
# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement
# flake8: noqa: F401
# isort: skip_file
# --- Do not remove these libs ---
import numpy as np
import pandas as pd
from datetime import datetime
from typing import Dict, Optional, Union, Tuple
from freqtrade.strategy import IStrategy
import talib.abstract as ta
import pandas_ta as pta
class RSI_EMA(IStrategy):
INTERFACE_VERSION = 3
timeframe = '15m'
can_short = True
# minimal_roi defines profit targets:
# e.g., sell when 5% profit is reached at any time,
# 2% after 30 minutes, 1% after 60 mins.
minimal_roi = {
"0": 0.05,
"30": 0.02,
"60": 0.01,
"120": 0
}
# stoploss - set to -15% to allow breathing room for futures
stoploss = -0.15
trailing_stop = True
trailing_stop_positive = 0.02
trailing_stop_positive_offset = 0.04
trailing_only_offset_is_reached = True
process_only_new_candles = True
use_exit_signal = True
exit_profit_only = False
ignore_roi_if_entry_signal = False
startup_candle_count: int = 200
def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
dataframe['ema200'] = ta.EMA(dataframe, timeperiod=200)
return dataframe
def populate_entry_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
dataframe.loc[
(
(dataframe['rsi'] < 40) &
(dataframe['close'] > dataframe['ema200'])
),
'enter_long'] = 1
dataframe.loc[
(
(dataframe['rsi'] > 60) &
(dataframe['close'] < dataframe['ema200'])
),
'enter_short'] = 1
return dataframe
def populate_exit_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
dataframe.loc[
(
(dataframe['rsi'] > 70)
),
'exit_long'] = 1
dataframe.loc[
(
(dataframe['rsi'] < 30)
),
'exit_short'] = 1
return dataframe