Exemple #1
0
    def main(self):
        self.resistance = max(self.data[(uniVar.count - 6):uniVar.count])
        self.support = max(self.data[(uniVar.count - 6):uniVar.count])

        #oanda parameters
        mktOrderLong = MarketOrderRequest(
            instrument=uniVar.pair,
            units=self.lots(),
            takeProfitOnFill=TakeProfitDetails(price=self.resistance).data,
            stopLossOnFill=StopLossDetails(price=self.support).data)

        mktOrderShort = MarketOrderRequest(
            instrument=uniVar.pair,
            units=(self.lots() * -1),
            takeProfitOnFill=TakeProfitDetails(price=self.support).data,
            stopLossOnFill=StopLossDetails(price=self.resistance).data)

        #Trading conditions
        if self.getTrades() == 0:
            print("Looking for trades.")
            if self.enterLong() == True:
                api = oandapyV20.API(access_token=uniVar.key)
                r = orders.OrderCreate(uniVar.accountID,
                                       data=mktOrderLong.data)
                api.request(r)
                self.status == 'Currently Trading'
                self.currentTrade == 'Long'
                print('Trade Executed')

            elif self.enterShort() == True:
                api = oandapyV20.API(access_token=uniVar.key)
                r = orders.OrderCreate(uniVar.accountID,
                                       data=mktOrderShort.data)
                api.request(r)
                self.status == 'Currently Trading'
                self.currentTrade == 'Long'
                print('Trade Executed')

            elif self.enterLong() and self.enterShort() == False:
                print('No open trades, currently looking for one')

        else:
            if self.currentTrade == 'Short':
                if self.enterLong() == True:
                    self.closePosition()
                    self.status == 'Not Trading'
                    print('Short Trade exited')
                else:
                    print('No Short exits, currently looking for one')
            elif self.currentTrade == 'Long':
                if self.enterShort() == True:
                    self.closePosition()
                    self.status == 'Not Trading'
                    print('Long Trade exited')
                else:
                    print('No Long exits, currently looking for one')
            else:
                self.kill = True
                print('Kill switch initiated, closing down')
Exemple #2
0
    def main(self):
        self.resistance = max(self.data[(userVals.count - 6):userVals.count])
        self.support = min(self.data[(userVals.count - 6):userVals.count])

        # Oanda Parameters
        mktOrderLong = MarketOrderRequest(
            instrument=userVals.pair,
            units=self.lots(),
            takeProfitOnFill=TakeProfitDetails(price=self.resistance).data,
            stopLossOnFill=StopLossDetails(price=self.support).data)
        mktOrderShort = MarketOrderRequest(
            instrument=userVals.pair,
            units=(self.lots() * -1),
            takeProfitOnFill=TakeProfitDetails(price=self.support).data,
            stopLossOnFill=StopLossDetails(price=self.resistance).data)

        # Trading Conditions
        if self.getTrades() == 0:
            print "Looking for trades."
            if self.enterLong() == True:
                api = oandapyV20.API(access_token=userVals.key)
                r = orders.OrderCreate(userVals.accountID,
                                       data=mktOrderLong.data)
                api.request(r)
                self.status == "Trading"
                self.currentTrade == "Long"
                print "Trade Executed"

            elif self.enterShort() == True:
                api = oandapyV20.API(access_token=userVals.key)
                r = orders.OrderCreate(userVals.accountID,
                                       data=mktOrderShort.data)
                api.request(r)
                self.status == "Trading"
                self.currentTrade == "Short"
                print "Trade Executed"

            elif self.enterLong() and self.enterShort() == False:
                print "No Trades Open, Looking for Entry..."
        else:
            if self.currentTrade == "Short":
                if self.enterLong() == True:
                    self.closePosition()
                    self.status == "Not Trading"
                    print "Trade Exited"
                else:
                    print "No exits.. Looking"
            elif self.currentTrade == "Long":
                if self.enterShort() == True:
                    self.closePosition()
                    self.status == "Not Trading"
                    print "Trade Exited"
                else:
                    print "No exits.. Looking"
            else:
                self.kill = True
                print "Error, Closing down."
Exemple #3
0
    def order(self, instrument, weight, price):
        # calculate TP/SL, these are fixed @ .5%/.25%; change to fit your needs
        p = str(price)
        p = p.split('.')
        p = len(p[1])
        self.TP_long = round((price * 1.005), p)
        self.SL_long = round((price * 0.9975), p)
        self.TP_short = round((price * 0.995), p)
        self.SL_short = round(
            (price * 1.0025),
            p)  # sometimes have an issue rounding with JPY crosses

        if self.weight > 0:
            mktOrder = MarketOrderRequest(
                instrument=instrument,
                units=weight,
                TakeProfitOnFill=TakeProfitDetails(price=self.TP_long).data,
                stopLossOnFill=StopLossDetails(price=self.SL_long).data)
            r = orders.OrderCreate(accountID, data=mktOrder.data)

            try:
                rv = self.api.request(r)
                if self.should_print == True:
                    print(r.status_code)
            except V20Error as e:
                print(r.status_code, e)
            else:
                if self.should_print == True:
                    print(json.dumps(rv, indent=4))

        else:
            mktOrder = MarketOrderRequest(
                instrument=instrument,
                units=weight,
                TakeProfitOnFill=TakeProfitDetails(price=self.TP_short).data,
                stopLossOnFill=StopLossDetails(price=self.SL_short).data)
            r = orders.OrderCreate(accountId, data=mktOrder.data)

            try:
                rv = self.api.request(r)
                if self.should_print == True:
                    print(r.status_code)
            except V20Error as e:
                print(r.status_code, e)
            else:
                if self.should_print == True:
                    print(json.dumps(rv, indent=4))

        return r.response
Exemple #4
0
def go_short():
    # TODO: refactor this
    params = {"instruments": u.pair}
    r = pricing.PricingInfo(accountID=u.accountID, params=params)
    client.request(r)
    price_list = r.response.get('prices', {})
    price_dict = price_list[0]
    bids = price_dict.get('bids')
    current_bids = bids[0]
    current_bid_price = float(current_bids.get('price'))

    take_profit = (current_bid_price-0.0050)  # equivalent to 50 pips
    # TODO: Adjust the above and below
    position = position_size()

    try:
        order_data = MarketOrderRequest(instrument=u.pair,
                                        units=-position,  # tp.Units(position).value
                                        takeProfitOnFill={
                                            "price": tp.PriceValue(take_profit).value
                                            },
                                        trailingStopLossOnFill={
                                            "distance": "0.00500"
                                            })

        r = orders.OrderCreate(u.accountID, data=order_data.data)
        client.request(r)
        sleep(5)
        trade()
    except Exception:
        print("Placing short order failed, check the logs.")
        logging.exception('Placing short order failed.')
Exemple #5
0
    def order(self, units):
        mop = {"instrument": self.pt.instrument, "units": units}

        def frmt(v):
            # format a number over 6 digits: 12004.1, 1.05455
            l = len(str(v).split(".")[0])
            return "{{:{}.{}f}}".format(l, 6 - l).format(v)

        direction = 1 if units > 0 else -1
        if self.clargs.takeProfit:  # takeProfit specified? add it
            tpPrice = self.pt._c[self.pt.idx-1] * \
                      (1.0 + (self.clargs.takeProfit/100.0) * direction)
            mop.update({
                "takeProfitOnFill":
                TakeProfitDetails(price=frmt(tpPrice)).data
            })

        if self.clargs.stopLoss:  # stopLosss specified? add it
            slPrice = self.pt._c[self.pt.idx-1] * \
                      (1.0 + (self.clargs.stopLoss/100.0) * -direction)
            mop.update(
                {"stopLossOnFill": StopLossDetails(price=frmt(slPrice)).data})

        data = MarketOrderRequest(**mop).data
        r = orders.OrderCreate(accountID=self.accountID, data=data)
        try:
            response = self.client.request(r)
        except V20Error as e:
            logger.error("V20Error: %s", e)
        else:
            logger.info("Response: %d %s", r.status_code,
                        json.dumps(response, indent=2))
