Timeframe
1d
Direction
Long Only
Stoploss
-100.0%
Trailing Stop
No
ROI
0m: 1000.0%
Interface Version
N/A
Startup Candles
N/A
Indicators
1
import logging
from typing import Dict
from functools import reduce
from typing import Optional, Union
import numpy as np # noqa
import pandas as pd # noqa
import talib.abstract as ta
from pandas import DataFrame
from technical import qtpylib
from datetime import datetime
from pandas import Series
from freqtrade.strategy import IntParameter, IStrategy, merge_informative_pair # noqa
import mlflow
import copy
logger = logging.getLogger(__name__)
class RandomAgentStrategy(IStrategy):
# ## timeframe
timeframe = "1d"
minimal_roi = {
"0": 10
}
process_only_new_candles = True
# ## Stoploss
# Optimal stoploss designed for the strategy.
# This attribute will be overridden if the config file contains "stoploss".
stoploss = -1
trailing_stop = False
trailing_stop_positive = 0.01
trailing_stop_positive_offset = 0.017 # Disabled / not configured
trailing_only_offset_is_reached = False
# use_custom_stoploss = False
use_custom_stoploss = False
# ## Exit
use_exit_signal = True
exit_profit_only = False
exit_profit_offset = 0.0
ignore_roi_if_entry_signal = True
# ## Candles
process_only_new_candles = True
startup_candle_count: int = 0
# ## Short
can_short = False
unfilledtimeout = {
"unit": "minutes",
"entry": 30,
"exit": 30,
"exit_timeout_count": 0
}
# ## Candles
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # noqa: C901
# User creates their own custom strat here. Present example is a supertrend
# based strategy.
mlflow.set_tracking_uri("/freqtrade/user_data/mlruns")
# logger.info(Path(dk.data_path / "mlruns"))
mlflow.set_experiment("PAPER")
# mlflow.autolog()
with mlflow.start_run(run_name=f"ra_{metadata['pair']}") as run:
cfg = copy.deepcopy(self.config)
cfg.pop('api_server')
cfg.pop('telegram')
cfg.pop('original_config')
mlflow.log_params(cfg)
dataframe["action"] = np.random.randint(0, 3, dataframe.shape[0])
print(dataframe.head(30))
return dataframe
def populate_entry_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
# enter_long_conditions = [
# df["do_predict"] == 1, df["&-action"] == 1]
enter_long_conditions = [df["action"] == 1]
if enter_long_conditions:
df.loc[
reduce(lambda x, y: x & y, enter_long_conditions), [
"enter_long"]
] = 1
return df
def populate_exit_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
# exit_long_conditions = [df["do_predict"] == 1, df["&-action"] == 2]
exit_long_conditions = [df["action"] == 2]
if exit_long_conditions:
df.loc[reduce(lambda x, y: x & y, exit_long_conditions),
"exit_long"] = 1
return df