示例#1
0
from alchemist_lib.database import Session

from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.aum_history import AumHistory
from alchemist_lib.database.ohlcv import Ohlcv
from alchemist_lib.database.ptf_allocation import PtfAllocation
from alchemist_lib.database.ts import Ts
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe
from alchemist_lib.database.executed_order import ExecutedOrder

session = Session()

all_assets = session.query(Asset).all()
bittrex_assets = session.query(Asset).join(
    Exchange,
    Asset.exchanges).filter(Exchange.exchange_name == "Bittrex").all()
print("All assets:\n", all_assets)
print("All assets instrument:\n", [asset.instrument for asset in all_assets])
print("All assets exchanges:\n", [asset.exchanges for asset in all_assets])
print("Bittrex assets:\n", bittrex_assets)

print("\n")

aum_history = session.query(AumHistory).all()
print("All aum history:\n", aum_history)
print("All aum history trading systems:\n",
示例#2
0
import alchemist_lib.exchange as exchange

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe

session = Session()

assets = session.query(Asset).join(Instrument, Asset.instrument).filter(
    Instrument.instrument_type == "cryptocurrency").all()
print("All assets in db: ", assets)

print("\n")

tradable = exchange.are_tradable(assets=assets, exchange_name="poloniex")
print("All tradable assets on Poloniex: ", tradable)

print("\n")

all_assets = exchange.get_assets(session=session, exchange_name="bittrex")
print("All assets on Bittrex: ", all_assets)

session.close()
示例#3
0
import datetime as dt

import alchemist_lib.datafeed as dfeed

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker



session = Session()
assets = session.query(Asset).all()

print("All assets: ", assets)

print("\n")

last_prices = dfeed.get_last_price(assets = assets)
print("Last prices: ", last_prices)

print("\n")

dfeed.save_ohlcv(session = session, assets = assets, start_date = dt.datetime(2018,2,1), timeframe = "1D")
print("OHLCV from 2018-02-01 saved!")

print("\n")
示例#4
0
import datetime as dt

from alchemist_lib.datafeed.poloniexdatafeed import PoloniexDataFeed

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker

session = Session()
polo = PoloniexDataFeed(session=session)

assets = session.query(Asset).join(
    Exchange,
    Asset.exchanges).filter(Exchange.exchange_name == "poloniex").all()

tradable_assets = polo.get_assets()
print("Tradable assets: ", tradable_assets)

print("\n")

#Will raise AssertError:
candles = polo.get_ohlcv(assets=assets,
                         start_date=dt.datetime(2018, 2, 10),
                         end_date=dt.datetime(2018, 2, 12),
                         timeframe="3H")

candles = polo.get_ohlcv(assets=assets,
示例#5
0
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe
from alchemist_lib.database.ptf_allocation import PtfAllocation

from alchemist_lib.portfolio import LongsOnlyPortfolio

import alchemist_lib.datafeed as dfeed



session = Session()

ptf = LongsOnlyPortfolio(capital = 0.05)

ts_name = "AccumulationZone"

BTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "BTC").one()
ETH = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "ETH").one()
LTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "LTC").one()
XZC = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "XZC").one()

bittrex = BittrexBroker(api_key = "APIKEY",
                         secret_key = "SECRETKEY")
bittrex.set_session(session = session)

示例#6
0
from alchemist_lib.exchange import BittrexExchange

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe

session = Session()
bittrex = BittrexExchange()

assets = session.query(Asset).join(
    Exchange,
    Asset.exchanges).filter(Exchange.exchange_name == "bittrex").all()
print("All assets in db: ", assets)

print("\n")

for asset in assets:
    min_trade_size = bittrex.get_min_trade_size(asset)
    print("The min order size for ", asset.ticker, " is ", min_trade_size)

print("\n")

tradable = bittrex.are_tradable(assets=assets)
print("All tradable assets: ", tradable)
示例#7
0
from sqlalchemy import or_

from alchemist_lib.factor import Factor

import alchemist_lib.utils as utils

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker

session = Session()

fct = Factor(session=session)

assets = session.query(Asset).filter(
    or_(Asset.ticker == "BCH", Asset.ticker == "ETH",
        Asset.ticker == "XZC")).all()

print("All assets: ", utils.print_list(assets))
print("\n")

hist = fct.history(assets, "*", "1D", 30)
print("History: ", hist)
print("\n")

reg = fct.LinearRegression(hist, 5, field="close")
from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe
from alchemist_lib.database.ptf_allocation import PtfAllocation

from alchemist_lib.portfolio import LongsOnlyPortfolio

import alchemist_lib.datafeed as dfeed

session = Session()

ptf = LongsOnlyPortfolio(capital=0.05)

ts_name = "AccumulationZone"

BTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "BTC").one()
ETH = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "ETH").one()
LTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "LTC").one()
BCH = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "BCH").one()

poloniex = PoloniexBroker(api_key="APIKEY", secret_key="SECRETKEY")
示例#9
0
from alchemist_lib.portfolio.longsonly import LongsOnlyPortfolio

import alchemist_lib.datafeed as dfeed


def set_weights(df):
    alphas_sum = df["alpha"].sum()

    df["weight"] = np.nan
    for asset, alpha in zip(df.index.values, df["alpha"]):
        df.loc[asset, "weight"] = alpha / alphas_sum

    return df


session = Session()

assets = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex",
    Asset.ticker.in_(["ETH", "BCH", "LTC"])).all()
print("Assets: ", utils.print_list(assets), "\n")

df = pd.DataFrame(data={
    "asset": assets
}, columns=["asset", "alpha"]).set_index("asset")
for asset in df.index.values:
    df.loc[asset, "alpha"] = Decimal(random.uniform(0.5, 5.0))
df.sort_values(by=["alpha"], inplace=True)

print("Random alphas: ", df)