def order_sell_calc(pair, atr):
    price = (df_h[pair].iloc[:, 4]).astype(float)[0]
    sl = price - (1 * (atr * 0.50))
    tp = price + (1 * (atr * 0.50))

    takeProfitOnFillOrder = TakeProfitDetails(price=tp)
    StopLossOnFillOrder = StopLossDetails(price=sl)

    order_sell = MarketOrderRequest(
        instrument=pair,
        units=-10,
        takeProfitOnFill=takeProfitOnFillOrder.data,
        stopLossOnFill=StopLossOnFillOrder.data)

    r = orders.OrderCreate(accountID, data=order_sell.data)
    print("Processing selling order of : {}".format(r))
    print("====================")
    print(r.data)

    try:
        response = api.request(r)
    except V20Error as e:
        print("V20Error:{}".format(e))
    else:
        print("Respose: {}\n{}".format(r.status_code,
                                       json.dumps(response, indent=2)))
def order_buy_calc(pair):
    d = {
        "XAG_USD": 41,
        "XAU_USD": 1,
        "CORN_USD": 300,
        "BCO_USD": 28,
        "NATGAS_USD": 493,
        "SUGAR_USD": 9150,
        "WHEAT_USD": 204,
        "XCU_USD": 360,
        "XPT_USD": 1,
        "SOYBN_USD": 109
    }
    u = d.get(pair)
    order_buy = MarketOrderRequest(instrument=pair, units=u)

    r = orders.OrderCreate(accountID, data=order_buy.data)
    print("Processing long order on : {}".format(r))
    print("====================")
    print(r.data)

    try:
        response = api.request(r)
    except V20Error as e:
        print("V20Error:{}".format(e))
    else:
        print("Respose: {}\n{}".format(r.status_code,
                                       json.dumps(response, indent=2)))
def order_buy_calc(pair, atr):
    price = (df_h[pair].iloc[:, 4]).astype(float)[0]
    sl = price - (1 * (atr * 0.50))
    tp = price + (1 * (atr * 0.50))

    # print("the price for", i, "is: ", price)
    # print("the tp for", i, "is: ", tp)
    # print("the sl for", i, "is: ", sl)

    takeProfitOnFillOrder = TakeProfitDetails(price=tp)
    StopLossOnFillOrder = StopLossDetails(price=sl)

    print(takeProfitOnFillOrder.data)
    print(StopLossOnFillOrder.data)

    #############
    #############
    #############          CHECK ORDER  BELOW ....
    #############
    #############

    # requests.post(url, data=order_b)

    ordr = MarketOrderRequest(instrument=pair,
                              units=1,
                              takeProfitOnFill=takeProfitOnFillOrder.data,
                              stopLossOnFill=StopLossOnFillOrder.data)
    order_buy = json.dumps(ordr.data, indent=4)

    requestdata = requests.post(url=url, data=order_buy)
Exemple #9
0
    def OrderCreate_mkt(self,
                        ticker,
                        size,
                        takeprofit=None,
                        stoploss=None,
                        trailingstop=None):
        """
        建立市价单
        requesttype:
                MarketOrder
        """
        d = dict(instrument=ticker, units=size)

        if takeprofit:
            d['takeProfitOnFill'] = TakeProfitDetails(price=takeprofit).data

        if stoploss:
            d['stopLossOnFill'] = StopLossDetails(price=stoploss).data

        if trailingstop:
            d['trailingStopLossOnFill'] = TrailingStopLossDetails(
                distance=trailingstop).data

        Order = MarketOrderRequest(**d).data

        r = orders.OrderCreate(accountID=self.accountID, data=Order)

        return self.client.request(r)
def order_buy_calc(pair, atr):
    price = (df_h[pair].iloc[:, 4]).astype(float)[0]
    sl = price - (1 * (atr * 0.50))
    tp = price + (1 * (atr * 0.50))

    # print("the price for", i, "is: ", price)
    # print("the tp for", i, "is: ", tp)
    # print("the sl for", i, "is: ", sl)

    takeProfitOnFillOrder = TakeProfitDetails(price=tp)
    StopLossOnFillOrder = StopLossDetails(price=sl)

    print(takeProfitOnFillOrder.data)
    print(StopLossOnFillOrder.data)

    # requests.post(url, data=order_b)

    order_buy = MarketOrderRequest(instrument=pair,
                                   units=1,
                                   takeProfitOnFill=takeProfitOnFillOrder.data,
                                   stopLossOnFill=StopLossOnFillOrder.data)

    r = orders.OrderCreate(accountID, data=order_buy.data)
    print("Processing : {}".format(r))
    print("====================")
    print(r.data)

    try:
        response = api.request(r)
    except V20Error as e:
        print("V20Error:{}".format(e))
    else:
        print("Respose: {}\n{}".format(r.status_code,
                                       json.dumps(response, indent=2)))
