0%

Crypto-SuperTrend指标_合约交易脚本

Pre:

上一篇是去购买现货,回测几次后,发现效果还不错,由于定量设置了止盈率,挂好了limit sell order后,在短期拉盘的时候,能卖得出去。

想起之前看的The Best Crypto Trading Bots On the Market | TokenTax

crypto trading bots enable trading based on data and trends—not on emotional impulse

Ultimately, this usually grows their profits, minimizes their risks, and limits their losses across exchanges.

Furthermore, bots can produce passive income 24 hours a day. Whether you’re sleeping, biking, giving a presentation, whatever: you could also be earning from automated trades.

通过策略写机器人来做交易,算是有严格的纪律性了,由数据驱动,不受情绪的影响。另外一个好处就是,不用去盯盘。

这次拿来做合约交易


策略:

  • 选择一个我认为比较好的投资标的(币):BNB

  • 选择一个交易周期:45mins

  • Buy信号发出,很可能处于上涨行情,执行市价买入,5倍杠杠

  • 设置收益率5%,执行限价卖出

  • 以上每一步都设置tg提醒,入库记录

  • 暂不设置止损,5倍杠杠,币种暴跌20%可能会爆仓

效果:

C83CAF70-1EA0-4882-AF5E-2697664AB1B7


遇到的问题:

创建订单:

之前用的交易所是binance,这次用的是ftx通过ccxt在创建ftx limit sell order的时候花费比较多时间,参考Unable To create Limit orders on FTX,才知道需要哪些参数.

1
cex_api.create_future_order(token_pair='CAKE-PERP', type="takeProfit", side="sell", amount=1, price=20.32, params={'triggerPrice': 20.32,'reduceOnly': True})

返回的订单内容:

同样是执行market buy orderbinanceftx返回的内容不一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# binance
order = {
'info': {
'symbol': 'CAKEUSDT',
'orderId': '253501445',
'orderListId': '-1',
'clientOrderId': 'x-R4BD3S8213738c964e85cb662119c9',
'transactTime': '1630229168854',
'price': '0.00000000',
'origQty': '0.50000000',
'executedQty': '0.50000000',
'cummulativeQuoteQty': '12.77000000',
'status': 'FILLED',
'timeInForce': 'GTC',
'type': 'MARKET',
'side': 'BUY',
'fills': [{
'price': '25.54000000',
'qty': '0.50000000',
'commission': '0.00050000',
'commissionAsset': 'CAKE',
'tradeId': '37608361'
}]
},
'id': '253501445',
'clientOrderId': 'x-R4BD3S8213738c964e85cb662119c9',
'timestamp': 1630229168854,
'datetime': '2021-08-29T09:26:08.854Z',
'lastTradeTimestamp': None,
'symbol': 'CAKE/USDT',
'type': 'market',
'timeInForce': 'GTC',
'postOnly': False,
'side': 'buy',
'price': 25.54,
'stopPrice': None,
'amount': 0.5,
'cost': 12.77,
'average': 25.54,
'filled': 0.5,
'remaining': 0.0,
'status': 'closed',
'fee': {
'cost': 0.0005,
'currency': 'CAKE'
},
'trades': [{
'info': {
'price': '25.54000000',
'qty': '0.50000000',
'commission': '0.00050000',
'commissionAsset': 'CAKE',
'tradeId': '37608361'
},
'timestamp': None,
'datetime': None,
'symbol': 'CAKE/USDT',
'id': None,
'order': None,
'type': None,
'side': None,
'takerOrMaker': None,
'price': 25.54,
'amount': 0.5,
'cost': 12.77,
'fee': {
'cost': 0.0005,
'currency': 'CAKE'
}
}],
'fees': [{
'cost': 0.0005,
'currency': 'CAKE'
}]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# ftx
{
'info': {
'id': '87609981695',
'clientId': None,
'market': 'BNB-PERP',
'type': 'market',
'side': 'buy',
'price': None,
'size': '0.1',
'status': 'new',
'filledSize': '0.0',
'remainingSize': '0.1',
'reduceOnly': False,
'liquidation': None,
'avgFillPrice': None,
'postOnly': False,
'ioc': True,
'createdAt': '2021-10-14T04:03:51.958018+00:00',
'future': 'BNB-PERP'
},
'id': '87609981695',
'clientOrderId': None,
'timestamp': 1634184231958,
'datetime': '2021-10-14T04:03:51.958Z',
'lastTradeTimestamp': None,
'symbol': 'BNB-PERP',
'type': 'market',
'timeInForce': None,
'postOnly': False,
'side': 'buy',
'price': None,
'stopPrice': None,
'amount': 0.1,
'cost': None,
'average': None,
'filled': 0.0,
'remaining': 0.1,
'status': 'open',
'fee': None,
'trades': None
}

https://ccxt.readthedocs.io/en/latest/manual.html#orders

20211014134717

看文档可知,尽量不要用info key里面的内容,这里面是交易所返回的原始内容,ccxt会解析然后放在其他一级的key,会更具通用性.


Nginx配置:

查看配置文件路径:

使用nginx-t参数进行配置检查,即可知道实际调用的配置文件路径及是否调用有效。

1
2
3
[root@foolisheddy ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

查看/etc/nginx/nginx.conf ,可能包含了其他配置文件include /etc/nginx/conf.d/*.conf;

添加路由转发:

添加一段location,访问后转发到本地的flask api上。

1
2
3
4
5
6
location /tradingview/ {
proxy_pass http://127.0.0.1:10086/tradingview;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

nginx操作:

1
2
3
4
# 查看状态
systemctl status nginx
# 重启
systemctl restart nginx

Bug:

20211014135626

tradingview会在有bug信号的时候,多次触发我的api

可能的解决方案:

  • 修改tradingview对应策略

  • 发送信号设置

  • 我这边手动处理

暂时不处理,先记录一下


Summary:

做合约交易的话,我自己还不是很有经验,可能后面经验增加or回测多次后能再优化策略吧。
3倍5倍低倍杠杠我理解成 借钱抄底 哈哈

有一些点后期可能需要优化:

  • 保证金

  • 强平价

  • 如何止损

  • 仓位大小

  • 消息面


Refs: