Revert to working version

This commit is contained in:
Eric Meehan 2025-01-27 20:48:24 -05:00
parent 43f5ae3c53
commit 1ef6cc4857
2 changed files with 46 additions and 35 deletions

56
app.py
View File

@ -1,46 +1,32 @@
import backtrader
import krakenex
import logging import logging
import os import os
from kraken_bot.KrakenBot import KrakenBot
from kraken_bot.LinearRegression import LinearRegression
from kraken_bot.HighLowCutoff import HighLowCutoff
from dotenv import load_dotenv from dotenv import load_dotenv
from pykrakenapi import KrakenAPI
from time import sleep
from kraken_bot.MovingAverageCrossOver import MA_CrossOver
load_dotenv() load_dotenv()
token = os.getenv('KRAKEN_API_TOKEN')
secret = os.getenv('KRAKEN_API_SEC')
tier = os.getenv('KRAKEN_API_TIER', 'Pro')
asset_pair = os.getenv('KRAKEN_TRADABLE_ASSET_PAIR', 'XBTUSD')
interval = int(os.getenv('KRAKEN_DATA_INTERVAL', 60))
percents = float(os.getenv('CEREBRO_SIZER_PERCENTS', 50))
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
kraken = KrakenAPI(krakenex.API(token, secret), tier)
cerebro = backtrader.Cerebro()
market = kraken.get_tradable_asset_pairs(pair=asset_pair).iloc[0] model = LinearRegression(
sleep(kraken.factor) r_value_target = float(os.getenv('R_VALUE_TARGET'))
cerebro.broker.setcommission(commission=market.fees[0][1]/100) )
strategy = HighLowCutoff(
ohlc, last = kraken.get_ohlc_data(asset_pair, interval=interval, since=None, ascending=True) investment_count = int(os.getenv('INVESTMENT_COUNT')),
sleep(kraken.factor) investment_volume = float(os.getenv('INVESTMENT_VOLUME')),
cerebro.adddata(backtrader.feeds.PandasData(dataname=ohlc)) target_gain = float(os.getenv('TARGET_GAIN')),
max_loss = float(os.getenv('MAX_LOSS'))
account_balance = kraken.get_trade_balance(asset='ZUSD').loc['eb'].ZUSD )
sleep(kraken.factor) bot = KrakenBot(
cerebro.broker.setcash(account_balance) token = os.getenv('KRAKEN_API_TOKEN'),
cerebro.addsizer(backtrader.sizers.PercentSizer, percents=percents) secret = os.getenv('KRAKEN_API_SEC'),
tier = 'Pro',
cerebro.addstrategy(MA_CrossOver) model = model,
trading_strategy = strategy
)
if __name__ == '__main__': if __name__ == '__main__':
start_balance = cerebro.broker.getvalue() bot.update(full=True)
print('Starting Portfolio Value: %.6f' % start_balance) bot.execute()
x = cerebro.run()
end_balance = cerebro.broker.getvalue()
print('Final Portfolio Value: %.6f' % end_balance)
print('Percent change: %.6f' % (((end_balance - start_balance)/start_balance) * 100))
cerebro.plot(style='candlestick')

View File

@ -77,3 +77,28 @@ class KrakenBot(KrakenAPI):
order.close_price, order.close_price2, order.deadline, order.validate, order.otp) order.close_price, order.close_price2, order.deadline, order.validate, order.otp)
self.log.info(order) self.log.info(order)
self.update() self.update()
def update(self, full=False):
self.log.debug(f"update: full={full}")
self._update_tradable_asset_pairs()
self._filter_tradable_asset_pairs()
self._update_account_balance()
self._filter_account_balance()
self._update_trade_balance()
if full:
self._update_ohlc_data()
self.model.update(
self.tradable_asset_pairs,
self.ohlc_data
)
self.trading_strategy.update(
self.tradable_asset_pairs,
self.ohlc_data,
self.model.analysis,
self.account_balance
)
def execute(self):
self.log.debug(f"execute")
for order in self.trading_strategy.orders:
self._add_standard_order(order)