Exemple #11
0
    def open_order(self, instrument, units):

        # check if position is already open
        if units < 0:
            if self.order_book[instrument]['order_type'] is (not None and -1):
                print('Short: {} (holding)'.format(instrument))
                return 1
        elif units > 0:
            if self.order_book[instrument]['order_type'] is (not None and 1):
                print('Long: {} (holding)'.format(instrument))
                return 1
        else:
            print('Units specified: 0')
            return 1

        # define parameters, create and send a request
        mkt_order = MarketOrderRequest(instrument=instrument, units=units)
        r = orders.OrderCreate(self.accountID, data=mkt_order.data)
        request_data = self.send_request(r)

        # check if request was fulfilled and save its ID
        if request_data is not 1:
            instrument = request_data['orderCreateTransaction']['instrument']
            self.order_book[instrument]['tradeID'] = request_data[
                'lastTransactionID']
            self.order_book[instrument]['order_type'] = -1 if units < 0 else 1
            print('{}: {}'.format('Long' if units > 0 else 'Short',
                                  instrument))
            return 0
        else:
            return 1
Exemple #12
0
 def place_market_order(self, instrument: str, side: str, units: Union[float, int], tp: float = None, sl: float = None):
     order_request = MarketOrderRequest(
         instrument=instrument,
         units=units * (1 if side == OrderSide.LONG else -1),
         takeProfitOnFill=TakeProfitDetails(price=self._adjust_decimals(instrument, tp)).data if tp else None,
         stopLossOnFill=StopLossDetails(price=self._adjust_decimals(instrument, sl)).data if sl else None,
     )
     self._submit_order_request(order_request, self.account_id)
 def create_order(self, side, units):
     #negative side  = selling, positive = buying
     if side == "sell":
         units = units * -1
     mo = MarketOrderRequest(instrument="EUR_USD", units=units)
     r = orders.OrderCreate(accountID, data=mo.data)
     print("making trade")
     client.request(r)
     print(r.response)
Exemple #14
0
def do_short(bid):
    if config.take_profit_value != 0 or config.stop_loss_value != 0:
        order = MarketOrderRequest(
            instrument=config.insName,
            units=-config.lot_size,
            takeProfitOnFill=TakeProfitDetails(price=bid +
                                               config.take_profit_value).data,
            stopLossOnFill=StopLossDetails(price=bid -
                                           config.stop_loss_value).data)
    else:
        order = MarketOrderRequest(instrument=config.insName,
                                   units=-config.lot_size)
    r = orders.OrderCreate(config.account_id, data=order.data)
    resp = oanda.request(r)
    print(resp)
    price = resp.get('orderFillTransaction').get('price')
    print(time, 's: SELL price =', price)
    return float(price)
Exemple #15
0
 def market_order_short_sl_tp(self, sl, tp, pair="AUD_USD", unit=-1000):
     client = API(access_token=self.access_token, environment='live')
     stopLossOnFill = StopLossDetails(price=sl)
     takeProfitOnFillOrder = TakeProfitDetails(price=tp)
     ordr = MarketOrderRequest(instrument=pair,
                               units=unit,
                               stopLossOnFill=stopLossOnFill.data,
                               takeProfitOnFill=takeProfitOnFillOrder.data)
     r = orders.OrderCreate(self.accountID, data=ordr.data)
     rv = client.request(r)
def order_long(instrument, units, take_profit=None, stop_loss=None):
    api = API(access_token=oanda_keys['access_token'])
    mkt_order_long = MarketOrderRequest(instrument=instrument,
                                        units=units,
                                        takeProfitOnFill=take_profit,
                                        stopLossOnFill=stop_loss)

    r = orders.OrderCreate(oanda_keys['account_id'], data=mkt_order_long.data)
    api.request(r)
    return r.response
    print("Trade Executed")
