Maison > Questions et réponses > le corps du texte
J'ai résolu le problème de commande avec l'aide de tous dans la troisième question, mais lorsque j'ai testé les données historiques aujourd'hui, j'ai découvert une chose étrange. Je souhaite opérer sur 6 paires de devises (GBP_USD, EUR_USD, USD_CAD et USD_CHF, USD_JPY, AUD_USD). Je veux que GBP_USD, EUR_USD, USD_CAD achètent lors du passage d'un ordre d'achat et USD_CHF, USD_JPY et AUD_USD vendent lors d'un achat. Commencez quelques transactions. Il n'y a pas de problème, mais après avoir essayé de vendre une fois en passant un ordre d'achat, GBP_USD, EUR_USD, USD_CAD sont également passés à la vente lors du passage d'un ordre d'achat. La procédure est la suivante :
import requests
def 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")
Veuillez vérifier l'état de la transaction sur https://trade.oanda.com/, nom d'utilisateur : cawa11, mot de passe : 1122334455, merci
ringa_lee2017-06-12 09:29:26
Il y a un problème avec votre code
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"]
Votre code peut être simplifié ainsi. Les ordres d'achat et de vente sont déterminés selon que l'unité est positive ou négative :
# coding: utf-8
import requests
def 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) #卖