Files
freqtrade-strategies/user_data/strategies/mabStra.py
T

98 lines
3.9 KiB
Python
Raw Normal View History

2021-05-18 22:02:41 +04:30
# Author: @Mablue (Masoud Azizi)
# github: https://github.com/mablue/
# IMPORTANT: DO NOT USE IT WITHOUT HYPEROPT:
# freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss --spaces all --strategy mabStra --config config.json -e 100
2021-04-08 22:11:30 +04:30
# --- Do not remove these libs ---
2022-05-31 06:43:02 +02:00
from freqtrade.strategy import IntParameter, DecimalParameter, IStrategy
2021-04-08 22:11:30 +04:30
from pandas import DataFrame
# --------------------------------
# Add your lib to import here
import talib.abstract as ta
class mabStra(IStrategy):
2021-08-17 06:57:18 +02:00
2022-07-10 11:44:41 +02:00
INTERFACE_VERSION: int = 3
# #################### RESULTS PASTE PLACE ####################
# ROI table:
minimal_roi = {
"0": 0.598,
"644": 0.166,
"3269": 0.115,
"7289": 0
}
# Stoploss:
stoploss = -0.128
# Buy hypers
timeframe = '4h'
# #################### END OF RESULT PLACE ####################
2021-05-18 22:02:41 +04:30
# buy params
buy_mojo_ma_timeframe = IntParameter(2, 100, default=7, space='buy')
buy_fast_ma_timeframe = IntParameter(2, 100, default=14, space='buy')
buy_slow_ma_timeframe = IntParameter(2, 100, default=28, space='buy')
buy_div_max = DecimalParameter(
0, 2, decimals=4, default=2.25446, space='buy')
buy_div_min = DecimalParameter(
0, 2, decimals=4, default=0.29497, space='buy')
2021-05-18 22:02:41 +04:30
# sell params
sell_mojo_ma_timeframe = IntParameter(2, 100, default=7, space='sell')
sell_fast_ma_timeframe = IntParameter(2, 100, default=14, space='sell')
sell_slow_ma_timeframe = IntParameter(2, 100, default=28, space='sell')
sell_div_max = DecimalParameter(
0, 2, decimals=4, default=1.54593, space='sell')
sell_div_min = DecimalParameter(
0, 2, decimals=4, default=2.81436, space='sell')
2021-04-08 22:11:30 +04:30
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# SMA - ex Moving Average
2021-05-18 22:02:41 +04:30
dataframe['buy-mojoMA'] = ta.SMA(dataframe,
timeperiod=self.buy_mojo_ma_timeframe.value)
dataframe['buy-fastMA'] = ta.SMA(dataframe,
timeperiod=self.buy_fast_ma_timeframe.value)
dataframe['buy-slowMA'] = ta.SMA(dataframe,
timeperiod=self.buy_slow_ma_timeframe.value)
dataframe['sell-mojoMA'] = ta.SMA(dataframe,
timeperiod=self.sell_mojo_ma_timeframe.value)
dataframe['sell-fastMA'] = ta.SMA(dataframe,
timeperiod=self.sell_fast_ma_timeframe.value)
dataframe['sell-slowMA'] = ta.SMA(dataframe,
timeperiod=self.sell_slow_ma_timeframe.value)
2021-04-08 22:11:30 +04:30
return dataframe
2022-07-10 11:34:40 +02:00
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
2021-04-08 22:11:30 +04:30
dataframe.loc[
(
2021-05-18 22:02:41 +04:30
(dataframe['buy-mojoMA'].div(dataframe['buy-fastMA'])
> self.buy_div_min.value) &
(dataframe['buy-mojoMA'].div(dataframe['buy-fastMA'])
< self.buy_div_max.value) &
2021-04-08 22:11:30 +04:30
(dataframe['buy-fastMA'].div(dataframe['buy-slowMA'])
2021-05-18 22:02:41 +04:30
> self.buy_div_min.value) &
2021-04-08 22:11:30 +04:30
(dataframe['buy-fastMA'].div(dataframe['buy-slowMA'])
2021-05-18 22:02:41 +04:30
< self.buy_div_max.value)
2021-04-08 22:11:30 +04:30
),
2022-07-10 11:34:40 +02:00
'enter_long'] = 1
2021-04-08 22:11:30 +04:30
return dataframe
2022-07-10 11:34:40 +02:00
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
2021-04-08 22:11:30 +04:30
dataframe.loc[
(
2021-05-18 22:02:41 +04:30
(dataframe['sell-fastMA'].div(dataframe['sell-mojoMA'])
> self.sell_div_min.value) &
(dataframe['sell-fastMA'].div(dataframe['sell-mojoMA'])
< self.sell_div_max.value) &
2021-04-08 22:11:30 +04:30
(dataframe['sell-slowMA'].div(dataframe['sell-fastMA'])
2021-05-18 22:02:41 +04:30
> self.sell_div_min.value) &
2021-04-08 22:11:30 +04:30
(dataframe['sell-slowMA'].div(dataframe['sell-fastMA'])
2021-05-18 22:02:41 +04:30
< self.sell_div_max.value)
2021-04-08 22:11:30 +04:30
),
2022-07-10 11:34:40 +02:00
'exit_long'] = 1
2021-04-08 22:11:30 +04:30
return dataframe