1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhouaini528-exchanges-php

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_CN.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 04:57 f392ea9

Данный SDK в настоящее время поддерживает только REST-запросы, WebSocket пока не поддерживается, но будет добавлен позже.

Поддерживаются дополнительные параметры запроса More:

$exchanges->setOptions([
    // Устанавливаем время ожидания ответа, по умолчанию 60 секунд
    'timeout'=>10,

    // https://github.com/guzzle/guzzle
    'proxy'=>[],

    // https://www.php.net/manual/en/book.curl.php
    'curl'=>[]
]);

Наличный товар

Торговля по рыночной цене
// binance
// Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'BTCUSDT',
    '_number'=>'0.01',
]);
// Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'symbol'=>'BTCUSDT',
    'type'=>'MARKET',
    'quantity'=>'0.01'
]);

// okex по умолчанию использует v3 интерфейс для отправки
//$exchanges->setPlatform('spot')->setVersion('v5'); // Включаем отправку через v5 интерфейс
// Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'BTC-USDT',
    '_price'=>'10',
]);
// Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'instrument_id'=>'btc-usdt',
    'type'=>'market',
    'notional'=>'10'
]);


// huobi
// Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'btcusdt',
    '_price'=>'10',
]);
// Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'account-id'=>$account_id,
    'symbol'=>'btcusdt',
    'type'=>'buy-market',
    'amount'=>10
]);
Лимитная торговля
//binance
//Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'BTCUSDT',
    '_number'=>'0.01',
    '_price'=>'2000',
]); 
//Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'symbol'=>'BTCUSDT',
    'type'=>'LIMIT',
    'quantity'=>'0.01',
    'price'=>'2000',
    'timeInForce'=>'GTC',
]);

//okex по умолчанию использует v3 интерфейс для отправки
//$exchanges->setPlatform('spot')->setVersion('v5');//Включаем отправку через v5 интерфейс
//Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'BTC-USDT',
    '_number'=>'0.001',
    '_price'=>'2000',
]);
//Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'instrument_id'=>'btc-usdt',
    'price'=>'100',
    'size'=>'0.001'
]);

//huobi
//Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'btcusdt',
    '_number'=>'0.001',
    '_price'=>'2000',
]);
//Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'account-id'=>$account_id,
    'symbol'=>'btcusdt',
    'type'=>'buy-limit',
    'amount'=>'0.001',
    'price'=>'2001'
]);

Фьючерсы

Торговля по рыночной цене
//binance
//Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'BTCUSDT',
    '_number'=>'0.001',
]);
//Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'symbol'=>'BTCUSDT',
    'quantity'=>'0.001',
    'type'=>'MARKET'
]);

//bitmex
//Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'XBTUSD',
    '_number'=>'1',
]);
//Также поддерживаются исходные параметры, которые эквиваленты предыдущим
$exchanges->trader()->buy([
    'symbol'=>'XBTUSD',
    'orderQty'=>'1',
    'ordType'=>'Market'
]);

//okex по умолчанию использует v3 интерфейс для отправки
//$exchanges->setPlatform('future')->setVersion('v5');//Включаем отправку через v5 интерфейс
//Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol'=>'BTC-USD-190628',
    '_number'=>'1',
    '_entry'=>true,//buy=true:открываем длинную позицию  buy=false:закрываем длинную позицию
]);
$exchanges->trader()->sell([
    '_symbol'=>'BTC-USD-190628',
    '_number'=>'1',
    '_entry'=>true,//sell=true:открываем короткую позицию  sell=false:закрываем короткую позицию
]);

//Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'instrument_id'=>'BTC-USD-190628',
    'size'=>1,
    'type'=>1,//1:open long 2:open short 3:close long 4:close short
    //'price'=>2000,
    'leverage'=>10,//10x или 20x leverage
    'match_price' => 1,
    'order_type'=>0
]);

