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()
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)
# -*- 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()]))
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()
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)
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()
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()
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()
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())
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()
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()
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()
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()
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()
# 注文(ポジションがある場合ドテン) 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()
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)
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()
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()