initial commit

This commit is contained in:
Rahul 2023-02-11 18:31:25 -05:00
parent b3fbb263ce
commit a3cc001f1b
3 changed files with 48 additions and 3 deletions

View File

@ -0,0 +1,26 @@
from enum import Enum
class MarketDirection(Enum):
"""
Enum for various market directions.
"""
LONG = "long"
SHORT = "short"
EVEN = "even"
NONE = ''
@staticmethod
def string_to_enum(label : str) -> str:
match label:
case "long":
return MarketDirection.LONG
case "short":
return MarketDirection.SHORT
case "even":
return MarketDirection.EVEN
case 'none':
return MarketDirection.NONE
case _:
return None

View File

@ -25,7 +25,7 @@ from telegram.utils.helpers import escape_markdown
from freqtrade.__init__ import __version__
from freqtrade.constants import DUST_PER_COIN, Config
from freqtrade.enums import RPCMessageType, SignalDirection, TradingMode
from freqtrade.enums import MarketDirection, RPCMessageType, SignalDirection, TradingMode
from freqtrade.exceptions import OperationalException
from freqtrade.misc import chunks, plural, round_coin_value
from freqtrade.persistence import Trade
@ -129,7 +129,7 @@ class Telegram(RPCHandler):
r'/weekly$', r'/weekly \d+$', r'/monthly$', r'/monthly \d+$',
r'/forcebuy$', r'/forcelong$', r'/forceshort$',
r'/forcesell$', r'/forceexit$',
r'/edge$', r'/health$', r'/help$', r'/version$'
r'/edge$', r'/health$', r'/help$', r'/version$', r'/marketdir$'
]
# Create keys for generation
valid_keys_print = [k.replace('$', '') for k in valid_keys]
@ -197,6 +197,7 @@ class Telegram(RPCHandler):
CommandHandler('health', self._health),
CommandHandler('help', self._help),
CommandHandler('version', self._version),
CommandHandler('marketdir', self._changemarketdir)
]
callbacks = [
CallbackQueryHandler(self._status_table, pattern='update_status_table'),
@ -1677,3 +1678,18 @@ class Telegram(RPCHandler):
'TelegramError: %s! Giving up on that message.',
telegram_err.message
)
@authorized_only
def _changemarketdir(self, update: Update, context: CallbackContext) -> None:
"""
Handler for /marketdir.
Updates the bot's market_direction
:param bot: telegram bot
:param update: message update
:return: None
"""
if context.args and len(context.args) == 1:
market_dir = MarketDirection.string_to_enum(context.args[0])
if market_dir:
self._rpc._freqtrade.strategy.market_direction = market_dir

View File

@ -12,7 +12,7 @@ from pandas import DataFrame
from freqtrade.constants import Config, IntOrInf, ListPairsWithTimeframes
from freqtrade.data.dataprovider import DataProvider
from freqtrade.enums import (CandleType, ExitCheckTuple, ExitType, RunMode, SignalDirection,
from freqtrade.enums import (CandleType, ExitCheckTuple, ExitType, MarketDirection, RunMode, SignalDirection,
SignalTagType, SignalType, TradingMode)
from freqtrade.exceptions import OperationalException, StrategyError
from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date, timeframe_to_seconds
@ -122,6 +122,9 @@ class IStrategy(ABC, HyperStrategyMixin):
# Definition of plot_config. See plotting documentation for more details.
plot_config: Dict = {}
# A self set parameter that represents the market direction. filled from configuration
market_direction: MarketDirection = MarketDirection.NONE
def __init__(self, config: Config) -> None:
self.config = config
# Dict to determine if analysis is necessary