use of com.github.jnidzwetzki.cryptobot.util.BarMerger in project crypto-bot by jnidzwetzki.
the class BarMegerTest method testTickAlignment1.
/**
* Test the alignment of the ticks
* @throws InterruptedException
* @throws IOException
* @throws ParseException
*/
@Test(timeout = 10000)
public void testTickAlignment1() throws InterruptedException, IOException, ParseException {
final SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
final CountDownLatch latch = new CountDownLatch(3);
final BiConsumer<BitfinexCurrencyPair, Bar> tickConsumer = (s, t) -> {
Assert.assertTrue(t.getEndTime().getSecond() == 59);
latch.countDown();
};
final BarMerger tickMerger = new BarMerger(BitfinexCurrencyPair.BTC_USD, Timeframe.MINUTES_1, tickConsumer);
tickMerger.addNewPrice(parser.parse("01:01:23").getTime(), 1.0, 5.0);
tickMerger.addNewPrice(parser.parse("01:02:33").getTime(), 2.0, 5.0);
tickMerger.addNewPrice(parser.parse("02:03:53").getTime(), 2.0, 5.0);
tickMerger.addNewPrice(parser.parse("22:22:53").getTime(), 2.0, 5.0);
tickMerger.close();
latch.await();
}
use of com.github.jnidzwetzki.cryptobot.util.BarMerger in project crypto-bot by jnidzwetzki.
the class BarMegerTest method testTickAlignment2.
/**
* Test the alignment of the ticks
* @throws InterruptedException
* @throws IOException
* @throws ParseException
*/
@Test(timeout = 10000)
public void testTickAlignment2() throws InterruptedException, IOException, ParseException {
final SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
final CountDownLatch latch = new CountDownLatch(4);
final BiConsumer<BitfinexCurrencyPair, Bar> tickConsumer = (s, t) -> {
Assert.assertTrue(t.getEndTime().getMinute() == 14 || t.getEndTime().getMinute() == 29 || t.getEndTime().getMinute() == 44 || t.getEndTime().getMinute() == 59);
Assert.assertEquals(59, t.getEndTime().getSecond());
latch.countDown();
};
final BarMerger tickMerger = new BarMerger(BitfinexCurrencyPair.BTC_USD, Timeframe.MINUTES_15, tickConsumer);
tickMerger.addNewPrice(parser.parse("01:01:00").getTime(), 1.0, 5.0);
tickMerger.addNewPrice(parser.parse("02:41:33").getTime(), 2.0, 5.0);
tickMerger.addNewPrice(parser.parse("10:33:11").getTime(), 2.0, 5.0);
tickMerger.addNewPrice(parser.parse("22:22:53").getTime(), 2.0, 5.0);
tickMerger.close();
latch.await();
}
use of com.github.jnidzwetzki.cryptobot.util.BarMerger in project crypto-bot by jnidzwetzki.
the class BarMegerTest method testTickMerger1.
/**
* Test one tick
* @throws InterruptedException
* @throws IOException
*/
@Test(timeout = 5000)
public void testTickMerger1() throws InterruptedException, IOException {
final CountDownLatch latch = new CountDownLatch(1);
final BiConsumer<BitfinexCurrencyPair, Bar> tickConsumer = (s, t) -> {
latch.countDown();
};
final BarMerger tickMerger = new BarMerger(BitfinexCurrencyPair.BTC_USD, Timeframe.MINUTES_1, tickConsumer);
tickMerger.addNewPrice(1000000, 1.0, 5.0);
tickMerger.close();
latch.await();
}
use of com.github.jnidzwetzki.cryptobot.util.BarMerger in project crypto-bot by jnidzwetzki.
the class BarMegerTest method testTickMergerMinMax.
/**
* Test tick merger min max
* @throws InterruptedException
* @throws IOException
* @throws ParseException
*/
@Test(timeout = 6000)
public void testTickMergerMinMax() throws InterruptedException, IOException, ParseException {
final SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
final CountDownLatch latch = new CountDownLatch(1);
final BiConsumer<BitfinexCurrencyPair, Bar> tickConsumer = (s, t) -> {
Assert.assertEquals(1.0, t.getMinPrice().doubleValue(), DELTA);
Assert.assertEquals(8.0, t.getMaxPrice().doubleValue(), DELTA);
Assert.assertEquals(3.0, t.getOpenPrice().doubleValue(), DELTA);
Assert.assertEquals(4.5, t.getClosePrice().doubleValue(), DELTA);
latch.countDown();
};
final BarMerger tickMerger = new BarMerger(BitfinexCurrencyPair.BTC_USD, Timeframe.MINUTES_1, tickConsumer);
tickMerger.addNewPrice(parser.parse("01:01:01").getTime(), 3.0, 5.0);
tickMerger.addNewPrice(parser.parse("01:01:02").getTime(), 2.0, 5.0);
tickMerger.addNewPrice(parser.parse("01:01:03").getTime(), 8.0, 5.0);
tickMerger.addNewPrice(parser.parse("01:01:04").getTime(), 1.5, 5.0);
tickMerger.addNewPrice(parser.parse("01:01:05").getTime(), 2.5, 5.0);
tickMerger.addNewPrice(parser.parse("01:01:06").getTime(), 1.0, 5.0);
tickMerger.addNewPrice(parser.parse("01:01:07").getTime(), 4.5, 5.0);
tickMerger.close();
latch.await();
}
use of com.github.jnidzwetzki.cryptobot.util.BarMerger in project crypto-bot by jnidzwetzki.
the class DonchianBot method registerTicker.
/**
* Register the ticker
* @throws InterruptedException
* @throws APIException
*/
protected void registerTicker() throws InterruptedException, APIException {
logger.info("Register ticker");
for (final BitfinexCurrencyPair currency : tradedCurrencies) {
// Subscribe ticket on all connections (needed for wallet in USD conversion)
for (final BitfinexApiBroker bitfinexApiBroker : apiBrokerList) {
final BitfinexTickerSymbol symbol = new BitfinexTickerSymbol(currency);
bitfinexApiBroker.getQuoteManager().subscribeTicker(symbol);
logger.info("Wait for ticker");
while (!bitfinexApiBroker.isTickerActive(symbol)) {
Thread.sleep(100);
}
}
// Use only one connection for merging
tickMerger.put(currency, new BarMerger(currency, TIMEFRAME, (s, t) -> barDoneCallback(s, t)));
final BitfinexTickerSymbol symbol = new BitfinexTickerSymbol(currency);
apiBrokerList.get(0).getQuoteManager().registerTickCallback(symbol, (s, c) -> handleBarCallback(s, c));
}
}
Aggregations