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();
}
}
}