python3.x - Question 6 sur l'obtention de JSON à partir de l'API de trading simulé de Python avec Oanda
PHP中文网
PHP中文网 2017-06-12 09:27:26
0
1
953

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中文网

认证0级讲师

répondre à tous(1)
左手右手慢动作

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)    #卖
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal