Revert to working version
This commit is contained in:
parent
43f5ae3c53
commit
1ef6cc4857
56
app.py
56
app.py
@ -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')
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user