Timeframe
5m
Direction
Long Only
Stoploss
-10.0%
Trailing Stop
No
ROI
0m: 4.0%, 30m: 2.0%, 60m: 1.0%
Interface Version
3
Startup Candles
N/A
Indicators
0
freqtrade/freqtrade-strategies
author@: lenik
import numpy as np
import pandas as pd
from pandas import DataFrame
from freqtrade.strategy.interface import IStrategy
class FractalTest(IStrategy):
INTERFACE_VERSION = 3
can_short: bool = False
minimal_roi = {
"60": 0.01,
"30": 0.02,
"0": 0.04
}
stoploss = -0.10
trailing_stop = False
timeframe = '5m'
process_only_new_candles = True
use_exit_signal = True
exit_profit_only = False
ignore_roi_if_entry_signal = False
startup_candle_count: int = 200
order_types = {
'entry': 'limit',
'exit': 'limit',
'stoploss': 'market',
'stoploss_on_exchange': False
}
order_time_in_force = {
'entry': 'GTC',
'exit': 'GTC'
}
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe['fractal_up'] = self.fractal_up(dataframe)
dataframe['fractal_down'] = self.fractal_down(dataframe)
return dataframe
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
dataframe['fractal_up']
),
'enter_long'] = 1
dataframe.loc[
(
dataframe['fractal_down']
),
'enter_short'] = 1
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# This should contain conditions to exit trades, currently just placeholders
dataframe.loc[
(
# Add your exit conditions here
),
'exit_long'] = 1
dataframe.loc[
(
# Add your exit conditions here
),
'exit_short'] = 1
return dataframe
def fractal_up(self, dataframe: DataFrame) -> pd.Series:
n = 10 # Number of rows to consider for identifying a fractal
roll_n = 2 * n + 1
highest = dataframe['high'].rolling(window=roll_n, center=True).max()
return highest == dataframe['high']
def fractal_down(self, dataframe: DataFrame) -> pd.Series:
n = 10 # Number of rows to consider for a fractal
roll_n = 2 * n + 1
lowest = dataframe['low'].rolling(window=roll_n, center=True).min()
return lowest == dataframe['low']