FTX 量化空间


FTX 交易所是一家排名前 5 的、非常适合做对冲交易的交易所. 并且它有一个非常棒的功能: 量化空间. 即使你没有服务器,没有交易系统,不会编程,也可以用它来创建你的自动交易机器人.

进入 FTX 网页版后按下面操作即可创建量化策略

创建策略

使用 Benson Sun推荐码 注册 FTX 账号,可以获得 5% 的手续费折扣

策略设置

启用的策略会每 15 秒钟判断一次触发逻辑, 当触发逻辑成立时(结果为 true), 则会执行该策略后续的执行逻辑部分, 否则不会执行

策略名称

就是起个名, 方便查找方便一看就知道干啥用的

触发逻辑

就是执行这个策略的条件,满足条件就会执行这个策略后面的内容

这里面填入结果为真(true)假(false)表达式, 后面有各种可用的表达式,你可以随意组合,只要表达式结果是 truefalse 即可

真(true): 表示条件成立, 则继续执行后面的执行逻辑
假(false): 表示条件不成立, 不再执行后续逻辑

执行逻辑

一个策略可以添加多个执行逻辑

执行逻辑分为多种类型: 开仓, 平仓, 下自定义订单, 取消自定义订单, 暂停策略, 重启策略, 设定变量

这里主要说自定义订单设定变量

自定义订单

委托类型,交易方向,市场就不说了,手动交易过的人都知道…

我要说的是订单数量和限价(限价委托的话)也是可以填表达式的, 只要表达式返回结果是相应数字就行

订单数量: 购买/出售货币的数量

限价: 交易价格

设定变量

变量值也可以填表达式, 结果是啥都行,只要引用变量的时候注意就好啦!

变量可以跨策略使用!!!

使用 Benson Sun推荐码 注册 FTX 账号,可以获得 5% 的手续费折扣

可用表达式

市场数据

函数 作用
price("ETH/USDT") 当前价格
price("ETH/USDT", n) n 分钟前的价格
average_price("ETH/USDT", n) 过去 n 分钟的均价
ewma_price("ETH-PERP", n) 半衰期为前 n 分钟价格的 EWMA
bid_price("ETH-PERP") 最佳买盘价格
offer_price("ETH-PERP") 最佳卖盘价格
last_trade_price("ETH-PERP") 最后交易价格
index_price("ETH-PERP") 指数价格
index_price("ETH-PERP", n) n 分钟前的指数价格
average_index_price("ETH-PERP") 过去 n 分钟,指数的平均价格
ewma_index_price("ETH-PERP", n) 半衰期为前 n 分钟指数价格的 EWMA
premium("ETH-PERP") 合约溢价(标记价格/指数价格)
volume("ETH/USDT") 过去 24 小时的交易量(以报价货币作为计量单位)
volume("ETH/USDT", n) 过去 n 分钟的交易量(以报价货币作为计量单位)
base_volume("ETH/USDT") 过去 24 小时的交易量(以基础货币作为计量单位)
base_volume("ETH/USDT", n) 过去 n 分钟的交易量(以基础货币作为计量单位)
max_price("ETH/USDT") 过去 10 分钟的最高价格
max_price("ETH/USDT", n) 过去 n 分钟的最高价格
min_price("ETH/USDT") 过去 10 分钟的最低价格
min_price("ETH/USDT", n) 过去 n 分钟的最低价格
todays_move_price() Market price of the daily MOVE contract expiring today.
todays_move() Name of the daily MOVE contract expiring today.
tomorrows_move_price() Market price of the daily MOVE contract expiring tomorrow.
tomorrows_move() Name of the daily MOVE contract expiring tomorrow.
this_weeks_move_price() Market price of the weekly MOVE contract expiring this week.
this_weeks_move() Name of the weekly MOVE contract expiring this week.
next_weeks_move_price() Market price of the weekly MOVE contract expiring next week.
next_weeks_move() Name of the weekly MOVE contract expiring next week.
this_quarters_move_price() Market price of the quarterly MOVE contract expiring this quarter.
this_quarters_move() Name of the quarterly MOVE contract expiring this quarter.
next_quarters_move_price() Market price of the quarterly MOVE contract expiring next quarter.
next_quarters_move() Name of the quarterly MOVE contract expiring next quarter.

