|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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×tamp='+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; |