bug fix for depth of field infinite loop bug, added experimental check for 24hour average of high and low

This commit is contained in:
Nullart
2018-06-28 11:42:10 +08:00
parent fff2b81c10
commit 8177cb040a
5 changed files with 42 additions and 30 deletions

View File

@@ -95,7 +95,8 @@ CONF_SCHEMA = {
'sell_profit_only': {'type': 'boolean'},
'sell_fullfilled_at_roi': {'type': 'boolean'},
'check_depth_of_market': {'type': 'boolean'},
'dom_bids_asks_delta': {'type': 'number', 'minimum': 0}
'dom_bids_asks_delta': {'type': 'number', 'minimum': 0},
'buy_price_below_24h_h_l': {'type': 'boolean'},
}
},
'telegram': {

View File

@@ -322,23 +322,31 @@ class FreqtradeBot(object):
for _pair in whitelist:
(buy, sell) = self.analyze.get_signal(_pair, interval)
if buy and not sell:
pair = _pair
break
# order book depth of market
if self.config.get('experimental', {}).get('check_depth_of_market', False) \
and (self.config.get('experimental', {}).get('dom_bids_asks_delta', 0) > 0):
logger.info('depth of market check for %s', _pair)
orderBook = exchange.get_order_book(_pair, 1000)
orderBook_df = self.analyze.order_book_to_dataframe(orderBook)
orderBook_bids = orderBook_df['b_size'].sum()
orderBook_asks = orderBook_df['a_size'].sum()
logger.info('bids: %s, asks: %s, delta: %s', orderBook_bids, orderBook_asks, orderBook_bids / orderBook_asks)
if (orderBook_bids / orderBook_asks) >= self.config.get('experimental', {}).get('dom_bids_asks_delta', 0):
# check if price is below average of 24h high low
if self.config.get('experimental', {}).get('buy_price_below_24h_h_l', False):
pair_ticker = exchange.get_ticker(_pair)
logger.info('checking ask price if below 24h high %s and low %s average...', pair_ticker['high'], pair_ticker['low'])
if pair_ticker['ask'] > ((pair_ticker['high']+pair_ticker['low'])/2):
pair = _pair
break
pair = _pair
break
else:
pair = _pair
break
else:
return False
# order book depth of market
if self.config.get('experimental', {}).get('check_depth_of_market', False) \
and (self.config.get('experimental', {}).get('dom_bids_asks_delta', 0) > 0):
logger.info('depth of market check for %s', pair)
orderBook = exchange.get_order_book(pair, 1000)
orderBook_df = self.analyze.order_book_to_dataframe(orderBook)
orderBook_bids = orderBook_df['b_size'].sum()
orderBook_asks = orderBook_df['a_size'].sum()
logger.info('bids: %s, asks: %s, delta: %s', orderBook_bids, orderBook_asks, orderBook_bids / orderBook_asks)
if (orderBook_bids / orderBook_asks) < self.config.get('experimental', {}).get('dom_bids_asks_delta', 0):
return False
pair_s = pair.replace('_', '/')
pair_url = exchange.get_pair_detail_url(pair)
# Calculate amount