Пример #1
0
                                   limit=int(bid[1]),
                                   minute_to_expire=1)
                    restrict_range[target] = bid[2]
                else:
                    strategy.cancel(bid[0])

            logger.info(
                f'{delay} {buy_vol_avg:.1f}({buy_vol_std:.1f})/{sell_vol_avg:.1f}({sell_vol_std:.1f})/'
            )
        else:
            strategy.cancel_order_all()
            strategy.close_position()


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('elephant.log'))
    logger = logging.getLogger("elephant")

    bot = elephant()
    strategy = Strategy(yourlogic=bot.loop, yoursetup=bot.setup, interval=5)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.disable_rich_ohlcv = True
    strategy.settings.max_ohlcv_size = 10 * 3
    strategy.risk.max_position_size = 0.1
    strategy.start()
Пример #2
0
        strategy.entry('doten L', side='buy', qty=qty_lot, stop=stop_price)
    else:
        strategy.cancel('doten L')


if __name__ == '__main__':
    import argparse
    from strategy import Strategy
    import settings
    import logging
    import logging.config

    strategy = Strategy(macd_cross_strategy)
    strategy.settings.timeframe = '1h'
    strategy.settings.interval = 60
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = False
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret

    parser = strategy.add_arguments(
        argparse.ArgumentParser(description='MACD Cross Bot'))
    args = parser.parse_args()

    logging.config.dictConfig(
        settings.loggingConf(params[args.symbol].logfilename))
    logger = logging.getLogger('MACDCrossBot')

    strategy.start(args)
Пример #3
0
# -*- coding: utf-8 -*-
import asyncio
from coinbots.strategy import Strategy
from coinbots.indicator import *


class Sample:
    async def run(self, executions, ohlcv, strategy, **others):
        C = ohlcv.close.values[-1]
        await strategy.order('L', 'buy', 0.01, C * 0.8)


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('sample.log'))
    logger = logging.getLogger("sample")

    strategy = Strategy(yourlogic=Sample().run, interval=10)
    strategy.settings.symbol = 'BTC/JPY'
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret

    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.wait([strategy.start()]))
Пример #4
0
                strategy.cancel('L' + str(no))
                strategy.cancel('S' + str(no))
            if strategy.position_size > 0:
                strategy.order('L close', 'sell', qty=strategy.position_size)
            elif strategy.position_size < 0:
                strategy.order('S close', 'buy', qty=-strategy.position_size)


if __name__ == "__main__":
    import settings
    import argparse
    import logging
    import logging.config
    import signal

    def handle_pdb(sig, frame):
        import pdb
        pdb.Pdb().set_trace(frame)

    signal.signal(signal.SIGUSR1, handle_pdb)

    logging.config.dictConfig(settings.loggingConf('mmbot.log'))
    logger = logging.getLogger("mmbot")

    strategy = Strategy(mmbot().loop, 5)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.show_last_n_orders = 10
    strategy.risk.max_position_size = 0.05
    strategy.start()
Пример #5
0
        stop_price = 0

    if stop_price > 0 and position.currentQty < 0 and not long_entry and not short_entry:
        strategy.entry('doten L', side='buy', qty=qty_lot, stop=stop_price)
    else:
        strategy.cancel('doten L')

if __name__ == '__main__':
    import argparse
    from strategy import Strategy
    import settings
    import logging
    import logging.config

    strategy = Strategy(macd_cross_strategy)
    strategy.settings.timeframe = '1h'
    strategy.settings.interval = 60
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = False
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret

    parser = strategy.add_arguments(argparse.ArgumentParser(description='MACD Cross Bot'))
    args = parser.parse_args()

    logging.config.dictConfig(settings.loggingConf(params[args.symbol].logfilename))
    logger = logging.getLogger('MACDCrossBot')

    strategy.start(args)
Пример #6
0
            if delta_pos <= -maxsize:
                sellsize = 0
            elif delta_pos > maxsize:
                sellsize = maxsize
            else:
                sellsize = (-maxsize / 4) * ((
                    (-delta_pos + maxsize) / maxsize)**2) + maxsize

            buy = ticker.best_bid
            sell = ticker.best_ask
            if buysize >= 0.01 and buychg > 500:
                strategy.order('L', 'buy', qty=buysize, limit=buy)
            if sellsize >= 0.01 and sellchg < -500:
                strategy.order('S', 'sell', qty=sellsize, limit=sell)


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('inago.log'))
    logger = logging.getLogger("inago")

    strategy = Strategy(inago().loop, 5)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.disable_rich_ohlcv = True
    strategy.risk.max_position_size = 0.1
    strategy.start()