//huobi
$exchanges->trader()->buy([
    '_symbol'=>'ETC191227',
    '_number'=>'1',
    '_entry'=>true,//true:открыть  false:закрыть
]);
//Также поддерживаются исходные параметры, которые эквивалентны предыдущим
$exchanges->trader()->buy([
    'symbol'=>'XRP',//string false "BTC","ETH"...
    'contract_type'=>'quarter',//string false Contract Type ("this_week": "next_week": "quarter":)
    'contract_code'=>'XRP190927',//string false BTC180914
    //'price'=>'0.3',// decimal true Price
    'volume'=>'1',//long true Numbers of orders (amount)
    //'direction'=>'buy',// string  true    Transaction direction
    'offset'=>'open',// string  true    "open", "close"
    'order_price_type'=>'opponent',//"limit", "opponent"
    'lever_rate'=>20//int true Leverage rate [if“Open”is multiple orders in 10 rate, there will be not multiple **Заказы по лимиту цен**
Ограниченные сделки
// Binance
// Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol' => 'BTCUSDT',
    '_number' => '0.001',
    '_price' => '6000'
]);
// Также поддерживается использование исходных параметров, что эквивалентно предыдущему
$exchanges->trader()->buy([
    'symbol' => 'BTCUSDT',
    'quantity' => '0.001',
    'type' => 'LIMIT',
    'price' => '6500',
    'timeInForce' => 'GTC',
]);

// BitMEX
// Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol' => 'XBTUSD',
    '_number' => 1,
    '_price' => 100
]);
// Также поддерживается использование исходных параметров, что эквивалентно предыдущему
$exchanges->trader()->buy([
    'symbol' => 'XBTUSD',
    'price' => 100,
    'orderQty' => 1,
    'ordType' => 'Limit',
]);

// OKEX (по умолчанию используется интерфейс V3 для отправки)
//$exchanges->setPlatform('future')->setVersion('v5'); // Включение интерфейса V5 для отправки
// Отправка унифицированных параметров
$exchanges->trader()->buy([
    '_symbol' => 'BTC-USD-190628',
    '_number' => 1,
    '_price' => 2000,
    '_entry' => true, // buy = true: открытие длинной позиции, buy = false: закрытие длинной позиции
]);
// Также поддерживается использование исходных параметров, что эквивалентно предыдущему
$exchanges->trader()->buy([
    'instrument_id' => 'BTC-USD-190628',
    'size' => 1,
    'type' => 1, // 1: открытие длинной позиции 2: открытие короткой позиции 3: закрытие длинной позиции 4: закрытие короткой позиции
    'price' => 2000,
    'leverage' => 10, // 10x или 20x кредитное плечо
    'match_price' => 0,
    'order_type' => 0,
]);


// Huobi
$exchanges->trader()->buy([
    '_symbol' => 'XRP190927',
    '_number' => 1,
    '_price' => 0.3,
    '_entry' => true, // true: открытие, false: закрытие
]);
// Также поддерживается использование исходных параметров, что эквивалентно предыдущему
$exchanges->trader()->buy([
    'symbol' => 'XRP', // строка false "BTC", "ETH" ...
    'contract_type' => 'quarter', // строка false Contract Type ("this_week": "next_week": "quarter":)
    'contract_code' => 'XRP190927', // строка  false   BTC180914
    'price' => 0.3, // десятичное число true Price
    'volume' => 1, // длинное истинное количество заказов (сумма)
    // 'direction' => 'buy', // строка  true Transaction direction
    'offset' => 'open', // строка  true    "open", "close"
    'order_price_type' => 'limit', // "limit", "opponent"
    'lever_rate' => 20, // int true Leverage rate [если «Open» — это несколько заказов в 10 раз, то не будет нескольких заказов в 20 раз]
]);

Запрос заказов

