removed ftx get_mark_price_history, added variable mark_ohlcv_price, used fetch_ohlcv instead of fetch_mark_ohlcv inside get_mark_price_history

This commit is contained in:
Sam Germain 2021-10-29 20:07:24 -06:00
parent a4892654da
commit 0ea8957ccc
2 changed files with 31 additions and 39 deletions

View File

@ -80,6 +80,8 @@ class Exchange:
# TradingMode.SPOT always supported and not required in this list # TradingMode.SPOT always supported and not required in this list
] ]
mark_ohlcv_price = 'mark'
def __init__(self, config: Dict[str, Any], validate: bool = True) -> None: def __init__(self, config: Dict[str, Any], validate: bool = True) -> None:
""" """
Initializes this module with the given config, Initializes this module with the given config,
@ -1744,15 +1746,32 @@ class Exchange:
Get's the mark price history for a pair Get's the mark price history for a pair
""" """
candles = self._api.fetch_mark_ohlcv( try:
pair, candles = self._api.fetch_ohlcv(
timeframe="1h", pair,
since=start timeframe="1h",
) since=start,
history = {} params={
for candle in candles: 'price': self.mark_ohlcv_price
history[candle[0]] = candle[1] }
return history )
history = {}
for candle in candles:
history[candle[0]] = candle[1]
return history
except ccxt.NotSupported as e:
raise OperationalException(
f'Exchange {self._api.name} does not support fetching historical '
f'mark price candle (OHLCV) data. Message: {e}') from e
except ccxt.DDoSProtection as e:
raise DDosProtection(e) from e
except (ccxt.NetworkError, ccxt.ExchangeError) as e:
raise TemporaryError(f'Could not fetch historical mark price candle (OHLCV) data '
f'for pair {pair} due to {e.__class__.__name__}. '
f'Message: {e}') from e
except ccxt.BaseError as e:
raise OperationalException(f'Could not fetch historical mark price candle (OHLCV) data '
f'for pair {pair}. Message: {e}') from e
def calculate_funding_fees( def calculate_funding_fees(
self, self,
@ -1779,8 +1798,7 @@ class Exchange:
) )
mark_price_history = self._get_mark_price_history( mark_price_history = self._get_mark_price_history(
pair, pair,
int(open_date.timestamp()), int(open_date.timestamp())
close_date_timestamp
) )
for date in self._get_funding_fee_dates(open_date, close_date): for date in self._get_funding_fee_dates(open_date, close_date):
funding_rate = funding_rate_history[date.timestamp] funding_rate = funding_rate_history[date.timestamp]

View File

@ -1,6 +1,6 @@
""" FTX exchange subclass """ """ FTX exchange subclass """
import logging import logging
from typing import Any, Dict, List, Optional, Tuple from typing import Any, Dict, List, Tuple
import ccxt import ccxt
@ -28,6 +28,7 @@ class Ftx(Exchange):
# (TradingMode.MARGIN, Collateral.CROSS), # TODO-lev: Uncomment once supported # (TradingMode.MARGIN, Collateral.CROSS), # TODO-lev: Uncomment once supported
# (TradingMode.FUTURES, Collateral.CROSS) # TODO-lev: Uncomment once supported # (TradingMode.FUTURES, Collateral.CROSS) # TODO-lev: Uncomment once supported
] ]
mark_ohlcv_price = 'index'
def market_is_tradable(self, market: Dict[str, Any]) -> bool: def market_is_tradable(self, market: Dict[str, Any]) -> bool:
""" """
@ -168,30 +169,3 @@ class Ftx(Exchange):
if order['type'] == 'stop': if order['type'] == 'stop':
return safe_value_fallback2(order, order, 'id_stop', 'id') return safe_value_fallback2(order, order, 'id_stop', 'id')
return order['id'] return order['id']
def _get_mark_price_history(
self,
pair: str,
start: int,
end: Optional[int]
) -> Dict:
"""
Get's the mark price history for a pair
"""
if end:
params = {
'endTime': end
}
else:
params = {}
candles = self._api.fetch_index_ohlcv(
pair,
timeframe="1h",
since=start,
params=params
)
history = {}
for candle in candles:
history[candle[0]] = candle[1]
return history