def __init__(self, instrument_id, time_frame, fast_length, slow_length, long_stop, short_stop, start_asset): try: print("{} {} 双均线多空策略已启动!".format(get_localtime(), instrument_id)) # 程序启动时打印提示信息 config.loads('config.json') # 载入配置文件 self.instrument_id = instrument_id # 合约ID self.time_frame = time_frame # k线周期 self.exchange = OKEXFUTURES(config.access_key, config.secret_key, config.passphrase, self.instrument_id) # 初始化交易所 self.position = POSITION(self.exchange, self.instrument_id, self.time_frame) # 初始化potion self.market = MARKET(self.exchange, self.instrument_id, self.time_frame) # 初始化market self.indicators = INDICATORS(self.exchange, self.instrument_id, self.time_frame) # 初始化indicators # 在第一次运行程序时,将初始资金数据保存至数据库中 self.database = "回测" # 回测时必须为"回测" self.datasheet = self.instrument_id.split("-")[0].lower() + "_" + time_frame if config.first_run == "true": storage.mysql_save_strategy_run_info(self.database, self.datasheet, get_localtime(), "none", 0, 0, 0, 0, "none", 0, 0, 0, start_asset) # 读取数据库中保存的总资金数据 self.total_asset = storage.read_mysql_datas(0, self.database, self.datasheet, "总资金", ">")[-1][-1] self.total_profit = storage.read_mysql_datas(0, self.database, self.datasheet, "总资金", ">")[-1][-2] # 策略总盈亏 self.counter = 0 # 计数器 self.fast_length = fast_length # 短周期均线长度 self.slow_length = slow_length # 长周期均线长度 self.long_stop = long_stop # 多单止损幅度 self.short_stop = short_stop # 空单止损幅度 self.contract_value = self.market.contract_value() # 合约面值,每次获取需发起网络请求,故于此处声明变量,优化性能 except: logger.warning()
def __init__(self, instrument_id, time_frame, bollinger_lengths, filter_length, start_asset): try: # 策略启动时控制台输出提示信息 print("{} {} 布林强盗突破策略已启动!".format(get_localtime(), instrument_id)) # 程序启动时打印提示信息 config.loads("config.json") # 载入配置文件 # 初始化 self.instrument_id = instrument_id # 合约ID self.time_frame = time_frame # k线周期 self.exchange = OKEXFUTURES(config.access_key, config.secret_key, config.passphrase, self.instrument_id) # 交易所 self.market = MARKET(self.exchange, self.instrument_id, self.time_frame) # 行情 self.position = POSITION(self.exchange, self.instrument_id, self.time_frame) # 持仓 self.indicators = INDICATORS(self.exchange, self.instrument_id, self.time_frame) # 指标 # 在第一次运行程序时,将初始资金、总盈亏等数据保存至数据库中 self.database = "回测" # 数据库,回测时必须为"回测" self.datasheet = self.instrument_id.split( "-")[0].lower() + "_" + time_frame # 数据表 if config.first_run == "true": storage.mysql_save_strategy_run_info(self.database, self.datasheet, get_localtime(), "none", 0, 0, 0, 0, "none", 0, 0, 0, start_asset) # 读取数据库中保存的总资金数据 self.total_asset = storage.read_mysql_datas( 0, self.database, self.datasheet, "总资金", ">")[-1][-1] self.total_profit = storage.read_mysql_datas( 0, self.database, self.datasheet, "总资金", ">")[-1][-2] # 策略总盈亏 # 策略参数 self.contract_value = self.market.contract_value() # 合约面值 self.counter = 0 # 计数器 self.bollinger_lengths = bollinger_lengths # 布林通道参数 self.filter_length = filter_length # 过滤器参数 self.out_day = 50 # 自适应出场ma的初始值为50,开仓后赋值为布林通道参数的值 except: logger.warning()
def __init__(self, instrument_id, time_frame, fast_length, slow_length, long_stop, short_stop, start_asset, precision): try: print("{} {} 双均线多空策略已启动!".format(get_localtime(), instrument_id)) # 程序启动时打印提示信息 config.loads('config.json') # 载入配置文件 self.instrument_id = instrument_id # 合约ID self.time_frame = time_frame # k线周期 self.precision = precision # 精度,即币对的最小交易数量 self.exchange = OKEXSPOT(config.access_key, config.secret_key, config.passphrase, self.instrument_id) # 初始化交易所 self.position = POSITION(self.exchange, self.instrument_id, self.time_frame) # 初始化potion self.market = MARKET(self.exchange, self.instrument_id, self.time_frame) # 初始化market self.indicators = INDICATORS(self.exchange, self.instrument_id, self.time_frame) # 初始化indicators # 在第一次运行程序时,将初始资金数据保存至数据库中 self.database = "回测" # 回测时必须为"回测" self.datasheet = self.instrument_id.split( "-")[0].lower() + "_" + time_frame if config.first_run == "true": storage.mysql_save_strategy_run_info(self.database, self.datasheet, get_localtime(), "none", 0, 0, 0, 0, "none", 0, 0, 0, start_asset) # 读取数据库中保存的总资金数据 self.total_asset = storage.read_mysql_datas( 0, self.database, self.datasheet, "总资金", ">")[-1][-1] self.total_profit = storage.read_mysql_datas( 0, self.database, self.datasheet, "总资金", ">")[-1][-2] # 策略总盈亏 self.counter = 0 # 计数器 self.fast_length = fast_length # 短周期均线长度 self.slow_length = slow_length # 长周期均线长度 self.long_stop = long_stop # 多单止损幅度 self.short_stop = short_stop # 空单止损幅度 self.hold_price = 0 # 注意:okex的现货没有获取持仓均价的接口,故需实盘时需要手动记录入场价格。此种写法对于不同的交易所是通用的。 # 此种写法,若策略重启,持仓价格会回归0 except: logger.warning()