Криптобиржа




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

59 Comments

  1. Scop

    Добрый день! Можете список доступных криптобирж выложить?

    Reply ↓
  2. Kupinov

    Да. разместил в конце описания.

    Скрытый текст
    Reply ↓
  3. miavolas

    Очень интересная задумка

    Reply ↓
  4. Kupinov

    Спасибо

    Reply ↓
  5. user965650

    Возможно ли отправлять баланс и дополнительные данные черед телеграмм клиент?

    Reply ↓
  6. Kupinov

    Да. Фоновое задание периодически опрашивает баланс и в случаи изменения отправляет Вам на телеграмм. В настройках это все есть. Можно отправлять RSI или результат выполнения ордера.

    Reply ↓
  7. Kupinov

    Да еще есть обратная реакция. т.е Вы можете запросить баланс через телеграмм. через встроенный телеграмм бот. Для это нужно указать токен бота телеграмм.

    Reply ↓
  8. Kupinov

    Добрый день. Zavsom я готов помочь Вам в освоении программы. Прошу Вас связаться с мной по указанными в программе контактными данными.

    Reply ↓
  9. Alesya19

    Хорошая программа. +

    Reply ↓
  10. zavsom

    на любой запрос к любой бирже пишет

    [-][Network Error] binance {«code»:-1021,»msg»:»Timestamp for this request is outside of the recvWindow.»}

    Reply ↓
  11. Kupinov

    Сегодня подготовлю подробную инструкцию как начать работать с программой. Спасибо за подсказку.

    Reply ↓
  12. chernyshova_darya

    Заинтересовала публикация, хотелось бы узнать принципы управления капиталом (Money Management) которые автор пробовал при практическом использовании.

    Reply ↓
  13. chernyshova_darya

    А еще картинки «приплюснутые»

    Reply ↓
  14. Kupinov

    Начало работы с программой. Описание.

    http://3dot14.ru/index.php?newsid=1144

    Reply ↓
  15. Kupinov

    Разместил информацию о начале работы.

    Краткая информация

    1. Создать запись в справочнике — Учетная запись.

    1.0 Придумать название

    1.1 Указать название биржи. — для связи по API

    1.2 API данные нужны для приватной информации.

    1.3 логин пароль не обязательно. Программа их не использует

    2. Проверить работу через отчет Биржа

    Если нет ошибки — значит работает. Иначе выведет сообщение что указанно не так.

    Пустой отчет баланс указывает что денег на аккаунте нет.

    3. Если получу от Вас сообщение буду высылать обновление. Или проведу презентацию.

    Reply ↓
  16. Kupinov

    Исправил синхронизацию в времени

    Reply ↓
  17. Kupinov

    Исправил.

    Некоторые биржи требуют синхронизации времени.

    Reply ↓
  18. Kupinov

    (18)Могу оперативно оказать помощь. Жду контакта на телеграмм Izofen74

    Reply ↓
  19. Kupinov

    Подготовил инструкцию. или отпишите мне на телеграмм Izofen74. Сделаем чтобы работало.

    Reply ↓
  20. Kupinov

    Внедрял несколько стратегий торговли типа купил продал. Отрабатывал сигналы продажи по формулам RSI и мувинг. Интересная стратегия на разнице цены покупки и продажи. Сделал внутрибиржевой арбитраж. это когда цепочка из купли-продажи в итоге заканчивается положительным результатом. Например Если купить Ену потом Доллар будет дешевле чем сразу Доллар. А если этот Доллар продать обратно, то можно остаться в плюсе. Программа искала такие пары и зарабатывала. Применять можно и для приема средств с сайта и продавать услуги через интернет. Разрабатывать информационных телеграмм ботов и многое другое.

    Reply ↓
  21. Kupinov

    (14)Главное они есть.

    Reply ↓
  22. Master1CT

    Можно учитывать поступление денежных средств (За оказанные услуги) через Вашу программу.

    Reply ↓
  23. Master1CT

    т.е наша организация продает услуги и за криптовалюту. Хотелось бы проверять поступление средств и вести учет в разрезе каждого контрагента.

    Reply ↓
  24. Kupinov

    Увы. такой функции нет.

    Reply ↓
  25. zavsom

    вроде баланс стал показывать правильно!

    Reply ↓
  26. Неопределено

    2 года назад писал для себя конфу, играющую на разницах в курсах между тремя парами на ёбите. Она следила за появлением выгодных для меня ордеров и успешно их находила, но я упёрся в то что http запросы из 1с выполняются слишком медленно для такой игры. В итоге пока мои ордера размещались, они уже становились неактуальными.

    Reply ↓
  27. Kupinov

    (26) Отлично. Всегда готов помочь.

    Reply ↓
  28. Kupinov

    (27) Есть такая проблема. Но это не 1С не успевала, а биржа не проводила операцию т.к. накручивала сделки. Это можно рассчитать и постоянно мониторить эту пару. Если есть желание до можно добиться успеха.

    Reply ↓
  29. user1227204

    Отличная программа работает как часы. Без лагов, очень понравился расширенный функционал.

    Reply ↓
  30. Kupinov

    (30) Но это друг написал.

    Reply ↓
  31. zavsom

    а как получит доступ к исходникам скриптов на пхп?

    Reply ↓
  32. Kupinov

    (32) При условии что будите использовать только Вы вышлю. В л.с. жду вашего контакта.

    Reply ↓
  33. zavsom

    И еще, посмотрел код документа Робот лесенка — а как он работает? один раз выставил ордера и все? не вижу цикла выставления ордеров

    Reply ↓
  34. Kupinov

    Этот документ не идет по циклу. А делает одну операцию купли-продажи. Для работы по циклу нужны рассчитать условия Когда создавать новый ордер если цена падает?, Как рассчитывать объем второй покупки? Если у Вас есть тактика я готов ее воплотить и отдать Вам.

    Reply ↓
  35. zavsom

    и, потом, телеграмм же заблокирован в России. Поэтому только по почте, она в личке указана в нашей переписке тут на ресурсе. Я понял, это не совсем Робот — это просто документ создающий два ордера на покупку и на продажу — а нет такого чтоб реализовать: «стратегия На импульсах

    Суть: покупать криптовалюту при снижении курса, продавать при росте.

    Эта стратегия торговли на бирже криптовалют кажется простой. Трейдеру необходимо неотрывно следить за изменением цены, чтобы ловить скачки курса. Сделки создаются “по тренду” — ордера на покупку открываются при снижении курса, на продажу — при повышении.

    Надо чтоб документ сам отслеживал непрерывно изменение цены на бирже и либо выставлял ордер на продажу, либо на покупку. При этом если цена продолжает падать, он бы снова продавал, а если растет , то закупался бы с заданным шагом-объемом. Т.е. продаем на падении по капельки и покупаем на подъеме по капельки.

    и это скорее всего не документ, а обработка в которой бы непрерывно шло считывание цены по инструменту, и , в зависимости от заданного шага и направления тренда выставлялись бы ордера, причем тут надо понимать еще и фактор стремительного падения цены — тогда надо закрывать не отработанные ордера и превыставлять новые.

    Reply ↓
  36. zavsom

    Алгоритм обработки примерно такой для неарбитражной сделки: скачиваем цену по выбранному инструменту конкретной биржи, момент времени = 0, (скачка первый раз), момент времени >0 , тогда анализ с предыдущей ценой, определяем направление тренда — Если + тогда выставляем ордер на закуп, Если — то на продажу.

    ну а дальше можно усложнять — после третьего или четвертого скачивания цены определять тренд или по перым двум , ну и открывать или не открывать , а напротив закрывать не отработанные ордера.

    Reply ↓
  37. zavsom

    Далее уже можно приступать к арбитражным роботам — для этого надо использовать параметр Комиссия биржи при сделке с инструментом и отслеживать разность между спредом и комиссиями на разных биржах.

    Reply ↓
  38. ogidni

    Думаю необходимо реализовать шифрацию Секретных ключей средствами Capicom итп.

    А то так можно без битков остаться.

    И цену бы скинуть до 1 sm на момент бета-теста.

    Reply ↓
  39. Kupinov

    (37)Решение простое. Сегодня внесу изменения и Вышлю Вам.

    Reply ↓
  40. Kupinov

    (39) Предложение хорошее. Но сайт работает на Linux, Есть Capicom на Linux? Установлю SSL-шифрование на сайте.

    Reply ↓
  41. Kupinov

    (37)

    + тогда выставляем ордер на закуп

    Я правильно понял Если цена растет выставляем ордер на закуп? Вроде по мини малке надо покупать?

    Reply ↓
  42. Kupinov

    (37) Наверно надо учитывать тренд по последним 14 замерам Вниз Вниз Вниз Верх Тогда закуп или сразу учитывать RSI? Я могу получить свечи на текущий период и по ним рассчитать вход?

    Reply ↓
  43. zavsom

    (42) совершенно верно — если начала падать — продаем, с целью поймать локальный излом и закупиться гораздо ниже — например разбирем сегодняшний день падения «инструмента» на бинансе BTC/USDT падение шло все утро с 8600 до 7780 , если б мы лесенкой выставляли ордера, скажем от 25% баланса, то мы бы продали весь наш кошелек примерно по 8500, а потом откупились бы по 7800.

    Reply ↓
  44. zavsom

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

    Reply ↓
  45. Kupinov

    (45)Буду стараться

    Reply ↓
  46. Kupinov

    (44) Я уже исправил программу и Выслал Вам обновления. Сейчас тестирую как он выставляет. Спасибо за консультацию.

    Reply ↓
  47. zavsom

    ошибка:

    Баланс = ex_Стандартный.ПолучитьБаланс (СсылкаБиржи,apiKey,secret);

    ТекстСообщения = «»;

    СтрокаВывода = «Валюта, free, used, total»+Символы.ПС;

    ТекстСообщения = ТекстСообщения + СтрокаВывода;

    СтрокаВывода = «————————————«;

    ТекстСообщения = ТекстСообщения + СтрокаВывода;

    МассивСообщений = Новый Массив ();

    Для Каждого Элемент Из Баланс Цикл

    видимо с той же задержкой чтения баланса связана — там пауза нужна

    Пишет Итератор для значения не определен

    &НаСервере

    Процедура ПолучатьБалансАвтоматом (УчетнаяЗапись) Экспорт

    возвращает пустое значение при нажатии на кнопку регламентное задание

    Reply ↓
  48. Kupinov

    Процедура ПолучатьБалансАвтоматом (УчетнаяЗапись) Экспорт

    Я использую для отправки баланса в телеграмм. За определенный промежуток времени идет опрос баланса. Потом значения сравниваются с отправленным ранее. Если произошло изменение, то информация отправляется. Процедура запускается по регламентному заданию. Рекомендуется что бы конфигурация работала совместно с SQL.

    Reply ↓
  49. Kupinov

    (48)

    Процедура ПолучатьБалансАвтоматом (УчетнаяЗапись) Экспорт

    Спасибо за замечание. Прошу Вас указать с какой биржей было проблема с балансом. На моей стороне повторить такое не получается.

    Reply ↓
  50. Kupinov

    (48)

    Пишет Итератор для значения не определен

    Я внесу изменения которые показывают код ошибки.

    Reply ↓
  51. zavsom

    binance — я с ней работаю в основном, так как она первая из бирж, позволяющая шортить — сейчас офигенно на падении получилось

    Reply ↓
  52. zavsom

    вроде все работает — ордера создаются и снимаются — спасибо

    Reply ↓
  53. user1252341

    Открыта новая эра 1С и Криптавалюта. Надо успеть подхватить это знамя.

    Reply ↓
  54. KupinovLP

    Я провела замеры относительно арбитража. Делала замеры на нескольких биржах и в разное время. С разной начальной валютой. Можно сказать что арбитраж работает на всех биржах. Конечно его пытаются быстро перехватить. Но можно успеть заработать от 100$ за одну ночь. Главное отработать систему и выбрать оптимальный вариант.

    Reply ↓
  55. Kontakt

    как идет доработка криптобиржи?

    Reply ↓
  56. Kupinov

    Отлично. Добавил вход по RSI. Проверку стратегии по свечам закрытия. Демо режим волны — Когда закупок нет и цена выставляется от проверки стоимости. Изменил интефейс что бы было понятно что покупаем и продаем. И по мелочи Добавил шаблоны рассылок баланс, показатели RSI.

    Reply ↓
  57. user1303162

    Здравствуйте!

    Хочу попросить доработать конфигурацию для учета инвестиций в хайпы, если интересно, дайте контакт куда писать, @Izofen74 контакт в телеге не найден(

    Reply ↓
  58. Kupinov

    Добрый день. Мой контакт в телеграмм @Izofen.

    Прошу Вас сообщить где указан неправильный контакт.

    Reply ↓
  59. Kupinov

    На всякий случай завел @Izofen74. Теперь будет два контакта пишите куда Вам будет удобно.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *