Timeframe
1h
Direction
Long Only
Stoploss
-5.0%
Trailing Stop
Yes
ROI
0m: 3.0%, 24m: 2.0%, 48m: 1.5%, 72m: 1.0%
Interface Version
N/A
Startup Candles
20
Indicators
0
freqtrade/freqtrade-strategies
freqtrade/freqtrade-strategies
freqtrade/freqtrade-strategies
this is an example class, implementing a PSAR based trailing stop loss you are supposed to take the `custom_stoploss()` and `populate_indicators()` parts and adapt it to your own strategy
freqtrade/freqtrade-strategies
from freqtrade.strategy import IStrategy
from pandas import DataFrame
import pandas as pd
from datetime import datetime
class FutureLeveragedHold(IStrategy):
timeframe = '1h'
max_open_trades = 3
stake_amount = 0.30
startup_candle_count = 20
minimal_roi = {
"0": 0.03,
"24": 0.02,
"48": 0.015,
"72": 0.01,
"168": 0.005
}
stoploss = -0.05
trailing_stop = True
trailing_stop_positive = 0.02
trailing_stop_positive_offset = 0.025
trailing_only_offset_is_reached = True
order_types = {
'entry': 'market',
'exit': 'market',
'stoploss': 'market',
'stoploss_on_exchange': False
}
unfilledtimeout = {
'entry': 30,
'exit': 30,
'unit': 'seconds'
}
leverage_config = {
'BTC/USDT:USDT': 5.0,
'ETH/USDT:USDT': 5.0,
'SOL/USDT:USDT': 5.0,
'XRP/USDT:USDT': 3.0,
'DOGE/USDT:USDT': 3.0,
'LTC/USDT:USDT': 3.0,
'LINK/USDT:USDT': 3.0,
'UNI/USDT:USDT': 3.0,
'ARB/USDT:USDT': 3.0,
'OP/USDT:USDT': 3.0
}
def informative_pairs(self) -> list:
return []
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
return dataframe
def leverage(self, pair: str, current_time: datetime, current_rate: float,
current_profit: float, min_stops: float, max_stops: float,
current_time_rows: DataFrame, **kwargs) -> float:
leverage = self.leverage_config.get(pair, 3.0)
return min(leverage, 5.0)
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
df = dataframe.copy()
df['enter_long'] = 0
if len(df) < self.startup_candle_count:
return df
df['ema_9'] = pd.Series(df['close']).ewm(span=9, adjust=False).mean()
df['ema_21'] = pd.Series(df['close']).ewm(span=21, adjust=False).mean()
df['trend_up'] = df['ema_9'] > df['ema_21']
df.loc[df['trend_up'], 'enter_long'] = 1
return df
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
df = dataframe.copy()
df['exit'] = 0
df['ema_9'] = pd.Series(df['close']).ewm(span=9, adjust=False).mean()
df['ema_21'] = pd.Series(df['close']).ewm(span=21, adjust=False).mean()
df['trend_down'] = df['ema_9'] < df['ema_21']
df.loc[df['trend_down'], 'exit'] = 1
return df