Подскажите, пожалуйста, где может быть ошибка в создании ордера на фьючерсном рынке 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;