bitfinex实盘中遇到的几个问题

1.key error:[‘signal’]
这个错误是很早之前答疑里面就有了的,但我一直没有用布林线策略所以一直就没有出现,报错的原因是:传入的 df 中,有可能不存在买卖的操作信号,这个时候 df[‘signal’] 这一列也就根本不存在。规避方法如下:

import numpy as np
if 'signal' not in df:
	df['signal'] = np.nan

2.private_post_auth_r_positions
这个函数是获取 bitfinex 中 margin 账户的持仓信息,由于 bitfinex 的 API 文档分为 V1 和 V2 两个版本,再加上最初的范例代码都是 V1 的,而据据说 V2 的一些功能没有实现,总而总之,大家不知道怎么用这个函数。如下:

import ccxt
exchange = ccxt.bitfinex2()
margin_info = exchange.private_post_auth_r_positions()

3.symbol
这个相似的问题在之前就写过,就在该链接。
这次的问题还是一样,新换了交易所并不知道具体 symbol 是哪一个,但也就那三四种,试下就 OK 了。

4.leverage
杠杆这个问题,之前在用范例代码测试资金曲线时直接就有一个叫做 leverage 的参数供我们调用,现在到下单的时候了,发现没有这个参数,于是就在 amount 那里直接乘以相应的杠杆率就可以, bitfinex 虽然是三倍杠杆,但最大允许是 3.33 .

# 计算买入数量
buy_amount = base_coin_amount / price * 3  # 不进行满仓操作,否则容易交易余额小于所需余额
# 计算卖出数量
sell_amount = trade_coin_amount / price * 3  # 不进行满仓操作,否则容易交易余额小于所需余额

5.list index out of range
这个问题在于我们之前弄的 margin_info 函数,如果不持仓的时候它返回的是这么一个值 ‘[]’ ,同时因为即便持仓的时候会返回一个数列,所以在采用的时候会遇到好多问题。

if margin_info.amount != [] and signal = 1
# 报错:AttributeError: 'list' object has no attribute 'amount'
# 所以我们用另一种方式表示
if margin_info[2] != [] and signal = 1
# 报错:list index out of range

暂时这个下单代码是不合格的,我准备明天写一段套叠的代码来实现这个功能。
另外,这个也告诉我们在一个 list 为空的时候取其中的值会出现 list index out of range 的错误,所以之前要判定其是否存在该值。

你可能感兴趣的:(量化交易)