Exemple #17
0
    def send_market_order(self,
                          instrument,
                          quantity,
                          is_buy,
                          take_profit=None,
                          stop_loss=None):

        tp = None if take_profit is None else TakeProfitDetails(
            price=take_profit).data

        sl = None if stop_loss is None else StopLossDetails(
            price=stop_loss).data

        if is_buy:
            mkt_order = MarketOrderRequest(instrument=instrument,
                                           units=quantity,
                                           takeProfitOnFill=tp,
                                           stopLossOnFill=sl)
        else:
            mkt_order = MarketOrderRequest(instrument=instrument,
                                           units=(quantity * -1),
                                           takeProfitOnFill=tp,
                                           stopLossOnFill=sl)

        r = orders.OrderCreate(self.account_id, data=mkt_order.data)
        self.client.request(r)

        if r.status_code != 201:
            self.on_order_event(instrument, quantity, is_buy, None,
                                'NOT_FILLED')
            return False

        if 'orderCancelTransaction' in r.response:
            self.on_order_event(instrument, quantity, is_buy, None,
                                'NOT_FILLED')
            return False

        transaction_id = r.response.get('lastTransactionID', None)
        self.on_order_event(instrument, quantity, is_buy, transaction_id,
                            'FILLED')
        return r
Exemple #18
0
 def OrderCreate_mkt(self,
                     instrument,
                     units,
                     takeProfit_price=None,
                     stopLoss_price=None):
     mktOrder = MarketOrderRequest(
         instrument=instrument,
         units=units,
         takeProfitOnFill=TakeProfitDetails(price=takeProfit_price).data,
         stopLossOnFill=StopLossDetails(price=stopLoss_price).data).data
     r = orders.OrderCreate(accountID=self.accountID, data=mktOrder)
     return self.client.request(r)
Exemple #19
0
    def place_order_single_pair_21(self, forex_pair, num_of_candles, interval, take_profit, stop_loss):

        import json
        import oandapyV20.endpoints.orders as orders
        from oandapyV20.contrib.requests import MarketOrderRequest
        from oandapyV20.contrib.requests import StopLossOrderRequest
        from oandapyV20.contrib.requests import TakeProfitOrderRequest

        self.indicators(forex_pair, num_of_candles, interval)

        if "JPY" in forex_pair:
            take_profit_pair = take_profit * 0.01
            stop_loss_pair = stop_loss * 0.01
            price_gap = 5 * 0.01
        elif "HKD" in forex_pair:
            take_profit_pair = take_profit * 0.001
            stop_loss_pair = stop_loss * 0.001
            price_gap = 5 * 0.001
        else:
            take_profit_pair = take_profit * 0.0001
            stop_loss_pair = stop_loss * 0.0001
            price_gap = 5 * 0.0001

        if self.ema_20_60[-1] >= self.close_prices_60[-1] <= self.ema_60[-1] and \
                self.close_prices_60[-1] - self.open_prices_60[-6] <= price_gap:

            mo = MarketOrderRequest(instrument=forex_pair, units=self.pairs_units_140[forex_pair])
            r = orders.OrderCreate(self.accountID, data=mo.data)
            # ? perform the request
            rv = self.client.request(r)
            print(json.dumps(rv, indent=4))

            trade_id = rv["orderFillTransaction"]["tradeOpened"]["tradeID"]
            open_trade_price = float(rv["orderFillTransaction"]["price"])

            if "JPY" in forex_pair:
                stop_loss_price = str(round(open_trade_price - stop_loss_pair, 3))  # - AS IT'S BEAR SCENARIO
                take_profit_price = str(round(open_trade_price - take_profit_pair, 3))
            else:
                stop_loss_price = str(round(open_trade_price - stop_loss_pair, 5))
                take_profit_price = str(round(open_trade_price - take_profit_pair, 5))  # - AS IT'S BEAR SCENARIO

            ordr_sl = StopLossOrderRequest(tradeID=trade_id, price=stop_loss_price)
            r_sl = orders.OrderCreate(self.accountID, data=ordr_sl.data)
            # perform the request
            rv_sl = self.client.request(r_sl)
            print(json.dumps(rv_sl, indent=4))

            ordr_tp = TakeProfitOrderRequest(tradeID=trade_id, price=take_profit_price)
            r_tp = orders.OrderCreate(self.accountID, data=ordr_tp.data)
            # perform the request
            rv_tp = self.client.request(r_tp)
            print(json.dumps(rv_tp, indent=4))
