Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.kronus.binance.testes;

public class TestBracketOrderMain {

    public static void main(String[] args) {
        try {
                /*
            BinanceFuturesConfig config =
                    BinanceFuturesConfig.fromProperties("binance-futures.properties");

                        System.out.println("API KEY carregada: " + config.getApiKey());
            System.out.println("SECRET KEY carregada: " + config.getSecretKey().substring(0, 5) + "*****");
                       
            BinanceFuturesHttpClient httpClient = new BinanceFuturesHttpClient(config);
            httpClient.syncServerTime();

            BinanceFuturesMarketDataService marketDataService =
                    new BinanceFuturesMarketDataService(httpClient);

            BinanceFuturesTradeService tradeService =
                    new BinanceFuturesTradeService(httpClient);

            String symbol = "BTCUSDT";

            // 1) Descobrir o mark price atual
            BigDecimal markPrice = marketDataService.getMarkPrice(symbol);
            System.out.println("Mark price atual de " + symbol + " = " + markPrice);

            // 2) Definir quantidade garantindo notional >= 100 USDT
            // notional = markPrice * qty
            BigDecimal qty = new BigDecimal("0.002"); // ajusta se precisar
            BigDecimal notional = markPrice.multiply(qty);
            System.out.println("Notional da ordem = " + notional);

            if (notional.compareTo(new BigDecimal("100")) < 0) {
                // se ficar menor que 100, ajusta a qty
                BigDecimal minQty = new BigDecimal("100")
                        .divide(markPrice, 6, BigDecimal.ROUND_UP);
                qty = minQty;
                notional = markPrice.multiply(qty);
                System.out.println("Ajustando qty para " + qty + " (notional=" + notional + ")");
            }

            // 3) Definir stop e alvo RELATIVOS ao preço atual (exemplo: -1% e +1%)
            BigDecimal stopLossPrice = markPrice.multiply(new BigDecimal("0.99")); // -1%
            BigDecimal takeProfitPrice = markPrice.multiply(new BigDecimal("1.01")); // +1%

            // Arredonda para 2 casas (ajusta conforme o tickSize do símbolo depois)
            stopLossPrice = stopLossPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
            takeProfitPrice = takeProfitPrice.setScale(2, BigDecimal.ROUND_HALF_UP);

            System.out.println("StopLoss = " + stopLossPrice +
                    " | TakeProfit = " + takeProfitPrice);

            // 4) Montar o bracket: LONG (BUY)
            BracketOrderRequest bracket = new BracketOrderRequest()
                    .setSymbol(symbol)
                    .setSide(OrderSide.BUY)
                    .setQuantity(qty)
                    .setEntryType(OrderType.MARKET)           // entra a mercado
                    .setStopLossPrice(stopLossPrice)          // SL < markPrice
                    .setTakeProfitPrice(takeProfitPrice)      // TP > markPrice
                    .setWorkingType("MARK_PRICE");            // dispara pelo mark price

            // 5) Enviar bracket
            tradeService.placeBracketOrder(bracket);

            System.out.println("Bracket enviado com sucesso (entrada + SL + TP).");
*/

        } catch (Exception e) {
            System.err.println("ERRO EM TestBracketOrderMain:");
            e.printStackTrace();
        }
    }
}