Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2018, 14:59   #1
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
Лампочка Биржевые API

Привет, не так давно мучился над созданием разных ботов для разных бирж и часто сталкивался с проблемой что везде есть примеры на разных языках в число которых Delphi не входил, в общем я решил это поправить и выложу сюда несколько модулей для работы с разными биржами, начнем с Poloniex и YoBit.
Модули поддерживают 2 режима работы Only Public и Private and Public

Для работы любого из них файл кладется в папку с проектом и не забываем в uses добавить имя файла.

Пример использования Private and Public:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  p: TYoBit;
begin
  p.Create('API_Key','Sign');
  Memo1.Text := p.getinfo;
end;
Пример использования Only Public:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  p: TYoBit;
begin
  p.Create();
  Memo1.Text := p.returnTicker;
end;
В случае вызова приватной функции методом Only Public, в Memo вернется "NOT PRVAT API"

В случае успешного выполнения вернет ответ сервера в формате JSON.

Надеюсь кому то еще пригодится))
PoloniexAPI.rar
YoBitAPI.rar
PTyTb32 вне форума Ответить с цитированием
Старый 09.10.2018, 03:25   #2
Gotrim
Новичок
Джуниор
 
Регистрация: 05.10.2018
Сообщений: 1
По умолчанию

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

Код:

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, YobitAPI;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  YA: TYobit;
begin
  YA.Create('werre','werer');
  Memo1.Text :=YA.getInfo();
end;

end.





unit YobitAPI;

interface

uses IdHTTP, System.Hash, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack,
  System.Classes, IdSSL, System.SysUtils, IdSSLOpenSSL, DateUtils;

type
  TYobit = class(TObject)
    constructor Create(sAPI_Key: string = ''; sSecret: string = '');
  public
    function getinfo(): string;
  private
    H: THashSHA2;
    API_Key: string;
    Secret: string;
    PublicApi: boolean;
    IdHTTP1: TIdHTTP;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    function returnPrivateData(method: string; params: string = ''): string;

  end;

implementation

constructor TYoBit.Create(sAPI_Key, sSecret: string);
begin
  if (sAPI_Key = '') or (sSecret = '') then
  begin
    PublicApi := true;
  end
  else
  begin
    PublicApi := false;
    API_key := sAPI_Key;
    Secret := sSecret;
    H.Create(SHA512);
  end;
  IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  IdHTTP1 := TIdHTTP.Create(nil);
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.method := sslvSSLv23;
  IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
  IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
end;

function TYoBit.returnPrivateData(method: string; params: string = ''): string;
var
  nonce, ms: string;
  post: TStringStream;
begin
  if PublicApi then
  begin
    result := 'NO PRIVATE API KEY';
    exit;
  end;
  nonce := IntToStr(DateTimeToUnix(Now));
  post := TStringStream.Create;
  post.WriteString('method=' + method + '&nonce=' + nonce + params);
  ms := H.GetHMAC(post.DataString, secret, SHA512);
  IdHTTP1.Request.CustomHeaders.FoldLines := false;
  IdHTTP1.Request.CustomHeaders.Values['Key'] := API_key;
  IdHTTP1.Request.CustomHeaders.Values['Sign'] := ms;
  result := IdHTTP1.post('https://yobit.net/tapi/', post);
  post.Free;
end;

function TYoBit.getinfo: string;
begin
  result := returnPrivateData('getInfo');
end;


end.
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 09.10.2018 в 10:57.
Gotrim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приложение запускается на эмуляторе с API 25, но не запускается на телефоне с API 19 Donna Lizard Java Мобильная разработка (Android) 6 05.11.2017 14:09
консультация python unitest google api facebook api muove Фриланс 0 11.05.2017 14:25
Api kuba1981 PHP 8 07.12.2013 21:07
API Taup Win Api 3 07.12.2012 09:36
VK API Furyon JavaScript, Ajax 0 15.05.2011 17:44