python3.x - python连oanda的模拟交易api获取json问题第六问
问题描述
我在第3问中通过大家的帮助解决了下单的问题,但是在今天进行对历史数据测试时,发现了一个奇怪的事情。我要对6种货币对进行操作(GBP_USD、EUR_USD、USD_CAD和USD_CHF、USD_JPY、AUD_USD),想让GBP_USD、EUR_USD、USD_CAD在下买单时买,让USD_CHF、USD_JPY、AUD_USD在下买单时卖,开始几次交易没有问题,但在尝试过一次在下买单时卖后,GBP_USD、EUR_USD、USD_CAD也变成了在下买单时卖,程序如下:
import requestsdef trade(action,pairs,unit='1'): account_id = ’101-011-5898545-001’ access_token = ’33c7d4049fe8720c37918482bc830c12-06467701c963e60220d7e18436f3225d’ url = ’https://api-fxpractice.oanda.com/v3/accounts/’+account_id+’/orders’ headers = {’Content-Type’ : ’application/json’,’Authorization’:’Bearer ’+access_token}if pairs == 'GBP_USD' or 'EUR_USD' or 'AUD_USD' :if action == 'buy' : data = {'order':{'instrument':pairs,'type':'MARKET','units':unit}}if action == 'sell' : data = {'order':{'instrument':pairs,'type':'MARKET','units':'-'+unit}}if pairs == 'USD_CHF' or 'USD_JPY' or 'USD_CAD' :if action == 'buy' : data = {'order':{'instrument':pairs,'type':'MARKET','units':'-'+unit}}if action == 'sell' : data = {'order':{'instrument':pairs,'type':'MARKET','units':unit}}req = requests.post(url,json=data,headers=headers) #print(req.text)if __name__==’__main__’ : trade('buy','GBP_USD','3')
交易情况请在https://trade.oanda.com/查看,用户名:cawa11,密码:1122334455,谢谢
问题解答
回答1:你的代码写的有问题
if pairs == 'GBP_USD' or 'EUR_USD' or 'AUD_USD'应该改成if pairs == 'GBP_USD' or pairs == 'EUR_USD' or pairs == 'AUD_USD'但我更推荐你这样写if pairs in ['GBP_USD', 'EUR_USD', 'AUD_USD']
你的代码完全可以精简成这样,买单、卖单用unit为正还是为负来判定:
# coding: utf-8import requestsdef trade(pairs, unit=1): account_id = ’101-011-5898545-001’ access_token = ’33c7d4049fe8720c37918482bc830c12-06467701c963e60220d7e18436f3225d’ url = ’https://api-fxpractice.oanda.com/v3/accounts/’+account_id+’/orders’ headers = {’Content-Type’ : ’application/json’,’Authorization’:’Bearer ’+access_token}#你逻辑里只提到当货币为['USD_CHF', 'USD_JPY', 'USD_CAD']时,只要是买单就要变成卖单 if pairs in ['USD_CHF', 'USD_JPY', 'USD_CAD'] and unit > 0:unit *= -1 data = {'order':{'instrument':pairs,'type':'MARKET','units':unit}} req = requests.post(url,json=data,headers=headers) #print(req.text)if __name__==’__main__’ : trade('GBP_USD', 1) #买 trade('GBP_USD', -1) #卖
相关文章:
1. docker api 开发的端口怎么获取?2. node.js - 我是一个做前端的,求教如何学习vue,node等js引擎?3. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?4. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~5. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?6. java - 为什么第一个线程已经释放了锁,第二个线程却不行?7. 如何解决docker宿主机无法访问容器中的服务?8. PHP中的$this代表当前的类还是方法?9. sublime-text - sublime text 3中编译python(sublimeREPL),如何仅运行单行/选定部分10. 老师,flex-shrink: 1; 按视频操作,不会自动缩放

网公网安备