Exemple #20
0
async def create_order(market, buy_signal, sell_signal):
    # if buy_signal > sell_signal:
    # 	mo = MarketOrderRequest(instrument=market, units=(buy_signal * 10000 - sell_signal * 10000))
    # 	market_order = oanda.request(orders.OrderCreate(accountID, data=mo.data))
    # elif sell_signal > buy_signal:
    # 	mo = MarketOrderRequest(instrument=market, units=(buy_signal * 10000 - sell_signal * 10000))
    mo = MarketOrderRequest(instrument=market,
                            units=(buy_signal * 10000 - sell_signal * 10000))
    market_order = oanda.request(orders.OrderCreate(accountID, data=mo.data))
    #order confirmation
    print(json.dumps(market_order, indent=4))
    return market_order
Exemple #21
0
    def orderlaunch(self, args):

        pair_targeted, direction = args

        info = PricingInfo(accountID=accountID, params={"instruments": pair_targeted})
        mkt_order = None

        if direction is 0:
            return False

        elif direction is 1:
            mkt_order = MarketOrderRequest(
                instrument=pair_targeted,
                units=1000)

        elif direction is -1:
            mkt_order = MarketOrderRequest(
                instrument=pair_targeted,
                units=-1000)

        # create the OrderCreate request
        r = orders.OrderCreate(accountID, data=mkt_order.data)

        try:
            # create the OrderCreate request
            rv = api.request(r)
        except oandapyV20.exceptions.V20Error as err:
            print(r.status_code, err)
            return False
        else:
            # print(json.dumps(rv, indent=2))
            try:
                key = 'orderFillTransaction'
                if key in rv:
                    print('#', pair_targeted, ': Order opening -> SUCCESS')
            except oandapyV20.exceptions.V20Error as err:
                print(r.status_code, err)
                return False
            else:
                return True
 def test_market_orders(self):
     token = open('../Account/Token.txt', 'r').read()
     accId = open('../Account/Account.txt', 'r').read()
     oanda = oandapyV20.API(environment="practice", access_token=token)
     mktOrder = MarketOrderRequest(instrument='EUR_USD', units=1)
     r = orders.OrderCreate(accId, data=mktOrder.data)
     resp = oanda.request(r)
     print resp
     r = positions.PositionClose(accId, 'EUR_USD', {"longUnits": "ALL"})
     resp = oanda.request(r)
     print resp
     r = AccountDetails(accId)
     balance = oanda.request(r).get('account').get('balance')
     self.assertTrue(balance > 0)
Exemple #23
0
    def execute(self, params):
        instrument = params['instrument']
        take_profit = params['take_profit']
        stop_loss = params['stop_loss']
        units = params['units']

        mktOrder = MarketOrderRequest(
            instrument=instrument,
            units=units,
            takeProfitOnFill=TakeProfitDetails(price=take_profit).data,
            stopLossOnFill=StopLossDetails(price=stop_loss).data)

        response = orders.OrderCreate(self.account_id, data=mktOrder.data)
        return self.client.request(response)
Exemple #24
0
    def execute_order(self, event):
        instrument = "%s_%s" % (event.instrument[:3], event.instrument[3:])
        if event.order_type == 'market':
            if event.side == 'buy':
                mktOrder = MarketOrderRequest(
                    instrument=instrument,
                    units=event.units,
                    #type= event.order_type,
                    #side= event.side
                )
            if event.side == 'sell':
                mktOrder = MarketOrderRequest(
                    instrument=instrument,
                    units=(event.units * -1),
                    #type= event.order_type,
                    #side= event.side
                )
        else:
            Print('Order Type Not Supported ' + self.order_type)
            return

        accountID = self.account_id
        access_token = self.access_token

        api = oandapyV20.API(access_token=access_token)

        r = orders.OrderCreate(accountID, data=mktOrder.data)
        try:
            # Try and execute order
            rv = api.request(r)
        except oandapyV20.exceptions.V20Error as err:
            print(r.status_code, err)
        else:
            print(json.dumps(rv, indent=2))

        #response = self.conn.getresponse().read().decode("utf-8").replace("\n","").replace("\t","")
        self.logger.debug(json.dumps(rv, indent=2))
