Update dataprovider function name to get_producer_df
This commit is contained in:
parent
e6c5c22ea0
commit
1626eb7f97
@ -39,7 +39,7 @@ Enable subscribing to an instance by adding the `external_message_consumer` sect
|
|||||||
|------------|-------------|
|
|------------|-------------|
|
||||||
| `enabled` | **Required.** Enable follower mode. If set to false, all other settings in this section are ignored.<br>*Defaults to `false`.*<br> **Datatype:** boolean .
|
| `enabled` | **Required.** Enable follower mode. If set to false, all other settings in this section are ignored.<br>*Defaults to `false`.*<br> **Datatype:** boolean .
|
||||||
| `producers` | **Required.** List of producers <br> **Datatype:** Array.
|
| `producers` | **Required.** List of producers <br> **Datatype:** Array.
|
||||||
| `producers.name` | **Required.** Name of this producer. This name must be used in calls to `get_producer_pairs()` and `get_external_df()` if more than one producer is used.<br> **Datatype:** string
|
| `producers.name` | **Required.** Name of this producer. This name must be used in calls to `get_producer_pairs()` and `get_producer_df()` if more than one producer is used.<br> **Datatype:** string
|
||||||
| `producers.host` | **Required.** The hostname or IP address from your leader.<br> **Datatype:** string
|
| `producers.host` | **Required.** The hostname or IP address from your leader.<br> **Datatype:** string
|
||||||
| `producers.port` | **Required.** The port matching the above host.<br> **Datatype:** string
|
| `producers.port` | **Required.** The port matching the above host.<br> **Datatype:** string
|
||||||
| `producers.ws_token` | **Required.** `ws_token` as configured on the leader.<br> **Datatype:** string
|
| `producers.ws_token` | **Required.** `ws_token` as configured on the leader.<br> **Datatype:** string
|
||||||
@ -106,7 +106,7 @@ class FollowerStrategy(IStrategy):
|
|||||||
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||||
"""
|
"""
|
||||||
Use the websocket api to get pre-populated indicators from another freqtrade instance.
|
Use the websocket api to get pre-populated indicators from another freqtrade instance.
|
||||||
Use `self.dp.get_external_df(pair)` to get the dataframe
|
Use `self.dp.get_producer_df(pair)` to get the dataframe
|
||||||
"""
|
"""
|
||||||
pair = metadata['pair']
|
pair = metadata['pair']
|
||||||
timeframe = self.timeframe
|
timeframe = self.timeframe
|
||||||
@ -116,9 +116,9 @@ class FollowerStrategy(IStrategy):
|
|||||||
# self.dp.get_producer_pairs("my_other_producer")
|
# self.dp.get_producer_pairs("my_other_producer")
|
||||||
|
|
||||||
# This func returns the analyzed dataframe, and when it was analyzed
|
# This func returns the analyzed dataframe, and when it was analyzed
|
||||||
leader_dataframe, _ = self.dp.get_external_df(pair)
|
leader_dataframe, _ = self.dp.get_producer_df(pair)
|
||||||
# You can get other data if your leader makes it available:
|
# You can get other data if your leader makes it available:
|
||||||
# self.dp.get_external_df(
|
# self.dp.get_producer_df(
|
||||||
# pair,
|
# pair,
|
||||||
# timeframe="1h",
|
# timeframe="1h",
|
||||||
# candle_type=CandleType.SPOT,
|
# candle_type=CandleType.SPOT,
|
||||||
|
@ -150,7 +150,7 @@ class DataProvider:
|
|||||||
self.__producer_pairs_df[producer_name][pair_key] = (dataframe, _last_analyzed)
|
self.__producer_pairs_df[producer_name][pair_key] = (dataframe, _last_analyzed)
|
||||||
logger.debug(f"External DataFrame for {pair_key} from {producer_name} added.")
|
logger.debug(f"External DataFrame for {pair_key} from {producer_name} added.")
|
||||||
|
|
||||||
def get_external_df(
|
def get_producer_df(
|
||||||
self,
|
self,
|
||||||
pair: str,
|
pair: str,
|
||||||
timeframe: Optional[str] = None,
|
timeframe: Optional[str] = None,
|
||||||
@ -158,7 +158,7 @@ class DataProvider:
|
|||||||
producer_name: str = "default"
|
producer_name: str = "default"
|
||||||
) -> Tuple[DataFrame, datetime]:
|
) -> Tuple[DataFrame, datetime]:
|
||||||
"""
|
"""
|
||||||
Get the pair data from the external sources.
|
Get the pair data from producers.
|
||||||
|
|
||||||
:param pair: pair to get the data for
|
:param pair: pair to get the data for
|
||||||
:param timeframe: Timeframe to get data for
|
:param timeframe: Timeframe to get data for
|
||||||
|
@ -161,7 +161,7 @@ def test_producer_pairs(mocker, default_conf, ohlcv_history):
|
|||||||
assert dataprovider.get_producer_pairs("bad") == []
|
assert dataprovider.get_producer_pairs("bad") == []
|
||||||
|
|
||||||
|
|
||||||
def test_external_df(mocker, default_conf, ohlcv_history):
|
def test_get_producer_df(mocker, default_conf, ohlcv_history):
|
||||||
dataprovider = DataProvider(default_conf, None)
|
dataprovider = DataProvider(default_conf, None)
|
||||||
|
|
||||||
pair = 'BTC/USDT'
|
pair = 'BTC/USDT'
|
||||||
@ -172,23 +172,23 @@ def test_external_df(mocker, default_conf, ohlcv_history):
|
|||||||
now = datetime.now(timezone.utc)
|
now = datetime.now(timezone.utc)
|
||||||
|
|
||||||
# no data has been added, any request should return an empty dataframe
|
# no data has been added, any request should return an empty dataframe
|
||||||
dataframe, la = dataprovider.get_external_df(pair, timeframe, candle_type)
|
dataframe, la = dataprovider.get_producer_df(pair, timeframe, candle_type)
|
||||||
assert dataframe.empty
|
assert dataframe.empty
|
||||||
assert la == empty_la
|
assert la == empty_la
|
||||||
|
|
||||||
# the data is added, should return that added dataframe
|
# the data is added, should return that added dataframe
|
||||||
dataprovider._add_external_df(pair, ohlcv_history, now, timeframe, candle_type)
|
dataprovider._add_external_df(pair, ohlcv_history, now, timeframe, candle_type)
|
||||||
dataframe, la = dataprovider.get_external_df(pair, timeframe, candle_type)
|
dataframe, la = dataprovider.get_producer_df(pair, timeframe, candle_type)
|
||||||
assert len(dataframe) > 0
|
assert len(dataframe) > 0
|
||||||
assert la > empty_la
|
assert la > empty_la
|
||||||
|
|
||||||
# no data on this producer, should return empty dataframe
|
# no data on this producer, should return empty dataframe
|
||||||
dataframe, la = dataprovider.get_external_df(pair, producer_name='bad')
|
dataframe, la = dataprovider.get_producer_df(pair, producer_name='bad')
|
||||||
assert dataframe.empty
|
assert dataframe.empty
|
||||||
assert la == empty_la
|
assert la == empty_la
|
||||||
|
|
||||||
# non existent timeframe, empty dataframe
|
# non existent timeframe, empty dataframe
|
||||||
datframe, la = dataprovider.get_external_df(pair, timeframe='1h')
|
datframe, la = dataprovider.get_producer_df(pair, timeframe='1h')
|
||||||
assert dataframe.empty
|
assert dataframe.empty
|
||||||
assert la == empty_la
|
assert la == empty_la
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user