def get_trade_details(account_id, account_token, trade_id, debug=False): if debug: account_id, client = use_our_token() else: client = account_token try: r = trades.TradeDetails(account_id, tradeID=f'{trade_id}') client.request(r) # print(r.response) trade_details = r.response["trade"] print('\n') trade_detail = f"order ID {trade_details['id']!r} | Instrument : {trade_details['instrument']!r} | "\ f"Price : {trade_details['price']!r} | Unit : {trade_details['initialUnits']!r} | "\ f"Profit/Loss = {trade_details['unrealizedPL']}" # print(trade_detail) return trade_detail except V20Error as ex: error_msg = ex.msg.split('"errorMessage":')[1].split(',')[0] print(f"Error : {error_msg}") return False, error_msg except Exception as ex: template = "Exception type {0}. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print(f"Error : {message}") return False, message
def get_trade_profit(account_id, account_token, trade_id, debug=False): if debug: account_id, client = use_our_token() else: client = account_token try: r = trades.TradeDetails(account_id, tradeID=f'{trade_id}') client.request(r) # print(r.response) trade_profit = float(r.response["trade"]['unrealizedPL']) # print(f"\ntrade_profit = {trade_profit}") return trade_profit except V20Error as ex: error_msg = ex.msg.split('"errorMessage":')[1].split(',')[0] print(f"Error : {error_msg}") return False, error_msg except Exception as ex: template = "Exception type {0}. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print(f"Error : {message}") return False, message
def position(self, trade_id): req = trades.TradeDetails(self.account_id, trade_id) try: res = self.client.request(req) logger.info(f'Response in position()... {res}', res) return res except V20Error as e: logger.error(f'Error in position() ... {e}', e) return None
def test__trade_details(self, mock_get): """get the trade details for a trade.""" tid = "_v3_account_accountID_trades_details" resp, data = fetchTestData(responses, tid) r = trades.TradeDetails(accountID, tradeID=2315) mock_get.register_uri('GET', "{}/{}".format(api.api_url, r), text=json.dumps(resp)) result = api.request(r) self.assertTrue(result == resp)
def trade_details(self, trade_id) -> Trade: req = trades.TradeDetails(self.account_id, trade_id) try: resp = self.client.request(req) logger.info(f'action=trade_details resp={resp}') except V20Error as e: logger.error(f'action=trade_details error={e}') raise trade = Trade( trade_id=trade_id, side=constants.BUY if float(resp['trade']['currentUnits']) > 0 else constants.SELL, units=float(resp['trade']['currentUnits']), price=float(resp['trade']['price']) ) return trade
if chc == 'list': r = trades.TradesList(accountID) rv = api.request(r) print("RESP:\n{} ".format(json.dumps(rv, indent=2))) if chc == 'open': r = trades.OpenTrades(accountID) rv = api.request(r) print("RESP:\n{} ".format(json.dumps(rv, indent=2))) tradeIDs = [o["id"] for o in rv["trades"]] print("TRADE IDS: {}".format(tradeIDs)) if chc == 'details': for O in sys.argv[2:]: r = trades.TradeDetails(accountID, tradeID=O) rv = api.request(r) print("RESP:\n{} ".format(json.dumps(rv, indent=2))) if chc == 'close': X = iter(sys.argv[2:]) for O in X: cfg = {"units": X.next()} r = trades.TradeClose(accountID, tradeID=O, data=cfg) rv = api.request(r) print("RESP:\n{} ".format(json.dumps(rv, indent=2))) if chc == 'cltext': for O in sys.argv[2:]: # tradeIDs cfg = { "clientExtensions": {
def get_trade_details(self, tradeID): r = trades.TradeDetails(accountID=self.accountID, tradeID=tradeID) return self.client.request(r)
def check_order_state(order_ID): r = trades.TradeDetails(accountID=acccount_id, tradeID=order_ID) return api.request(r)['trade']['state']
def trade_details(accountID, token, tradeID): client = oandapyV20.API(access_token=token) r = trades.TradeDetails(accountID=accountID, tradeID=tradeID) request = client.request(r) return request
def initPosLog(self, broker, accountID): if broker == 'backtest': pass if broker == "oanda": client = oandapyV20.API( access_token=cfg.brokerList['oanda']['token']) r = trades.OpenTrades( accountID=cfg.brokerList['oanda']['accounts'][accountID]['ID']) client.request(r) reply = dict(r.response) tList = reply["trades"] tList.reverse() for T in tList: ro = trades.TradeDetails(accountID=cfg.brokerList['oanda'] ['accounts'][accountID]['ID'], tradeID=T["id"]) client.request(ro) reply = dict(ro.response) oT = reply["trade"] if not oT["instrument"] in cfg.pairList: cfg.pairList.append(oT["instrument"]) cfg.pairList.sort() if float(oT["initialUnits"]) >= 0: typePos = 'l' else: typePos = 's' pList = [ cfg.posList.index(p) for p in cfg.posList if p.broker == 'oanda' and p.account == accountID and p.posID == oT["id"] ] if pList == []: cfg.posList.append( Position('oanda', accountID, oT["id"], oT["instrument"], float(oT["price"]), abs(float(oT["initialUnits"])), typePos, pd.Timestamp(oT["openTime"]))) pInd = -1 else: pInd = pList[0] cfg.posList[pInd].status = 'o' if "closingTransactionIDs" in oT.keys(): for cT in oT["closingTransactionIDs"]: rc = trans.TransactionDetails( accountID=cfg.brokerList['oanda']['accounts'] [accountID]['ID'], transactionID=cT) client.request(rc) replyt = dict(rc.response) if "tradeReduced" in replyt["transaction"].keys(): oRe = replyt["transaction"]["tradeReduced"] v = cfg.posList[pInd].log.iloc[-1, ].vol - abs( float(oRe["units"])) p = replyt["transaction"]["price"] cp = float(oRe["realizedPL"]) comm = float(replyt["transaction"]["commission"]) t = pd.Timestamp(replyt["transaction"]["time"]) cfg.posList[pInd].log.loc[t] = { 'vol': v, 'price': p, 'closedprof': cp, 'commission': comm }
import json import requests import oandapyV20 import oandapyV20.endpoints.trades as trades # import oandapyV20.endpoints.orders as orders from config import ACCESS_TOKEN, ACCOUNT_ID import time trade_id = '4704' client = oandapyV20.API(access_token=ACCESS_TOKEN) r = trades.TradeDetails(accountID=ACCOUNT_ID, tradeID=trade_id) client.request(r) print(r.response) # x = 0 # while x != 1: # client = oandapyV20.API(access_token=ACCESS_TOKEN) # r = orders.OrdersPending(ACCOUNT_ID) # client.request(r) # print(r.response) # time.sleep(1)
def history(self, tradeid): r = trades.TradeDetails(ACCOUNT_ID, tradeid) rv = api.request(r) return rv