EWMA: 哪个大佬知道啥意思,或者计算公式是什么呀?

指数价格: 选择三家以上的主流交易所相应币对, 做为权重成分计算而得. 你可以理解该价格为对应币种在多个大型交易所里的平均市场价格, 它是合约交易所要锚定的价格. 比如: 币本位保证金合约锚定标的货币的美元指数; USDT 保证金合约锚定标的货币的 USDT 指数.

标记价格: 是根据指数价格和基差的移动平均值加和计算而来,它主要用于账户盈亏和清结算的计算.

账户数据

函数 作用
collateral 账户保证金总额(USD)
free_collateral 可用的账户保证金(USD)
total_position_size 所有合约的总账户仓位规模(USD)
margin_fraction 账户保证金比例(账户总持仓量/保证金)
open_margin_fraction 账户保证金比例包括当前委托但未交易((账户总持仓量+挂单量)/保证金)
leverage 账户杠杆的约值(账户保证金/总仓位)
initial_mfr 账户初始保证金比例要求
maintenance_mfr 账户维持保证金比例要求
liquidation_distance 大约被清算的距离

仓位数据

函数 作用
position("ETH-PERP") 当前 ETH 合约 ETH 的数量. 正直或零
position("ETH-PERP", "buy") 当前做多合约余额, 仓位为负则此值为 0
position("ETH-PERP", "sell") 当前做空合约余额, 仓位为正则此值为 0
position_side("ETH-PERP") 仓位为正则为 1; 仓位为负责为 -1; 否则为 0
position_net("ETH-PERP") 净仓位. 持多长为正, 持空仓为负
position_leverage("ETH-PERP") 仓位杠杆的约值
position_notional("ETH-PERP") 仓位价值(USD)
position_break_even_price("ETH-PERP") 盈亏平衡的价格(保本价格)
position_avg_open_price("ETH-PERP") 平均开仓价格
position_recent_pnl("ETH-PERP") Recent pnl(pnl since last flat) of position in USD.

pnl:

钱包数据

函数 作用
balance("ETH") 当前现货 ETH 总余额
balance_free("ETH") 当前现货 ETH 可用余额

数学公式

函数 作用
abs(x) 计算 x 的绝对值
max(x, y) xy 的更大值
min(x, y) xy 的更小值
sqrt(x) 计算 x 的平方根
floor(x) 计算小于等于 x 的最大整数
ceil(x) 计算大于等于等于 x 的最小整数
sign(x) 如果 x 为正则结果为 1; 如果 x 为负则结果为 -1; 如果 x 为零则结果为 0.

逻辑运算

运算符 作用
x and y xy 均为 true 则为 true, 否则为 false
x or y xy 均为 false 则为 false, 否则为 true
not x x 为 false 则为 true, 否则为 true
x if y else z 如果 y 为 true 则值为 x, 否则值为 z

算数运算

运算符 作用 运算符 作用
+ 加法 - 减法
* 乘法 / 除法
% 求余 // 除法, 下舍
x ** y xy 次方

其他

函数 作用
get_variable(name) 使用设置变量(set variable)定义的值, 变量不存在则为 0
可以跨策略使用!!!
perpetual("ETH") 获取永续合约市场的名称
quarterly("ETH") 获取季度合约市场的名称
time 当前 Unix 时间(自 1970 年 1 月 1 日以来的秒数)
minute 当前时间的分钟部分. 从小时开始算起的整分钟数
hour 当前时间的小时部分. 从 UTC 午夜以来的总小时数
day_of_week() UTC day of the week as an integer, where Monday is 0 and Sunday is 6.

一些示例

  • 当前价格小于 30 天均价: price("ETH/USDT") < average_price("ETH/USDT", 60 * 24 * 30)
  • 当前现货持仓价值: balance("FTT") * price("FTT/USDT")
  • 当前合约持仓价值: price("FTT-PERP") * position("FTT-PERP", "sell")
  • 当前现货价值小于 总余额 / 2 * 95%: balance("FTT") * price("FTT/USDT") < (balance("USDT") + price("FTT-PERP") * position("FTT-PERP", "sell") + balance("FTT") * price("FTT/USDT")) / 2 * 0.95

策略分享

欢迎留言提供你的思路~


文章作者: CrazyBunQnQ
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 CrazyBunQnQ !