Exemple #25
0
def order(instrument, weight, price, TP, SL):

    if weight > 0:
        mktOrder = MarketOrderRequest(
                        instrument=instrument,
                        units=weight,
                        takeProfitOnFill=TakeProfitDetails(price=TP).data,
                        stopLossOnFill=StopLossDetails(price=SL).data)
        r = orders.OrderCreate(accountID, data=mktOrder.data)

        try:
            rv = api.request(r)
            #print(r.status_code)
        except V20Error as e:
            print(r.status_code, e)
        else:
            #print(json.dumps(rv, indent=4))
            pass

    else:
        mktOrder = MarketOrderRequest(
                            instrument=instrument,
                            units=weight,
                            takeProfitOnFill=TakeProfitDetails(price=TP).data,
                            stopLossOnFill=StopLossDetails(price=SL).data)
        r = orders.OrderCreate(accountID, data=mktOrder.data)

        try:
            rv = api.request(r)
            #print(r.status_code)
        except V20Error as e:
            print(r.status_code, e)
        else:
            #print(json.dumps(rv, indent=4))
            pass

    return r.response
Exemple #26
0
    def execute_order(self, event):
        print("execute order")
        instrument = "%s_%s" % (event.instrument[:3], event.instrument[3:])
        units = event.units

        #Market order
        mo = MarketOrderRequest(instrument=instrument, units=units)
        print(mo)
        # Create order request
        request = orders.OrderCreate(self.account_id, data=mo.data)
        print(request)
        # perform the request
        rv = self.client.request(request)
        print(rv)
        self.logger.debug(rv)
def create_order(limit,loss, units):
    mktOrder = MarketOrderRequest(
        instrument = instrument,
        units = units,
        takeProfitOnFill = TakeProfitDetails(price=limit).data,
        trailingStopLossOnFill=TrailingStopLossDetails(distance=loss,timeInForce='GTC').data,
            )
    r = orders.OrderCreate(acccount_id,data=mktOrder.data)
    try:
        rv = api.request(r)
    except oandapyV20.exceptions.V20Error as err:
        print(r.status_code, err)
    else:
        #print(rv)
        return int(rv["relatedTransactionIDs"][1])
Exemple #28
0
 def test_market_orders(self):
     conf = Config.Config()
     token = conf.token
     accId = conf.account_id
     oanda = oandapyV20.API(environment="practice", access_token=token)
     mktOrder = MarketOrderRequest(instrument='EUR_USD', units=1)
     r = orders.OrderCreate(accId, data=mktOrder.data)
     resp = oanda.request(r)
     print(resp)
     r = positions.PositionClose(accId, 'EUR_USD', {"longUnits": "ALL"})
     resp = oanda.request(r)
     print(resp)
     r = AccountDetails(accId)
     balance = oanda.request(r).get('account').get('balance')
     self.assertTrue(balance > 0)
Exemple #29
0
def placeMrketOrder(currency_pair, lot_size):
    client_obj = oandapyV20.API(access_token=token)
    mktOrder = MarketOrderRequest(
        instrument=currency_pair,
        units=lot_size,
    ).data
    client_request = orders.OrderCreate(accountID=accountID, data=mktOrder)
    try:
        rv = client_obj.request(client_request)
    except V20Error as err:
        print("ERROR OCCURED DUE TO : {}".format(err))
    else:
        response = json.dumps(rv, indent=2)
        data = json.loads(response)

        return data["orderCreateTransaction"]["id"]
Exemple #30
0
    def execute_order(self, event):
        if event.order_type == "market":

            market_order = MarketOrderRequest(instrument=event.instrument,
                                              units=event.units *
                                              self.multiplier(event.side))

            r = orders.OrderCreate(self.account_id, data=market_order.data)
            try:
                # create the OrderCreate request
                rv = self.api.request(r)
            except oandapyV20.exceptions.V20Error as err:
                print(r.status_code, err)
            else:
                print(json.dumps(rv, indent=2))
        else:
            pass