use of com.github.jnidzwetzki.bitfinex.v2.entity.BitfinexCurrencyPair in project crypto-bot by jnidzwetzki.
the class BarMegerTest method testBarMerger3.
/**
* Test three Bar merge
* @throws InterruptedException
* @throws IOException
* @throws ParseException
*/
@Test(timeout = 6000)
public void testBarMerger3() throws InterruptedException, IOException, ParseException {
final SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
final CountDownLatch latch = new CountDownLatch(2);
final BiConsumer<BitfinexCurrencyPair, Bar> BarConsumer = (s, t) -> {
latch.countDown();
};
final BarMerger BarMerger = new BarMerger(BitfinexCurrencyPair.BTC_USD, Timeframe.MINUTES_1, BarConsumer);
BarMerger.addNewPrice(parser.parse("01:01:23").getTime(), 1.0, 5.0);
BarMerger.addNewPrice(parser.parse("01:01:33").getTime(), 2.0, 5.0);
BarMerger.addNewPrice(parser.parse("01:02:53").getTime(), 2.0, 5.0);
BarMerger.close();
latch.await();
}
use of com.github.jnidzwetzki.bitfinex.v2.entity.BitfinexCurrencyPair in project crypto-bot by jnidzwetzki.
the class TestCapitalAllocation method testCapitalAllocationExchangeMaxPositionLoss2.
@Test
public void testCapitalAllocationExchangeMaxPositionLoss2() throws APIException {
final PortfolioManager portfolioManager = buildPortfolioManager();
final Map<BitfinexCurrencyPair, CurrencyEntry> entries = new HashMap<>();
final CurrencyEntry entry1 = new CurrencyEntry(BitfinexCurrencyPair.BTC_USD, 1000, 0);
entries.put(BitfinexCurrencyPair.BTC_USD, entry1);
final CurrencyEntry entry2 = new CurrencyEntry(BitfinexCurrencyPair.IOT_USD, 1000, 990);
entries.put(BitfinexCurrencyPair.IOT_USD, entry2);
portfolioManager.calculatePositionSizes(entries);
// Max loss = 10, max capital allocation 50%
Assert.assertEquals(0.045, entry1.getPositionSize(), DELTA);
Assert.assertEquals(0.45, entry2.getPositionSize(), DELTA);
}
use of com.github.jnidzwetzki.bitfinex.v2.entity.BitfinexCurrencyPair in project crypto-bot by jnidzwetzki.
the class TestCapitalAllocation method testCapitalAllocationExchangeMaxPositionLoss3.
@Test
public void testCapitalAllocationExchangeMaxPositionLoss3() throws APIException {
final PortfolioManager portfolioManager = buildPortfolioManager();
final Map<BitfinexCurrencyPair, CurrencyEntry> entries = new HashMap<>();
final CurrencyEntry entry1 = new CurrencyEntry(BitfinexCurrencyPair.BTC_USD, 1000, 0);
entries.put(BitfinexCurrencyPair.BTC_USD, entry1);
final CurrencyEntry entry2 = new CurrencyEntry(BitfinexCurrencyPair.IOT_USD, 1000, 990);
entries.put(BitfinexCurrencyPair.IOT_USD, entry2);
final CurrencyEntry entry3 = new CurrencyEntry(BitfinexCurrencyPair.XRP_USD, 1000, 500);
entries.put(BitfinexCurrencyPair.XRP_USD, entry3);
portfolioManager.calculatePositionSizes(entries);
// Max loss = 10, max capital allocation 50%
Assert.assertEquals(0.045, entry1.getPositionSize(), DELTA);
Assert.assertEquals(0.45, entry2.getPositionSize(), DELTA);
Assert.assertEquals(0.09, entry3.getPositionSize(), DELTA);
}
use of com.github.jnidzwetzki.bitfinex.v2.entity.BitfinexCurrencyPair in project crypto-bot by jnidzwetzki.
the class TestCapitalAllocation method testCapitalAllocationExchange3.
@Test
public void testCapitalAllocationExchange3() throws APIException {
final PortfolioManager portfolioManager = buildPortfolioManager();
final Map<BitfinexCurrencyPair, CurrencyEntry> entries = new HashMap<>();
final CurrencyEntry entry1 = new CurrencyEntry(BitfinexCurrencyPair.BTC_USD, 1000, 990);
entries.put(BitfinexCurrencyPair.BTC_USD, entry1);
final CurrencyEntry entry2 = new CurrencyEntry(BitfinexCurrencyPair.IOT_USD, 1000, 990);
entries.put(BitfinexCurrencyPair.IOT_USD, entry2);
final CurrencyEntry entry3 = new CurrencyEntry(BitfinexCurrencyPair.XRP_USD, 1000, 990);
entries.put(BitfinexCurrencyPair.XRP_USD, entry3);
portfolioManager.calculatePositionSizes(entries);
// Max loss = 10, max capital allocation 50%
Assert.assertEquals(0.3, entry1.getPositionSize(), DELTA);
Assert.assertEquals(0.3, entry2.getPositionSize(), DELTA);
Assert.assertEquals(0.3, entry3.getPositionSize(), DELTA);
}
use of com.github.jnidzwetzki.bitfinex.v2.entity.BitfinexCurrencyPair in project bitfinex-v2-wss-api-java by jnidzwetzki.
the class PositionHandler method handlePositionCallback.
/**
* Handle a position update
* @param bitfinexApiBroker
* @param positions
*/
private void handlePositionCallback(final BitfinexApiBroker bitfinexApiBroker, final JSONArray positions) {
final String currencyString = positions.getString(0);
BitfinexCurrencyPair currency = BitfinexCurrencyPair.fromSymbolString(currencyString);
final Position position = new Position(currency);
position.setStatus(positions.getString(1));
position.setAmount(positions.getBigDecimal(2));
position.setBasePrice(positions.getBigDecimal(3));
position.setMarginFunding(positions.getBigDecimal(4));
position.setMarginFundingType(positions.getBigDecimal(5));
position.setPl(positions.optBigDecimal(6, BigDecimal.valueOf(-1)));
position.setPlPercent(positions.optBigDecimal(7, BigDecimal.valueOf(-1)));
position.setPriceLiquidation(positions.optBigDecimal(8, BigDecimal.valueOf(-1)));
position.setLeverage(positions.optBigDecimal(9, BigDecimal.valueOf(-1)));
bitfinexApiBroker.getPositionManager().updatePosition(position);
}
Aggregations