BUG: made some live-trading adjustments related to issue #71

This commit is contained in:
fredfortier
2017-11-21 13:56:05 -05:00
parent 0d366a350d
commit 02dc4d6a30
5 changed files with 54 additions and 42 deletions
+3 -2
View File
@@ -149,13 +149,14 @@ def load_crypto_market_data(trading_day=None, trading_days=None,
# exchange.get_history_window() already ensures that we have the right data
# for the right dates
br = exchange.get_history_window(
br = exchange.get_history_window_with_bundle(
assets=[benchmark_asset],
end_dt=last_date,
bar_count=pd.Timedelta(last_date - start_dt).days,
frequency='1d',
field='close',
data_frequency='daily')
data_frequency='daily',
force_auto_ingest=True)
br.columns = ['close']
br = br.pct_change(1).iloc[1:]
br.loc[start_dt] = 0
+6 -6
View File
@@ -27,7 +27,7 @@ def initialize(context):
# parameters or values you're going to use.
# In our example, we're looking at Ether in USD Tether.
context.neo_usd = symbol('neo_usd')
context.neo_usd = symbol('neo_btc')
context.base_price = None
context.current_day = None
@@ -57,7 +57,7 @@ def handle_data(context, data):
context.neo_usd,
fields='close',
bar_count=50,
frequency='15T'
frequency='30T'
)
# Ta-lib calculates various technical indicator based on price and
@@ -215,7 +215,7 @@ def analyze(context=None, perf=None):
if __name__ == '__main__':
# The execution mode: backtest or live
MODE = 'backtest'
MODE = 'live'
if MODE == 'backtest':
# catalyst run -f catalyst/examples/mean_reversion_simple.py -x poloniex -s 2017-10-1 -e 2017-11-10 -c usdt -n mean-reversion --data-frequency minute --capital-base 10000
@@ -237,9 +237,9 @@ if __name__ == '__main__':
initialize=initialize,
handle_data=handle_data,
analyze=analyze,
exchange_name='bitfinex',
exchange_name='bittrex',
live=True,
algo_namespace=NAMESPACE,
base_currency='usd',
live_graph=True
base_currency='btc',
live_graph=False
)
+39 -28
View File
@@ -468,15 +468,14 @@ class Exchange:
return series
@deprecated
def get_history_window_direct(self,
assets,
end_dt,
bar_count,
frequency,
field,
data_frequency=None,
ffill=True):
def get_history_window(self,
assets,
end_dt,
bar_count,
frequency,
field,
data_frequency=None,
ffill=True):
"""
Public API method that returns a dataframe containing the requested
@@ -514,35 +513,46 @@ class Exchange:
A dataframe containing the requested data.
"""
start_dt = get_start_dt(end_dt, bar_count, data_frequency)
freq, candle_size, unit, data_frequency = get_frequency(
frequency, data_frequency
)
adj_bar_count = candle_size * bar_count
start_dt = get_start_dt(end_dt, adj_bar_count, data_frequency)
# The get_history method supports multiple asset
candles = self.get_candles(
data_frequency=frequency,
freq=freq,
assets=assets,
bar_count=bar_count,
start_dt=start_dt,
end_dt=end_dt
)
candle_series = self.get_series_from_candles(
candles=candles,
start_dt=start_dt,
end_dt=end_dt,
data_frequency=frequency,
field=field,
)
df = pd.DataFrame(candle_series)
series = dict()
for asset in candles:
asset_series = self.get_series_from_candles(
candles=candles[asset],
start_dt=start_dt,
end_dt=end_dt,
data_frequency=frequency,
field=field,
)
series[asset] = asset_series
df = pd.DataFrame(series)
df.dropna(inplace=True)
return df
def get_history_window(self,
assets,
end_dt,
bar_count,
frequency,
field,
data_frequency=None,
ffill=True):
def get_history_window_with_bundle(self,
assets,
end_dt,
bar_count,
frequency,
field,
data_frequency=None,
ffill=True,
force_auto_ingest=False):
"""
Public API method that returns a dataframe containing the requested
@@ -590,7 +600,8 @@ class Exchange:
end_dt=end_dt,
bar_count=adj_bar_count,
field=field,
data_frequency=data_frequency
data_frequency=data_frequency,
force_auto_ingest=force_auto_ingest
)
except (PricingDataNotLoadedError, NoDataAvailableOnExchange):
series = dict()
+6 -5
View File
@@ -684,7 +684,8 @@ class ExchangeBundle:
field,
data_frequency,
algo_end_dt=None,
trailing_bar_count=None
trailing_bar_count=None,
force_auto_ingest=False
):
"""
Retrieve price data history, ingest missing data.
@@ -703,7 +704,7 @@ class ExchangeBundle:
Series
"""
if AUTO_INGEST:
if AUTO_INGEST or force_auto_ingest:
try:
series = self.get_history_window_series(
assets=assets,
@@ -711,7 +712,7 @@ class ExchangeBundle:
bar_count=bar_count,
field=field,
data_frequency=data_frequency,
trailing_bar_count=trailing_bar_count
trailing_bar_count=trailing_bar_count,
)
return pd.DataFrame(series)
@@ -740,7 +741,7 @@ class ExchangeBundle:
field=field,
data_frequency=data_frequency,
reset_reader=True,
trailing_bar_count=trailing_bar_count
trailing_bar_count=trailing_bar_count,
)
return series
@@ -751,7 +752,7 @@ class ExchangeBundle:
bar_count=bar_count,
field=field,
data_frequency=data_frequency,
trailing_bar_count=trailing_bar_count
trailing_bar_count=trailing_bar_count,
)
return pd.DataFrame(series)
-1
View File
@@ -487,7 +487,6 @@ def resample_history_df(df, freq, field):
DataFrame
"""
print(df.tail(30))
if field == 'open':
agg = 'first'
elif field == 'high':