Пример #7
0
            if volimb>10:
                strategy.entry('L tf', 'buy', qty=qty_lot)
            elif volimb<-10:
                strategy.entry('S tf', 'sell', qty=qty_lot)
        else:
            spr_target = 50
            if spr >= spr_target or strategy.position_size < 0:
                strategy.order('L', 'buy', qty=qty_lot, limit=bid+1, minute_to_expire=1)
            else:
                strategy.cancel('L')
            if spr >= spr_target or strategy.position_size > 0:
                strategy.order('S', 'sell', qty=qty_lot, limit=ask-1, minute_to_expire=1)
            else:
                strategy.cancel('S')

if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('spcatcher.log'))
    logger = logging.getLogger("spcatcher")

    strategy = Strategy(spcatcher().loop, 5)
    # strategy.settings.symbol = 'BTCJPY28DEC2018'
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.show_last_n_orders = 10
    strategy.risk.max_position_size = 0.05
    strategy.start()
Пример #8
0
                        strategy.order(sellid,
                                       'sell',
                                       qty=sellsize,
                                       limit=int(mid + width + ofs),
                                       seconds_to_keep_order=period,
                                       minute_to_expire=1)
                        sellmax -= sellsize
                    else:
                        strategy.cancel(sellid)
        else:
            strategy.cancel_order_all()
            strategy.close_position()


if __name__ == "__main__":
    import settings
    import argparse
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('simple_market_maker.log'))
    logger = logging.getLogger("simple_market_maker")

    strategy = Strategy(simple_market_maker().loop, 5)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.max_ohlcv_size = 12 * 10
    strategy.settings.disable_rich_ohlcv = True
    strategy.risk.max_position_size = 0.02
    strategy.start()
Пример #9
0
            strategy.cancel('L exit')
            strategy.entry('S', 'sell', qty=qty_lot)

        # 利確指値
        if position.currentQty>0 and ohlcv.close[-1]>position.avgCostPrice+5:
            strategy.order('L exit', 'sell', qty=position.currentQty, limit=ticker.ask)
        elif position.currentQty<0 and ohlcv.close[-1]<position.avgCostPrice-5:
            strategy.order('S exit', 'buy', qty=-position.currentQty, limit=ticker.bid)


if __name__ == "__main__":
    import argparse
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('ETHMACross'))
    logger = logging.getLogger('ETHMACrossBot')

    strategy = Strategy(eth_macross().loop)
    strategy.settings.timeframe = '5m'
    strategy.settings.interval = 30
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = False
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret

    parser = strategy.add_arguments(argparse.ArgumentParser(description='ETH MA Cross Bot'))
    strategy.start(parser.parse_args())
Пример #10
0
                            pnl = mid - price
                            if pnl <= loss or pnl >= profit:
                                strategy.order(f'C{price}', 'sell', qty=size)
                        else:
                            pnl = price - mid
                            if pnl <= loss or pnl >= profit:
                                strategy.order(f'C{price}', 'buy', qty=size)
            else:
                strategy.cancel_order_all()
                strategy.close_position()
        else:
            strategy.cancel_order_all()
            strategy.close_position()


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('fraction.log'))
    logger = logging.getLogger("fraction")

    strategy = Strategy(fraction().loop, 0.5)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.max_ohlcv_size = 30
    strategy.settings.disable_rich_ohlcv = True
    strategy.risk.max_position_size = 0.1
    strategy.start()
Пример #11
0
        vsar = int(vsar)
        strategy.entry('L', 'buy', qty=qty_lot, limit=vsar, stop=vsar)

    if vsar < last(ohlcv.low):
        # STOP指値ささらなかったから成り行きでロング
        if position.currentQty <= 0:
            strategy.entry('L', 'buy', qty=qty_lot, limit=ticker.bid)

        vsar = int(vsar)
        strategy.entry('S', 'sell', qty=qty_lot, limit=vsar, stop=vsar)


if __name__ == '__main__':
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('sar_strategy.log'))
    logger = logging.getLogger("SARBot")

    strategy = Strategy(sar_strategy)
    strategy.settings.timeframe = '1m'
    strategy.settings.interval = 10
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = True
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret
    strategy.start()
Пример #12
0
    sub_positions = []
    for sym,prm in params['contracts'].items():
        sub_logic(
            sym,
            prm.sub_symbol,
            prm.sub_quanty,
            prm.sub_multiplier,
            strategy)
        sub_positions.append(strategy.position_all[prm.sub_symbol])

    # sub_total_size = fsum(p.currentQty*p.avgCostPrice for p in sub_positions)
    # logger.info(f'{sub_total_size}')

if __name__ == '__main__':
    import argparse
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('delta_neutral_strategy.log'))
    logger = logging.getLogger('delta_neutral_strategy')

    strategy = Strategy(mylogic)
    strategy.settings.timeframe = '5m'
    strategy.settings.interval = 60
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.risk.max_position_size = 3000
    strategy.start()
