suchen

Heim  >  Fragen und Antworten  >  Hauptteil

python3.x – Frage 6 zum Abrufen von JSON aus der simulierten Handels-API von Python mit Oanda

Ich habe das Problem, eine Bestellung aufzugeben, mit der Hilfe aller in der dritten Frage gelöst, aber als ich heute die historischen Daten getestet habe, habe ich etwas Seltsames entdeckt. Ich möchte mit 6 Währungspaaren arbeiten (GBP_USD, EUR_USD, USD_CAD und USD_CHF, USD_JPY, AUD_USD). Ich möchte, dass GBP_USD, EUR_USD, USD_CAD bei einer Kauforder gekauft werden, und USD_CHF, USD_JPY und AUD_USD bei einer Kauforder verkauft werden Ein paar Transaktionen starten Es ist kein Problem, aber nachdem ich einmal versucht habe, zu verkaufen, wenn ich eine Kauforder aufgegeben habe, wechselten GBP_USD, EUR_USD, USD_CAD auch zum Verkaufen, wenn ich eine Kauforder aufgab. Die Vorgehensweise ist wie folgt:

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")

Bitte überprüfen Sie den Transaktionsstatus unter https://trade.oanda.com/, Benutzername: cawa11, Passwort: 1122334455, vielen Dank

PHP中文网PHP中文网2801 Tage vor988

Antworte allen(1)Ich werde antworten

  • ringa_lee

    ringa_lee2017-06-12 09:29:26

    你的代码写的有问题

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

    Antwort
    0
  • StornierenAntwort