Exemplo n.º 1
0
    def buy(self, candle):
        if self.back_test:
            could_buy = self.signal_events.buy(self.product_code,
                                               candle.time,
                                               candle.close,
                                               1.0,
                                               save=False)
            return could_buy

        if self.start_trade > candle.time:
            logger.warning('action=buy status=false error=old_time')
            return False

        if not self.signal_events.can_buy(candle.time):
            logger.warning('action=buy status=false error=previous_was_buy')
            return False

        balance = self.API.get_balance()
        units = int(balance.available * self.use_percent)
        order = Order(self.product_code, constants.BUY, units)
        trade = self.API.send_order(order)
        could_buy = self.signal_events.buy(self.product_code,
                                           candle.time,
                                           trade.price,
                                           trade.units,
                                           save=True)
        return could_buy
Exemplo n.º 2
0
import sys

from oanda.oanda import Order
from oanda.oanda import APIClient

import settings


logging.basicConfig(level=logging.INFO, stream=sys.stdout)


if __name__ == "__main__":
    api_client = APIClient(settings.access_token, settings.account_id)

    order = Order(
        product_code=settings.product_code,
        side='BUY',
        units=10,
    )

    '''
    trade = api_client.send_order(order)
    print(trade.trade_id)
    print(trade.side)
    print(trade.units)
    print(trade.price)
    '''
    trades = api_client.get_open_trade()
    for t in trades:
        print(t.price)
Exemplo n.º 3
0
    print(ticker.truncate_date_time('1h'))
    print(ticker.mid_price)
    print(ticker.volume)

    from functools import partial

    def trade(ticker):
        print(ticker.mid_price)
        print(ticker.ask)
        print(ticker.bid)

    callback = partial(trade)
    api_client.get_realtime_ticker(callback)
    """
    order = Order(product_code=settings.product_code,
                  side=constants.BUY,
                  units=10)
    """
    trade = api_client.send_order(order)
    print(trade.trade_id)
    print(trade.side)
    print(trade.units)
    print(trade.price)
    """
    import time
    time.sleep(3)

    trades = api_client.get_open_trade()
    for t in trades:
        print(t.trade_id, t.price, t.side, t.units)
        trade = api_client.trade_close(t.trade_id)
# import pytest
from oanda.oanda import Oanda, Order, Account, DataFeed

oanda = Oanda()
oanda_live = Oanda(practice=False)
oanda_gbp = Oanda(pair='GBP_USD')
order = Order()
acc = Account()
data = DataFeed()


class TestOanda:
    def test_token(self):
        message1 = "Does the token str exist"
        message2 = "Is the token the expected length"
        x = oanda.token
        assert isinstance(x, str), message1
        assert len(x) > 60, message2

    def test_account_number(self):
        "Does the account str exist and is it the correct type and length"
        x = oanda.account
        assert isinstance(x, str)
        assert len(x) >= 10

    def test_set_base_url(self):
        if oanda.practice == True:
            message = f"Practice account url not set correctly - {oanda.base_url}"
            assert oanda.base_url == 'https://api-fxpractice.oanda.com', message
        elif oanda_live.practice == False:
            message = f"Live account url not set correctly - {oanda_live.base_url}"
Exemplo n.º 5
0
import logging
import sys

from oanda.oanda import Order
from oanda.oanda import APIClient

import settings

logging.basicConfig(level=logging.INFO, stream=sys.stdout)

if __name__ == "__main__":
    api_client = APIClient(access_token=settings.access_token,
                           account_id=settings.account_id)
    # from functools import partial
    #
    # def trade(ticker):
    #     print(ticker.mid_price)
    #     print(ticker.ask)
    #     print(ticker.bid)
    #
    # callback = partial(trade)
    # ticker = api_client.get_realtime_ticker(callback)

    order = Order(product_code=settings.product_code, side='SELL', units=10)

    api_client.send_order(order)