예제 #1
0
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
예제 #2
0
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
예제 #3
0
 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
예제 #4
0
 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)
예제 #5
0
 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
예제 #6
0
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": {
예제 #7
0
    def get_trade_details(self, tradeID):
        r = trades.TradeDetails(accountID=self.accountID, tradeID=tradeID)

        return self.client.request(r)
예제 #8
0
def check_order_state(order_ID):
    r = trades.TradeDetails(accountID=acccount_id, tradeID=order_ID)
    return api.request(r)['trade']['state']
예제 #9
0
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
예제 #10
0
파일: trade.py 프로젝트: fonsecamig/mfmktb
 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
                         }
예제 #11
0
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)
예제 #12
0
    def history(self, tradeid):
        r = trades.TradeDetails(ACCOUNT_ID, tradeid)
        rv = api.request(r)

        return rv