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
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)
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}"
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)