freqtrade / freqtrade

Free, open source crypto trading bot

Home Page:https://www.freqtrade.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ValueError: 'C' is not a valid CandleType

duyns1110 opened this issue · comments

I created a new strategy and then ran backtest successfully, but when I ran trade command I got this error:

2024-04-16 13:51:33,109 - freqtrade - INFO - freqtrade 2024.1
2024-04-16 13:51:33,458 - freqtrade.worker - INFO - Starting worker 2024.1
2024-04-16 13:51:33,458 - freqtrade.configuration.load_config - INFO - Using config: /home/lenovo/Desktop/freqtrade/config_examples/An_config.json ...
2024-04-16 13:51:33,459 - freqtrade.loggers - INFO - Verbosity set to 0
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Runmode set to dry_run.
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /home/lenovo/Desktop/freqtrade/freqtrade-strategies/user_data/strategies
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - WARNING - `force_entry_enable` RPC message enabled.
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Dry run is enabled
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Using DB: "sqlite:///tradesv3.dryrun.sqlite"
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 1 ...
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Using user-data directory: /home/lenovo/Desktop/freqtrade/user_data ...
2024-04-16 13:51:33,459 - freqtrade.configuration.configuration - INFO - Using data directory: /home/lenovo/Desktop/freqtrade/user_data/data/binance ...
2024-04-16 13:51:33,460 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2024-04-16 13:51:33,464 - freqtrade.exchange.check_exchange - INFO - Exchange "binance" is officially supported by the Freqtrade development team.
2024-04-16 13:51:33,464 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2024-04-16 13:51:33,529 - freqtrade.resolvers.iresolver - WARNING - Could not import /home/lenovo/Desktop/freqtrade/freqtrade-strategies/user_data/strategies/Heracles.py due to 'No module named 'ta''
2024-04-16 13:51:33,532 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy Duy_strategy from '/home/lenovo/Desktop/freqtrade/freqtrade-strategies/user_data/strategies/Duy_strategy.py'...
2024-04-16 13:51:33,533 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: unlimited.
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 10, 'exit': 30}.
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 1.
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {'0': 1}
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 5m
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.1
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: False
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'market', 'stoploss_on_exchange': False}
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: unlimited
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using protections: []
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 400
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 10, 'exit': 30}
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: True
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2024-04-16 13:51:33,533 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 1
2024-04-16 13:51:33,533 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2024-04-16 13:51:33,535 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2024-04-16 13:51:33,535 - freqtrade.exchange.exchange - INFO - Using CCXT 4.2.25
2024-04-16 13:51:33,535 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}
2024-04-16 13:51:33,539 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}
2024-04-16 13:51:33,543 - freqtrade.exchange.exchange - INFO - Using Exchange "Binance"
2024-04-16 13:51:36,310 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Binance'...
2024-04-16 13:51:36,335 - freqtrade.wallets - INFO - Wallets synced.
2024-04-16 13:51:36,343 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/home/lenovo/Desktop/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2024-04-16 13:51:36,609 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/home/lenovo/Desktop/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2024-04-16 13:51:36,613 - freqtrade.plugins.pairlistmanager - INFO - Whitelist with 1 pairs: ['BTC/USDT:USDT']
2024-04-16 13:51:36,614 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2024-04-16 13:51:36,614 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2024-04-16 13:51:36,614 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2024-04-16 13:51:36,614 - freqtrade.plugins.protectionmanager - INFO - No protection Handlers defined.
2024-04-16 13:51:36,614 - freqtrade.rpc.rpc_manager - INFO - Sending rpc message: {'type': status, 'status': 'running'}
2024-04-16 13:51:36,614 - freqtrade.worker - INFO - Changing state to: RUNNING
2024-04-16 13:51:36,614 - freqtrade.util.migrations.binance_mig - WARNING - Migrating binance futures pairs in database.
2024-04-16 13:51:36,619 - freqtrade.util.migrations.binance_mig - WARNING - Done migrating binance futures pairs in database.
2024-04-16 13:51:36,625 - freqtrade.rpc.rpc_manager - INFO - Sending rpc message: {'type': warning, 'status': 'Dry run is enabled. All trades are simulated.'}
2024-04-16 13:51:36,625 - freqtrade.rpc.rpc_manager - INFO - Sending rpc message: {'type': startup, 'status': "*Exchange:* `binance`\n*Stake per trade:* `unlimited USDT`\n*Minimum ROI:* `{'0': 1}`\n*Stoploss:* `-0.1`\n*Position adjustment:* `Off`\n*Timeframe:* `5m`\n*Strategy:* `Duy_strategy`"}
2024-04-16 13:51:36,625 - freqtrade.rpc.rpc_manager - INFO - Sending rpc message: {'type': startup, 'status': "Searching for USDT pairs to buy and sell based on [{'StaticPairList': 'StaticPairList'}]"}
2024-04-16 13:51:36,630 - freqtrade.commands.trade_commands - ERROR - 'C' is not a valid CandleType
2024-04-16 13:51:36,630 - freqtrade.commands.trade_commands - ERROR - Fatal exception!
Traceback (most recent call last):
  File "/home/lenovo/Desktop/freqtrade/freqtrade/commands/trade_commands.py", line 25, in start_trading
    worker.run()
  File "/home/lenovo/Desktop/freqtrade/freqtrade/worker.py", line 75, in run
    state = self._worker(old_state=state)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/lenovo/Desktop/freqtrade/freqtrade/worker.py", line 116, in _worker
    self._throttle(func=self._process_running, throttle_secs=self._throttle_secs,
  File "/home/lenovo/Desktop/freqtrade/freqtrade/worker.py", line 147, in _throttle
    result = func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^
  File "/home/lenovo/Desktop/freqtrade/freqtrade/worker.py", line 180, in _process_running
    self.freqtrade.process()
  File "/home/lenovo/Desktop/freqtrade/freqtrade/freqtradebot.py", line 222, in process
    self.strategy.gather_informative_pairs())
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/lenovo/Desktop/freqtrade/freqtrade/strategy/interface.py", line 750, in gather_informative_pairs
    informative_pairs = [
                        ^
  File "/home/lenovo/Desktop/freqtrade/freqtrade/strategy/interface.py", line 751, in <listcomp>
    (p[0], p[1], CandleType.from_string(p[2]) if len(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/lenovo/Desktop/freqtrade/freqtrade/enums/candletype.py", line 24, in from_string
    return CandleType(value)
           ^^^^^^^^^^^^^^^^^
  File "/home/lenovo/anaconda3/envs/freqtrade/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/lenovo/anaconda3/envs/freqtrade/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 'C' is not a valid CandleType
2024-04-16 13:51:36,633 - freqtrade.commands.trade_commands - INFO - worker found ... calling exit
2024-04-16 13:51:36,633 - freqtrade.rpc.rpc_manager - INFO - Sending rpc message: {'type': status, 'status': 'process died'}
2024-04-16 13:51:36,633 - freqtrade.freqtradebot - INFO - Cleaning up modules ...
2024-04-16 13:51:36,634 - freqtrade.rpc.rpc_manager - INFO - Cleaning up rpc modules ...

This is my code using informative pair to calculate ema 200 line, and after that I merge it into dataframe, what do I need to consider when using informative?

    def informative_pairs(self):
        return ["BTC/USDT", "1h"]

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        if not self.dp:
            return dataframe
        
        inf_tf = '1h'
        informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe=inf_tf)
        informative['ema200'] = ta.EMA(informative, timeperiod=200)
        dataframe = merge_informative_pair(dataframe, informative, self.timeframe, inf_tf, ffill=True)

My environment

  • Operating system: Ubuntu 22.04
  • Python Version: 3.11
  • CCXT version: 4.2.25
  • Freqtrade Version: 2024.1

Well as expected, it's a problem with your strategy code.

as the documentation states - informative_pairs() needs to return a list of tuples.
You're however returning a simple list - which is simply wrong and has no meaning.
You should instead return a list of tuples - in your case, it'd transfer to the below:

def informative_pairs(self):
    return [
            ("BTC/USDT", "1h"),
     ]

oh, thank you very much