Add lock for populating the indicators to the dataframe as they appear not to be thread-safe

This commit is contained in:
Samuel Husso 2017-12-31 09:07:45 +02:00
parent 9803130848
commit e73b5f8d86

View File

@ -5,6 +5,7 @@ import logging
from datetime import timedelta from datetime import timedelta
from enum import Enum from enum import Enum
from typing import List, Dict from typing import List, Dict
from threading import RLock
import arrow import arrow
import talib.abstract as ta import talib.abstract as ta
@ -14,7 +15,7 @@ from freqtrade.exchange import get_ticker_history
from freqtrade.vendor.qtpylib.indicators import awesome_oscillator, crossed_above from freqtrade.vendor.qtpylib.indicators import awesome_oscillator, crossed_above
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
lock = RLock()
class SignalType(Enum): class SignalType(Enum):
""" Enum to distinguish between buy and sell signals """ """ Enum to distinguish between buy and sell signals """
@ -121,10 +122,12 @@ def analyze_ticker(ticker_history: List[Dict]) -> DataFrame:
add several TA indicators and buy signal to it add several TA indicators and buy signal to it
:return DataFrame with ticker data and indicator data :return DataFrame with ticker data and indicator data
""" """
dataframe = parse_ticker_dataframe(ticker_history) with lock:
dataframe = parse_ticker_dataframe(ticker_history)
dataframe = populate_indicators(dataframe) dataframe = populate_indicators(dataframe)
dataframe = populate_buy_trend(dataframe) dataframe = populate_buy_trend(dataframe)
dataframe = populate_sell_trend(dataframe) dataframe = populate_sell_trend(dataframe)
return dataframe return dataframe