Криптобиржа




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2024-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 не будет опубликован. Обязательные поля помечены *