python3.x – Frage 6 zum Abrufen von JSON aus der simulierten Handels-API von Python mit Oanda
PHP中文网
PHP中文网 2017-06-12 09:27:26
0
1
954

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

认证0级讲师

Antworte allen(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-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)    #卖
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage