На главную > Блог > Категория > 🐘 PHP в трейдинге: технический анализ, боты и интеграция с биржами
Когда говорят о языках для трейдинга, первыми вспоминают Python, C++ и JavaScript. PHP редко упоминают в этом ряду. И зря. PHP — это не только «язык для сайтов». В нём есть мощное расширение trader (обёртка над легендарной TA-Lib), которое предоставляет десятки технических индикаторов «из коробки»[citation:1][citation:3]. Более того, PHP активно используется для:
В этой статье я расскажу, как установить и использовать расширение trader, какие есть пакеты для работы с биржами, и покажу примеры кода — от расчёта RSI до отправки ордера.
«PHP не пытается быть самым быстрым языком для HFT. Но для 90% задач трейдера-разработчика его скорости и экосистемы более чем достаточно».
Главное преимущество PHP в трейдинге — расширение trader. Это обёртка над знаменитой библиотекой TA-Lib, которая содержит более 100 технических индикаторов и функций распознавания свечных паттернов[citation:1][citation:3].
# Для Linux / macOS
pecl install trader
# Для Windows — скачайте .dll с PECL и добавьте в php.ini
composer require lupecode/php-trader-native. Скорость ниже, но для небольших проектов подойдёт.
После установки расширения функции trader доступны глобально. Вот примеры расчёта самых популярных индикаторов.
<?php
$closePrices = [67400, 67850, 68000, 67500, 68200];
$period = 3;
$sma = trader_sma($closePrices, $period);
print_r($sma); // [67900, ...]
?>
<?php
$closePrices = [67400, 67850, 68000, 67500, 68200, 68300, 68100];
$period = 14;
$rsi = trader_rsi($closePrices, $period);
echo $rsi ? "RSI = " . implode(", ", $rsi) : "Недостаточно данных";
?>
<?php
$closePrices = [/* массив цен */];
list($macd, $signal, $histogram) = trader_macd($closePrices, 12, 26, 9);
echo "MACD: " . implode(", ", array_slice($macd, -5));
echo "Signal: " . implode(", ", array_slice($signal, -5));
echo "Histogram: " . implode(", ", array_slice($histogram, -5));
?>
<?php
$closePrices = [/* массив цен */];
$period = 20;
$deviations = 2;
list($upper, $middle, $lower) = trader_bbands($closePrices, $period, $deviations, $deviations, MA_TYPE_SMA);
echo "Верхняя: " . implode(", ", $upper);
echo "Средняя: " . implode(", ", $middle);
echo "Нижняя: " . implode(", ", $lower);
?>
<?php
$open = [/* массив цен открытия */];
$high = [/* массив максимумов */];
$low = [/* массив минимумов */];
$close = [/* массив цен закрытия */];
$pattern = trader_cdlengulfing($open, $high, $low, $close);
// $pattern: 100 — бычье поглощение, -100 — медвежье, 0 — нет паттерна
?>
timirey/trader-php предоставляет объектно-ориентированный интерфейс для всех функций trader[citation:3]. Установка: composer require timirey/trader-php.
PHP не обделён библиотеками для работы с API криптобирж. Рассмотрим несколько вариантов.
Пакет tigusigalpa/bingx-php предоставляет полную поддержку BingX Swap V2 API[citation:8]:
<?php
require __DIR__ . '/vendor/autoload.php';
use Tigusigalpa\BingX\BingxClient;
use Tigusigalpa\BingX\Http\BaseHttpClient;
$apiKey = 'YOUR_API_KEY';
$apiSecret = 'YOUR_API_SECRET';
$baseUri = 'https://open-api.bingx.com';
$http = new BaseHttpClient($apiKey, $apiSecret, $baseUri);
$bingx = new BingxClient($http);
// Получение цены
$price = $bingx->market()->getLatestPrice('BTC-USDT');
echo "BTC/USDT: $price\n";
// Покупка на споте (рыночный ордер)
$order = $bingx->trade()->spotMarketBuy('BTC-USDT', 0.001);
print_r($order);
// Фьючерсный лонг с плечом 10х
$order = $bingx->trade()->futuresLongMarket('BTC-USDT', 100, 10);
?>
Пакет smartguycodes/laravel-smart-trading включает[citation:4]:
# Обучение модели
php artisan smart-trading:train --samples=5000
# Запуск бота
php artisan smart-trading:run my_bot --symbol=BTC/USDT
Напишем простого бота, который раз в минуту запрашивает цену с Binance, рассчитывает RSI и генерирует сигнал.
<?php
// trading_bot.php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use LupeCode\phpTraderInterface\Trader; // обёртка для функций trader
class SimpleBot
{
private $http;
private $priceHistory = [];
private $rsiPeriod = 14;
public function __construct()
{
$this->http = new Client(['base_uri' => 'https://api.binance.com']);
}
public function fetchPrice()
{
$response = $this->http->get('/api/v3/ticker/price', [
'query' => ['symbol' => 'BTCUSDT']
]);
$data = json_decode($response->getBody(), true);
return (float)$data['price'];
}
public function updatePriceHistory($price)
{
$this->priceHistory[] = $price;
if (count($this->priceHistory) > $this->rsiPeriod + 5) {
array_shift($this->priceHistory);
}
}
public function getSignal()
{
if (count($this->priceHistory) < $this->rsiPeriod + 1) {
return null;
}
$rsi = trader_rsi($this->priceHistory, $this->rsiPeriod);
$lastRsi = end($rsi);
if ($lastRsi < 30) {
return 'BUY (oversold)';
} elseif ($lastRsi > 70) {
return 'SELL (overbought)';
}
return 'HOLD';
}
public function run()
{
echo "Бот запущен...\n";
while (true) {
try {
$price = $this->fetchPrice();
$this->updatePriceHistory($price);
$signal = $this->getSignal();
if ($signal && $signal !== 'HOLD') {
echo date('Y-m-d H:i:s') . " - Цена: $price - Сигнал: $signal\n";
}
sleep(60); // ждём 60 секунд
} catch (Exception $e) {
echo "Ошибка: " . $e->getMessage() . "\n";
sleep(10);
}
}
}
}
$bot = new SimpleBot();
$bot->run();
?>
| Плюсы ✅ | Минусы ❌ |
|---|---|
| Низкий порог входа — PHP прост в изучении, огромное сообщество и документация[citation:9]. | Скорость — PHP медленнее C++ и Go, не подходит для HFT[citation:9]. |
| Готовое расширение trader — более 100 индикаторов и свечных паттернов[citation:1][citation:3]. | Проблемы с real-time — для потоковых данных WebSocket требуется дополнительная инфраструктура (например, ReactPHP)[citation:5]. |
| Быстрое прототипирование — можно собрать MVP за пару часов[citation:5]. | Меньше библиотек для ML — по сравнению с Python[citation:4]. |
| Отличная экосистема для веб-интерфейсов — Laravel, Symfony, админ-панели для управления ботами[citation:4][citation:8]. | Репутация «несерьёзного» языка в мире HFT[citation:5]. |
PHP не получил широкого распространения в трейдинге не потому, что он «плохой», а потому что индустрия исторически ориентировалась на Python и C++. Однако расширение trader делает PHP одним из самых удобных языков для расчёта технических индикаторов. А в связке с Laravel и библиотеками для работы с API бирж вы получаете готовую экосистему для создания торговых приложений любого уровня сложности.
Начните с установки расширения trader и вычислите RSI для любимой криптовалюты. Затем добавьте интеграцию с биржей через готовый SDK. Постепенно наращивайте функционал: веб-интерфейс, журнал сделок, уведомления. Через месяц у вас будет собственная торговая система, написанная на знакомом языке.
И помните: даже самый быстрый язык не спасёт от плохой стратегии. Начните с качественного анализа данных и риск-менеджмента, а язык подберите под свою задачу. PHP — достойный кандидат для многих из них.
«PHP в трейдинге — как швейцарский нож: не самый острый, не самый быстрый, но всегда под рукой и в нужный момент выручает».
Дата размещения статьи: 2026-06-02T16:02:21