// Binance
$exchanges->trader()->show([
    '_symbol' => 'BTCUSDT',
    '_order_id' => '324314658',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);

// Bitmex
$exchanges->trader()->show([
    '_symbol' => 'XBTUSD',
    '_order_id' => '7d03ac2a-b24d-f48c-95f4-2628e6411927',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);

// OKEx (по умолчанию используется интерфейс V3 для отправки)
//$exchanges->setPlatform('spot')->setVersion('v5'); // Включение интерфейса V5 для отправки
$exchanges->trader()->show([
    '_symbol' => 'BTC-USDT',
    '_order_id' => '2671215997495296',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);
$exchanges->trader()->show([
    '_symbol' => 'BTC-USD-190927',
    '_order_id' => '2671566274710528',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);
$exchanges->trader()->show([
    '_symbol' => 'BTC-USD-SWAP',
    '_order_id' => '2671566274710528',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);

// Huobi Spot
$exchanges->trader()->show([
    '_order_id' => '29897313869',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);
// Huobi Future
$exchanges->trader()->show([
    '_symbol' => 'XRP190927',
    '_order_id' => '2715696586',
    // '_client_id' => '1bc3e974577a6ad9ce730006eafb5522',
]);

Баланс и информация о позициях

// Binance
// Получение текущей информации об аккаунте.
$exchanges->account()->get();

// BitMex
// Торговая операция
$exchanges->account()->get([
    // Не указано, по умолчанию возвращает все позиции
    // '_symbol' => 'XBTUSD'
]);

// Okex  Spot
// Этот эндпойнт поддерживает получение баланса, доступной суммы/заблокированной суммы токена на спотовом аккаунте.
$exchanges->account()->get([
    '_symbol' => 'BTC',
]);

// Okex Future
// Получить информацию о удерживаемых позициях контракта.
$exchanges->account()->get([
    '_symbol' => 'BTC-USD-190628',
]);

// Okex Swap
$exchanges->account()->get([
    '_symbol' => 'BTC-USD-SWAP',
]);

// Huobi Spot
$exchanges->account()->get([
    '_symbol' => 'btcusdt',
]);

// Huobi Future
$ex exchanges->account()->get([
    '_symbol' => 'BTC190927',
]);

Поддержка более низкоуровневых API-объектов запросов

Рекомендуется сначала ознакомиться с этими ресурсами перед использованием:

Ниже приведён пример вызова API для создания нового ордера на различных биржах через SDK, который уже был упакован на нижнем уровне.

Способ 1: через $exchanges->getPlatform()

// Binance
$exchanges = new Exchanges('binance', $key, $secret);
$exchanges->getPlatform('spot')->trade()->postOrder([
    'symbol' => 'BTCUSDT',
    'side' => 'BUY',
    'type' => 'LIMIT',
    'quantity' => '0.01',
    'price' => '2000',
    'timeInForce' => 'GTC',
]);

$exchanges->getPlatform('future')->trade()->postOrder([
    'symbol' => 'BTCUSDT',
    'side' => 'BUY',
    'type' => 'LIMIT',
    'quantity' => '0.01',
    'price' => '2000',
    'timeInForce' => 'GTC',
]);

// BitMEX
$exchanges = new Exchanges('bitmex', $key, $secret);
$exchanges->getPlatform()->order()->post([
    'symbol' => 'XBTUSD',
    'price' => '100',
    'side' => 'Buy',
    'orderQty' => '1',
    'ordType' => 'Limit',
]);

// OKEx
$exchanges = new ExChanges('okex', $key, $secret);
$exchanges->getPlatform('spot')->order()->post([
    'instrument_id' => 'btc-usdt',
    'side' => 'buy',
    'price' => '100',
    'size' => '0.001',
    //'type'=>'market',
    //'notional'=>'100'
]);
$exchanges->getPlatform('future')->order()->post([
    'instrument_id' => 'btc-usd-190628',
    'type' => '1',
    'price' => '100',
    'size' => '1',
]);
$result = $exchanges->getPlatform('swap')->order()->post([
    'instrument_id' => 'BTC-USD-SWAP',
    'type' => '1',
    'price' => '5000',
    'size' => '1',
]);

// Huobi
$exchanges = new Exchanges('huobi', $key, $secret);
$exchanges->getPlatform('spot')->order()->postPlace([
    'account-id' => $account_id,
    'symbol' => 'btcusdt',
    'type' => 'buy-limit',
    'amount' => '0.001',
    'price' => '100',
]);

$exchanges->getPlatform('future')->contract()->postOrder([
    'symbol' => 'XRP', //string    false   "BTC","ETH"...
    'contract_type' => 'quarter', //   string  false   Contract Type ("this_week": "next_week": "quarter":)
    'contract_code' => 'XRP190927', // string  false   BTC180914
    'price' => '0.3', //   decimal true    Price
    'volume' => '1', //    long    true    Numbers of orders (amount)
    'direction' => 'buy', //   string  true    Transaction direction
    'offset' => 'open', // string  true    "open", "close"
    'order_price_type' => 'limit', //"limit", "opponent"
    'lever_rate' => 20, //int  true    Leverage rate [if“Open”is multiple orders in 10 rate, there will be not multiple orders in 20 rate
    //'client_order_id'=>'', //long  false   Clients fill and maintain themselves, and this time must be greater than last time
]);

Способ 2: напрямую создать экземпляр нижнего уровня обмена

Этот способ эквивалентен способу 1.

//Binance
$binance = new Binance($key, $secret);
$binance->trade()->postOrder([
    'symbol' => 'BTCUSDT',
    'side' => 'BUY',
    'type' => 'LIMIT',
    'quantity' => '0.01',
    'price' => '2000',
    'timeInForce' => 'GTC',
]);

$binance=new BinanceFuture($key,$secret);
$binance->trade()->postOrder([
    'symbol'=>'BTCUSDT',
    'side'=>'BUY',
    'type'=>'LIMIT',
    'quantity'=>'0.01',
    'price'=>'2000',
    'timeInForce'=>'GTC',
]);


//BitMEX
$bitmex = new Bitmex($key, $secret);
$bitmex->order()->post([
    'symbol' => 'XBTUSD',
    'price' => '100',
    'side' => 'Buy',
    'orderQty' => '1',
    'ordType' => 'Limit',
]);


//OKEx
$okex = new OkexSpot($key, $secret, $passphrase);
$okex->order()->post([
    'instrument_id' => 'btc-usdt',
    'side' => 'buy',
    'price' => '100',
    'size' => '0.001',
    //'type'=>'market',
    //'notional'=>'100'
]);

$okex=new OkexFuture($key,$secret,$passphrase);
$okex->order()->post([
    'instrument_id'=>'btc-usd-190628',
    'type'=>'1',
    'price'=>'100',
    'size'=>'1',
]);

$okex=new OkexSwap($key,$secret,$passphrase);
$okex->order()->post([
    'instrument_id'=>'BTC-USD-SWAP',
    'type'=>'1',
    'price'=>'5000',
    'size'=>'1',
]);


//Huobi
$huobi = new HuobiSpot($key, $secret);
$huobi->order()->postPlace([
    'account-id'=>$account_id,
    'symbol'=>'btcusdt',
    'type'=>'buy-limit',
    'amount'=>'0.001',
    'price'=>'100',
]);

$huobi=new HuobiFuture($key,$secret);
$huobi->contract()->postOrder([
    'symbol'=>'XRP',//string    false   "BTC","ETH"...
    'contract_type'=>'quarter',//   string  false   Contract Type ("this_week": "next_week": "quarter":)

    'contract_code'=>'XRP190927',// string  false   BTC180914
    'price'=>'0.3',//   decimal true    Price
    'volume'=>'1',//    long    true    Numbers of orders (amount)
    'direction'=>'buy',//   string  true    Transaction direction
    'offset'=>'open',// string  true    "open", "close"
    'order_price_type'=>'limit',//"limit", "opponent"
    'lever_rate'=>20,//int  true    Leverage rate [if“Open”is multiple orders in 10 rate, there will be not multiple orders in 20 rate
    //'client_order_id'=>'',//long  false   Clients fill and maintain themselves, and this time must be greater than last time
]);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zhouaini528-exchanges-php.git
git@api.gitlife.ru:oschina-mirror/zhouaini528-exchanges-php.git
oschina-mirror
zhouaini528-exchanges-php
zhouaini528-exchanges-php
master