Description
whatever I do, I can't get past the "symbol not found" error.
Standard RSI strategy
import blankly
from blankly import StrategyState
def price_event(price, symbol, state: StrategyState):
""" This function will give an updated price every 15 seconds from our definition below """
state.variables['history'].append(price)
rsi = blankly.indicators.rsi(state.variables['history'])
if rsi[-1] < 30:
# Dollar cost average buy
state.interface.market_order(symbol, side='buy', funds=10)
elif rsi[-1] > 70:
# Dollar cost average sell
state.interface.market_order(symbol, side='sell', funds=10)
def init(symbol, state: StrategyState):
# Download price data to give context to the algo
state.variables['history'] = state.interface.history(symbol, start_date = "2021-08-01", end_date = "2021-08-28", return_as='list')['close']
if __name__ == "__main__":
binance = blankly.Binance(portfolio_name="ATD Binance")
binance_strategy = blankly.Strategy(binance)
binance_strategy.add_price_event(price_event, symbol='ETH-USDT', resolution='1h', init=init)
# Start the strategy. This will begin each of the price event ticks
# binance_strategy.start()
# Or backtest using this
binance_strategy.backtest(start_date = "2021-08-01", end_date = "2021-08-28",
initial_values={'USDT': 100})
settings.json
{
"settings": {
"account_update_time": 5000,
"use_sandbox": false,
"use_sandbox_websockets": false,
"websocket_buffer_size": 10000,
"coinbase_pro": {
"cash": "USD"
},
"binance": {
"cash": "USDT",
"binance_tld": "com"
},
"alpaca": {
"websocket_stream": "iex",
"cash": "USD"
}
}
}
backtest.json
{
"price_data": {
"assets": [
[ "ETH-USDT", 1546290000, 1630270800, 300.0 ],
[ "ETH-USDT", 1546290000, 1630270800, 900.0 ],
[ "ETH-USDT", 1546290000, 1630270800, 1800.0 ],
[ "ETH-USDT", 1546290000, 1630270800, 3600.0 ],
[ "ETH-USDT", 1546290000, 1630270800, 14400.0 ],
[ "ETH-USDT", 1546290000, 1630270800, 21600.0 ],
[ "ETH-USDT", 1546290000, 1630270800, 86400.0 ]
]
},
"settings": {
"use_price": "close",
"smooth_prices": false,
"GUI_output": true,
"show_tickers_with_zero_delta": false,
"save_initial_account_value": true,
"show_progress_during_backtest": true,
"cache_location": "./price_caches",
"resample_account_value_for_metrics": "1d",
"quote_account_value_in": "USDT",
"ignore_user_exceptions": false
}
}
Error in Pyzo Editor
Including: ETH-USDT,1546290000,1630270800,300.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,900.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,1800.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,3600.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,14400.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,21600.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,86400.0.csv in backtest.
Including: ETH-USDT,1627776000.0,1630108800.0,3600.0.csv in backtest.
Including: ETH-USDT,1598774943.8658986,1630310943.8658986,3600.0.csv in backtest.
No exact cache exists for ETH-USDT from 1630310996.5534158 to 1630311056.5534158 at 3600.0s resolution. Downloading...
already identified
Initializing...
1630098000.0
Traceback (most recent call last):
File "C:\Blankly\RSI-strategy.py", line 30, in <module>
binance_strategy.backtest(start_date = "2021-08-01", end_date = "2021-08-28",
File "c:\python39\lib\site-packages\blankly\strategy\strategy_base.py", line 473, in backtest
results = self.backtesting_controller.run()
File "c:\python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\backtest_controller.py", line 397, in run
available_dict, no_trade_dict = self.format_account_data(self.initial_time)
File "c:\python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\backtest_controller.py", line 221, in format_account_data
true_account[i] = self.interface.get_account(i)
File "c:\python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\paper_trade_interface.py", line 298, in get_account
raise KeyError("Symbol not found.")
KeyError: 'Symbol not found.'
Error in CMD
C:\Blankly>RSI-strategy.py
Including: ETH-USDT,1546290000,1630270800,300.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,900.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,1800.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,3600.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,14400.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,21600.0.csv in backtest.
Including: ETH-USDT,1546290000,1630270800,86400.0.csv in backtest.
Including: ETH-USDT,1627776000.0,1630108800.0,3600.0.csv in backtest.
Initializing...
1630098000.0
Traceback (most recent call last):
File "C:\Python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\paper_trade_interface.py", line 296, in get_account
return trade_local.get_account(symbol)
File "C:\Python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\local_account\trade_local.py", line 125, in get_account
return copy.deepcopy(utils.AttributeDict(local_account.account[asset_id]))
KeyError: 'USD'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Blankly\RSI-strategy.py", line 30, in <module>
binance_strategy.backtest(start_date = "2021-08-01", end_date = "2021-08-28",
File "C:\Python39\lib\site-packages\blankly\strategy\strategy_base.py", line 473, in backtest
results = self.backtesting_controller.run()
File "C:\Python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\backtest_controller.py", line 397, in run
available_dict, no_trade_dict = self.format_account_data(self.initial_time)
File "C:\Python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\backtest_controller.py", line 221, in format_account_data
true_account[i] = self.interface.get_account(i)
File "C:\Python39\lib\site-packages\blankly\exchanges\interfaces\paper_trade\paper_trade_interface.py", line 298, in get_account
raise KeyError("Symbol not found.")
KeyError: 'Symbol not found.'
Platform Info
- Python version: 3.9.6
- Platform: Win10