recherche

Maison  >  Questions et réponses  >  le corps du texte

python3.x - Question 6 sur l'obtention de JSON à partir de l'API de trading simulé de Python avec Oanda

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

PHP中文网PHP中文网2757 Il y a quelques jours964

répondre à tous(1)je répondrai

  • ringa_lee

    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)    #卖

    répondre
    0
  • Annulerrépondre