Пример #13
0
                strategy.cancel('Lc')
            if short_size >= 0.01:
                strategy.order('Sc',
                               'buy',
                               qty=short_size,
                               limit=buy,
                               minute_to_expire=1)
            else:
                strategy.cancel('Lc')
        else:
            strategy.cancel_order_all()
            strategy.close_position()


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('scalping.log'))
    logger = logging.getLogger("scalping")

    strategy = Strategy(scalping().loop, 1)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.use_lazy_ohlcv = True
    strategy.settings.timeframe = 1
    strategy.settings.disable_rich_ohlcv = True
    strategy.risk.max_position_size = 0.05
    strategy.start()
Пример #14
0
                buy = mid - pof
                sell = mid + rng*3
            elif z<-0:
                buy = mid - rng*3
                sell = mid - pof
            else:
                buy = mid - rng*3
                sell = mid + rng*3
            strategy.order('L', 'buy', qty=max(0.02 * z, 0.01), limit=int(buy), limit_mask=rng*0.5, minute_to_expire=1)
            strategy.order('S', 'sell', qty=max(0.02 * -z, 0.01), limit=int(sell), limit_mask=rng*0.5, minute_to_expire=1)
        else:
            strategy.cancel_order_all()
            strategy.close_position()


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('hft.log'))
    logger = logging.getLogger("hft")

    strategy = Strategy(hft().loop, 0.5)
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.settings.disable_rich_ohlcv = True
    strategy.settings.max_ohlcv_size = 1000
    strategy.risk.max_position_size = 0.1
    strategy.start()
Пример #15
0
    # 注文(ポジションがある場合ドテン)
    strategy.entry('L',
                   'buy',
                   qty=qty_lot,
                   limit=max(long_entry_price, ticker.bid),
                   stop=long_entry_price + 0.5)
    strategy.entry('S',
                   'sell',
                   qty=qty_lot,
                   limit=min(short_entry_price, ticker.ask),
                   stop=short_entry_price - 0.5)


if __name__ == '__main__':
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('PvtHL.log'))
    logger = logging.getLogger('PvtHLBot')

    strategy = Strategy(pivot_highlow_strategy)
    strategy.settings.timeframe = '1m'
    strategy.settings.interval = 5
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = True
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret
    strategy.start()
Пример #16
0

if __name__ == '__main__':
    import argparse
    from strategy import Strategy
    import settings
    import logging
    import logging.config

    strategy = Strategy(channel_breakout_strategy)
    strategy.settings.timeframe = '5m'
    strategy.settings.interval = 10
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = True
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret

    parser = strategy.add_arguments(argparse.ArgumentParser(description='Channel Breakout Bot'))
    parser.add_argument('--parameter', nargs=3, type=int, default=[breakout_in, breakout_out])
    args = parser.parse_args()

    logging.config.dictConfig(
        settings.loggingConf('chbrk-bot-' + args.symbol.replace('/','_').lower() + '.log'))
    logger = logging.getLogger('ChbrkBot')

    breakout_in = args.parameter[0]
    breakout_out = args.parameter[1]

    strategy.start(args)
Пример #17
0
                           post_only=True)
        else:
            strategy.cancel('SC')
        if F_pct >= buy_exit_fr and long_size > 0:
            qty = long_size
            strategy.order('LC',
                           'sell',
                           qty=qty,
                           limit=ticker.ask,
                           post_only=True)
        else:
            strategy.cancel('LC')


if __name__ == '__main__':
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('xrpusd_fr_strategy.log'))
    logger = logging.getLogger('XRPUSD_FR')

    strategy = Strategy(mylogic)
    strategy.settings.symbol = 'XRP/USD'
    strategy.settings.timeframe = '5m'
    strategy.settings.interval = 60
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.risk.max_position_size = 1000
    strategy.start()
Пример #18
0
    strategy.risk.max_position_size = qty_lot

    # 注文(ポジションがある場合ドテン)
    if last(buyEntry):
        strategy.entry('L', 'buy', qty=qty_lot, limit=ticker.bid)
    else:
        strategy.cancel('L')
    if last(sellEntry):
        strategy.entry('S', 'sell', qty=qty_lot, limit=ticker.ask)
    else:
        strategy.cancel('S')


if __name__ == "__main__":
    import settings
    import logging
    import logging.config

    logging.config.dictConfig(settings.loggingConf('bband_strategy.log'))
    logger = logging.getLogger("bband_strategy")

    strategy = Strategy(bband_strategy)
    strategy.settings.timeframe = '15m'
    strategy.settings.interval = 30
    strategy.settings.apiKey = settings.apiKey
    strategy.settings.secret = settings.secret
    strategy.testnet.use = True
    strategy.testnet.apiKey = settings.testnet_apiKey
    strategy.testnet.secret = settings.testnet_secret
    strategy.start()