allowing custom rpc messages to be sent
This commit is contained in:
parent
dd4e44931e
commit
803c94f735
@ -19,6 +19,8 @@ class RPCMessageType(Enum):
|
||||
|
||||
STRATEGY_MSG = 'strategy_msg'
|
||||
|
||||
CUSTOM_MSG = "custom_msg"
|
||||
|
||||
def __repr__(self):
|
||||
return self.value
|
||||
|
||||
|
@ -81,6 +81,7 @@ class FreqtradeBot(LoggingMixin):
|
||||
# the initial state of the bot.
|
||||
# Keep this at the end of this initialization method.
|
||||
self.rpc: RPCManager = RPCManager(self)
|
||||
self.strategy.set_rpc_send_msg_function(self.rpc.send_msg)
|
||||
|
||||
self.pairlists = PairListManager(self.exchange, self.config)
|
||||
|
||||
|
@ -407,6 +407,8 @@ class Telegram(RPCHandler):
|
||||
message = f"{msg['status']}"
|
||||
elif msg_type == RPCMessageType.STRATEGY_MSG:
|
||||
message = f"{msg['msg']}"
|
||||
elif msg_type == RPCMessageType.CUSTOM_MSG:
|
||||
message = f"{msg['msg']}"
|
||||
else:
|
||||
raise NotImplementedError(f"Unknown message type: {msg_type}")
|
||||
return message
|
||||
|
@ -5,7 +5,7 @@ This module defines the interface to apply for strategies
|
||||
import logging
|
||||
from abc import ABC, abstractmethod
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from typing import Dict, List, Optional, Tuple, Union
|
||||
from typing import Dict, List, Optional, Tuple, Union, Callable
|
||||
|
||||
import arrow
|
||||
from pandas import DataFrame
|
||||
@ -18,6 +18,7 @@ from freqtrade.enums.runmode import RunMode
|
||||
from freqtrade.exceptions import OperationalException, StrategyError
|
||||
from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date, timeframe_to_seconds
|
||||
from freqtrade.persistence import Order, PairLocks, Trade
|
||||
from freqtrade.rpc import RPC
|
||||
from freqtrade.strategy.hyper import HyperStrategyMixin
|
||||
from freqtrade.strategy.informative_decorator import (InformativeData, PopulateIndicators,
|
||||
_create_and_merge_informative_pair,
|
||||
@ -119,6 +120,9 @@ class IStrategy(ABC, HyperStrategyMixin):
|
||||
# Definition of plot_config. See plotting documentation for more details.
|
||||
plot_config: Dict = {}
|
||||
|
||||
# Add rpc handler to send custom messages
|
||||
send_msg = lambda x: x
|
||||
|
||||
def __init__(self, config: dict) -> None:
|
||||
self.config = config
|
||||
# Dict to determine if analysis is necessary
|
||||
@ -1191,3 +1195,6 @@ class IStrategy(ABC, HyperStrategyMixin):
|
||||
if 'exit_long' not in df.columns:
|
||||
df = df.rename({'sell': 'exit_long'}, axis='columns')
|
||||
return df
|
||||
|
||||
def set_rpc_send_msg_function(self, rpc_send_msg_function: Callable):
|
||||
self.send_msg = rpc_send_msg_function
|
||||
|
@ -6,6 +6,7 @@ import numpy as np # noqa
|
||||
import pandas as pd # noqa
|
||||
from pandas import DataFrame
|
||||
|
||||
from freqtrade.enums import RPCMessageType
|
||||
from freqtrade.strategy import (BooleanParameter, CategoricalParameter, DecimalParameter,
|
||||
IStrategy, IntParameter)
|
||||
|
||||
@ -108,6 +109,12 @@ class SampleStrategy(IStrategy):
|
||||
}
|
||||
}
|
||||
|
||||
def bot_start(self, **kwargs) -> None:
|
||||
self.send_msg({
|
||||
'type': RPCMessageType.CUSTOM_MSG,
|
||||
'msg': "This is a custom message sent to all RPCs"
|
||||
})
|
||||
|
||||
def informative_pairs(self):
|
||||
"""
|
||||
Define additional, informative pair/interval combinations to be cached from the exchange.
|
||||
|
Loading…
Reference in New Issue
Block a user