Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.05.2021, 22:31
Redkot Redkot вне форума
Прохожий
 
Регистрация: 15.05.2021
Сообщения: 1
Версия Delphi: Delphi 10.3
Репутация: 10
Вопрос Binance API + Delphi. Как создать ордер? Ошибка: -1102

Подскажите, пожалуйста, где может быть ошибка в создании ордера на фьючерсном рынке Binance.
На спотовом рынке работает (ордер создается), а на фьючерсном выдает ошибку:

code:-1102, msg: Mandatory parameter "timestamp" was not sent, was empty/null, or malformed.

Голову сломал, не понимаю что надо сделать.

Ориентировался на API Binance: https://binance-docs.github.io/apido...point-security

Код:
procedure TForm1.Button2Click(Sender: TObject);
    const
      PublicKey='***';
      SecretKey='***';
    var
      sign,queryString,requestBody,strOrder,url: String;
      strQuantity,strPrice,strLocalDT: String;
      PostData: TStringStream;
      ST: SystemTime;
      DT: TDateTime;
      idHTTP_Order: TidHTTP;
      ioSSL: TIdSSLIOHandlerSocketOpenSSL;
    begin
      try
        try
          idHTTP_Order:=TidHTTP.Create(Self);
          idHTTP_Order.HandleRedirects:=True;
          idHTTP_Order.HTTPOptions:=[hoKeepOrigProtocol,hoForceEncodeParams,
                                    hoNoProtocolErrorException,hoWantProtocolErrorContent];
          ioSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(Self);
          idHTTP_Order.IOHandler:=ioSSL;
          idHTTP_Order.Request.CustomHeaders.Add('X-MBX-APIKEY:'+PublicKey);
          strQuantity:='5.00000';
          strPrice:='2.18380';
          GetSystemTime(ST);
          DT:=EncodeDate(ST.wYear,ST.wMonth,ST.wDay)+
              EncodeTime(ST.wHour,ST.wMinute,ST.wSecond,ST.wMilliseconds);
          strLocalDT:=IntToStr(MilliSecondsBetween(DT,UnixDateDelta));
          queryString:='symbol=ADAUSDT&side=BUY&type=LIMIT&timeInForce=GTC';
          requestBody:='quantity='+strQuantity+'&price='+strPrice+'&recvWindow=5000&timestamp='+strLocalDT;
          sign:=THashSHA2.GetHMAC(RawByteString(queryString+requestBody),SecretKey,SHA256);
          PostData:=TStringStream.Create(requestBody+'&signature='+sign);
          //на споте работает, ордер создается
          //url:='https://api.binance.com/api/v3/order?symbol=ADAUSDT&side=BUY&type=LIMIT&timeInForce=GTC';
          //на фьюче не работает, ошибка -1102
          url:='https://fapi.binance.com/fapi/v1/order?symbol=ADAUSDT&side=BUY&type=LIMIT&timeInForce=GTC';
          strOrder:=idHTTP_Order.Post(url,PostData);
        finally
          PostData.DisposeOf;
          ioSSL.DisposeOf;
          idHTTP_Order.DisposeOf;
        end;
      except
        on E: Exception do ShowMessage('Error Message: '+E.Message);
      end;
      memo2.Lines.Add(strOrder);
    end;
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter   Ссылка на Telegram