knowm / XChange

XChange is a Java library providing a streamlined API for interacting with 60+ Bitcoin and Altcoin exchanges providing a consistent interface for trading and accessing market data.
http://knowm.org/open-source/xchange/
MIT License
3.85k stars 1.94k forks source link

Kraken Error [EOrder:Trading agreement required] #2871

Open mrbionik opened 5 years ago

mrbionik commented 5 years ago

Hi, i try to open a market order or a stop-loss order on kraken but kraken api respond this error:

ExchangeException: [EOrder:Trading agreement required]

Placing a limit order or cancel orders works smoothly.

Kraken Suport Docs say: _You will need to submit your order with the following parameter: ‘tradingagreement’:’agree’ This will resolve the error message you are receiving when placing an order.

Can i set this agreement parameter in the order builder? I'm was not able to find it.

thank you. regards peter

mrbionik commented 5 years ago
  1. added @FormParam("trading_agreement") String agreement, to KrakenOrderResult addOrder in KrakenAuthenticated interface

  2. added new String to KrakenStandardOrder.class private final String trading_agreement; + GETTER and set value to agree in constructor this.trading_agreement = "agree";

  3. now i use new field _tradingagreement in placeKrakenOrder method -> market orders and stop-loss orders works now

    public KrakenOrderResponse placeKrakenOrder(KrakenStandardOrder krakenStandardOrder)
      throws IOException {
    
    KrakenOrderResult result = null;
    if (!krakenStandardOrder.isValidateOnly()) {
      result =
          kraken.addOrder(
              KrakenUtils.createKrakenCurrencyPair(krakenStandardOrder.getAssetPair()),
              krakenStandardOrder.getType().toString(),
              krakenStandardOrder.getOrderType().toApiFormat(),
              krakenStandardOrder.getPrice(),
              krakenStandardOrder.getSecondaryPrice(),
              krakenStandardOrder.getVolume().toPlainString(),
              krakenStandardOrder.getLeverage(),
              krakenStandardOrder.getPositionTxId(),
              delimitSet(krakenStandardOrder.getOrderFlags()),
              krakenStandardOrder.getStartTime(),
              krakenStandardOrder.getExpireTime(),
              krakenStandardOrder.getUserRefId(),
              krakenStandardOrder.getCloseOrder(),      
              krakenStandardOrder.getTradingAgreement(),
              exchange.getExchangeSpecification().getApiKey(),
              signatureCreator,
              exchange.getNonceFactory());
    } else { ...

    maybe a poor fix works for the moment. ;-) i would be very thankful if you could include krakens trading agreement in the next release

tony-engineering commented 4 years ago

Hello, I have the same issue. Any update on this ? Thanks :)