def __init__(self): self.handler = handler() self.assets = handler().assets self.assets_trade = [ 'EURUSD', 'EURAUD', 'GBPJPY', 'GBPCAD', 'USDCAD', 'USDJPY', 'AUDJPY', 'IBUS500', 'IBUST100', 'IBGB100', 'IBDE30', 'IBFR40' ]
def chart(plan, id, symbol, time, date): #UP- name = id + "_" + str(time) total = 0 for i in plan.keys(): if i == id: for ii in plan.get(i)['strat'].keys(): total += 1 df = hd.handler().candle_data(symbol, plan.get(i)['strat'][ii], 20) fig, ax = plt.subplots(figsize=(15, 10)) candlestick2_ohlc(ax, df.open, df.high, df.low, df.close, width=0.5, colorup='g', colordown='r') ax.set_title( f"{symbol} with {plan.get(i)['strat'][ii]} Minutes Candle", fontsize=18) if not os.path.exists(f'./DATA/charts/{date}'): #UP- os.makedirs(f'./DATA/charts/{date}') #UP- plt.savefig(f'./DATA/charts/{date}/{name}_{total}.svg') #UP- plt.clf()
def info(self): plan = pd.DataFrame(self.plan.values(), self.plan.keys()) db = {} for i in plan.asset.unique(): db.update({ i: { 'start': handler().trading_hours(i)[0], 'end': handler().trading_hours(i)[1], 'digits': handler().instruments_info(i) } }) print(db) return db
def __init__(self, plan, orders, trades): self.orders = orders self.trades = trades self.plan = plan self.handle = handler() self.strat = strategy(self.plan) self.ind = indicators()
def info(self): plan = pd.DataFrame(self.plan.values(), self.plan.keys()) db = {} for i in plan.asset.unique(): db.update({i: {'digits': handler().account_instruments(i)}}) print(db) return db
def __init__(self, plan, orders, trades, x): self.orders = orders self.trades = trades self.plan = plan self.x = x self.intraday = self.first_data() self.asset_info = self.info() self.handle = handler() self.strat = strategy(self.plan) self.ind = indicators()
def first_data(self): ''' the first call-load of intraday database to save on future calls to broker for data it is important remember that the qty of data requested most fit the needed for all indicators ''' y = pd.DataFrame() for i, ii in self.x: temp = handler().candle_data(i, ii, 205).iloc[:-1] temp['tf'] = ii y = pd.concat([y, temp], sort=True) return y
def _get_new_data(self): if 'OANDA' not in os.listdir('./../DATA/'): last = dt.datetime.now( tz=pytz.timezone("Europe/Moscow")) - dt.timedelta(1900) db = pd.DataFrame() else: db = pd.read_pickle('./../DATA/OANDA') db.columns = db.columns.str.lower() db = db.reset_index().set_index('date') last = sorted(db.index.unique())[-1] data = pd.DataFrame() if last.date() == ( dt.datetime.now(tz=pytz.timezone("Europe/Moscow")).date() - dt.timedelta(1)): pass else: for i in assets: df = handler().candle_data( i, 1440, 1, from_dt=last, to_dt=(dt.datetime.now(tz=pytz.timezone("Europe/Moscow"))) - dt.timedelta(1), use='plan') data = pd.concat([data, df], sort=True).drop_duplicates() df = data.reset_index().rename({ 'index': 'date' }, axis=1).set_index(['date', 'asset']) if len(db) > 1: db = db.reset_index().set_index(['date', 'asset']) df = pd.concat([db, df], sort=True).drop_duplicates() df = df.reset_index().set_index('date') self._remove_duplicated(df)
def __init__(self): self.handle = handler()
def __init__(self): self.handler = handler() self.assets = handler().assets
import pandas as pd import datetime as dt from plan_indicat import ind import pickle from user_data import * from handle_data import handler import pytz import os risk = MAX_PERCENTAGE_ACCOUNT_AT_RISK capital = float(handler().account_balance()) daily_risk = capital * risk ind = ind() trade_short = ['USDJPY', 'GBPJPY', 'AUDJPY'] trade_long = ['USDCAD', 'IBUS500', 'EURUSD', 'IBJP225'] class build_plan: def __init__(self): self.handler = handler() self.assets = handler().assets def _get_new_data(self): if 'IB' not in os.listdir('./../DATA/'): last = dt.datetime.now( tz=pytz.timezone("Europe/Moscow")).date() - dt.timedelta(1900) db = pd.DataFrame() else: db = pd.read_pickle('./../DATA/IB') db.columns = db.columns.str.lower()
def __init__(self, plan): self.handle = handler() self.indicators = indicators() self.plan = plan
import pandas as pd import datetime as dt import pickle from user_data import * from handle_data import handler import pytz import os import warnings warnings.filterwarnings("ignore") import time capital = float(handler().account_details()['NAV']) daily_risk = capital * MAX_PERCENTAGE_ACCOUNT_AT_RISK ind = ind() assets = [ 'EUR_USD', 'EUR_JPY', 'EUR_GBP', 'EUR_AUD', 'EUR_CAD', 'USD_JPY', 'GBP_USD', 'AUD_USD', 'USD_CAD', 'GBP_JPY', 'AUD_JPY', 'CAD_JPY', 'GBP_AUD', 'GBP_CAD', 'SPX500_USD', 'NAS100_USD', 'UK100_GBP', 'DE30_EUR', 'FR40_EUR', 'JP225_USD', 'HK33_HKD', 'AU200_AUD', 'IN50_USD', 'XAU_USD', 'WTICO_USD', 'XCU_USD', 'US2000_USD' ] trade_short = [] trade_long = [] class build_plan: def __init__(self): pass