Это уже далеко не первый случай, который нам известен.
В прошлом году лидерами по привлечению клиентов на брокерское обслуживание стали Сбербанк и Тинькофф.
Но, мало привлечь клиентов, нужно ещё их удержать. А это можно сделать только хорошим сервисом. Для этого много не нужно. Нужно лишь своевременно помогать клиентам решать их проблемы (качественно отвечать на вопросы) и вовремя делать обновление ПО.
Брокер Сбербанк использует торговый терминал QUIK версии 7.19. Это очень устаревшая версия.
Актуальная версия, на сегодня, уже 7.27.
История версий:
https://arqatech.com/ru/support/files/quik-workstation/
В каждой следующей версии ПО разработчик добавляет новый функционал и исправляет найденные недостатки.
Поэтому всегда желательно использовать актуальное ПО. Это касается не только конкретного терминала QUIK.
--Массив с Тикерами, добавьте нужные тикеры aTickerList = {"MSNG", "GAZP", "LKOH", "SIBN", "GMKN","ROSN", "SBER", "TATN", "NVTK", "IRAO", "RSTI", "SBERP", "PHOR", "SNGS", "TRNFP", "VTBR", "FEES", "MVID", "RASP", "MFON", "AFLT", "MAGN", "ALRS", "MTSS", "MOEX", "RTKM", "MGNT", "NLMK", "SNGSP", "CHMF", "MTLR", "HYDR", "MFON", "RSTI", "PLZL", "BANEP", "POLY" }; --Функция поиска цены function fGetPrice(sTickerName, sNum) --Поключаемся к источнику данных local ds=CreateDataSource("TQBR", sTickerName, INTERVAL_D1); while (Error=="" or Error == nil) and ds:Size() ==0 do sleep(10) end; if Error ~="" and Error ~=nil then message("Error: "..Error, 1) end; local sSize=ds:Size(); local sCurrentPrice=ds:O(sSize); local sCurrentDate=tostring(os.date("%d.%m.%Y %H:%M", os.time())); --Вычисляем дату неделю назад local dt7 = os.date("*t"); dt7.day = dt7.day - 8; --Вычисляем дату 2 недели назад local dt14 = os.date("*t"); dt14.day = dt14.day - 15; --Получаем день, месяц и год свечи неделю назад local sLastDayWeek7=tonumber(os.date("%d", os.time(dt7))); local sLastMonthWeek7=tonumber(os.date("%m", os.time(dt7))); local sLastYearWeek7=tonumber(os.date("%Y", os.time(dt7))); --Получаем день, месяц и год свечи 2 недели назад local sLastDayWeek14=tonumber(os.date("%d", os.time(dt14))); local sLastMonthWeek14=tonumber(os.date("%m", os.time(dt14))); local sLastYearWeek14=tonumber(os.date("%Y", os.time(dt14))); local sFullTimeP=""; local sLastWeekPrice7=0; local sLastWeekPrice14=0; --Пробегаемся по 30 крайним дневным свечам массива for i=sSize-30, sSize-1 do --Получаем день, месяц и год свечи sTempDay=tonumber(os.date("%d", os.time(ds:T(i)))); sTempMonth=tonumber(os.date("%m", os.time(ds:T(i)))); sTempYear=tonumber(os.date("%Y", os.time(ds:T(i)))); --Дата свечи совпадает с датой неделю назад if sTempDay==sLastDayWeek7 and sTempMonth==sLastMonthWeek7 and sTempYear==sLastYearWeek7 then --Берем цену закрытия свечи sLastWeekPrice7=ds:C(i); end; --Дата свечи совпадает с датой 2 недели назад if sTempDay==sLastDayWeek14 and sTempMonth==sLastMonthWeek14 and sTempYear==sLastYearWeek14 then --Берем цену закрытия свечи sLastWeekPrice14=ds:C(i); end; end; --Вычисляем проценты local sPrc7=math.floor((100-((sLastWeekPrice7*100)/sCurrentPrice))*100)/100; local sPrc14=math.floor((100-((sLastWeekPrice14*100)/sCurrentPrice))*100)/100; --Заполняем таблицу значениями SetCell(t_id, sNum, 0, tostring(sTickerName)); SetCell(t_id, sNum, 1, tostring(sCurrentPrice),sCurrentPrice); SetCell(t_id, sNum, 2, tostring(sLastWeekPrice7),sLastWeekPrice7); SetCell(t_id, sNum, 3, tostring(sLastWeekPrice14),sLastWeekPrice14); SetCell(t_id, sNum, 4, tostring(sPrc7),sPrc7); SetCell(t_id, sNum, 5, tostring(sPrc14),sPrc14); --Текущая цена больше цены прошлой недели - раскрашиваем зеленым if sCurrentPrice>sLastWeekPrice7 then fGreen(sNum); end; --Текущая цена меньше цены прошлой недели - раскрашиваем красным if sCurrentPrice<sLastWeekPrice7 then fRed(sNum); end; --Текущая цена больше цены прошлой недели и цена прошлой недели больше цены позапрошлой недели --раскрашиваем желтым if sCurrentPrice>sLastWeekPrice7 and sLastWeekPrice7>sLastWeekPrice14 then fYellow(sNum); end; end; --- Функция создает таблицу function CreateTable() -- Получает доступный id для создания t_id = AllocTable(); -- Добавляет 6 колонок AddColumn(t_id, 0, "Тикер", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 1, "Сегодня", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 2, "Неделя", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 3, "2 Недели", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 4, "Неделя (%)", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 5, "2 Недели (%)", true, QTABLE_INT_TYPE, 15); -- Создаем t = CreateWindow(t_id); -- Даем заголовок SetWindowCaption(t_id, "7 Days"); -- Добавляем строки for k,v in pairs(aTickerList) do InsertRow(t_id, k); end; end; --- Функции раскрашивают ячейки таблицы function fRed(col) SetColor(t_id, col, -1, RGB(255,168,164), RGB(0,0,0), RGB(255,168,164), RGB(0,0,0)); end; function fGreen(col) SetColor(t_id, col, -1, RGB(157,241,163), RGB(0,0,0), RGB(157,241,163), RGB(0,0,0)); end; function fYellow(col) SetColor(t_id, col, -1, RGB(249,247,172), RGB(0,0,0), RGB(249,247,172), RGB(0,0,0)); end; --Основная функция function main() -- Создаем таблицу CreateTable(); --Пробегаемся по массиву тикеров for k,v in pairs(aTickerList) do fGetPrice(v, k); end; end;как выглядит в квике:
- Цена инструмента превысила 100 рублей за акцию
- Цена инструмента превысила максимум цен за последние 10 свечей
- Цена инструмента пробила вверх (вниз) скользящую среднюю
- Цена инструмента превысила верхнюю линию канала Боллинджера
- Потеряно соединение с брокером
- Текущее время больше чем 12:00:00
- Сегодня пятница и через 10 минут завершится торговый день
- Три (четыре, пять, восемь или пятнадцать) скользящих средних выстроились в порядке возрастания (убывания) их периодов
- Все четыре индикатора RSI, построенных с разными периодами, выше 70
- Спред между базовым активом и фьючерсом на него превысил (или стал меньше) требуемой величины
- Индекс РТС отклонился на большее чем задано расстояние от рассчитанного индекса его составляющих по фьючерсам
- Цена вошла в облако Ишимоку и стохастик меньше (больше, равен) заданного значения
- Прибыль клиентского портфеля превысила 10000 рублей
- Стоимость портфеля более 300 000 рублей
- За последние 5 свечей Газпром вырос на большее количество процентов, чем Роснефть (или индекс РТС)
- Квадратный корень из цены индекса РТС минус натуральный логарифм лучшей цены предложения фьючерса на Сбербанк превышает сумму предложений Газпрома на величину цены вчерашнего закрытия акции Уралкалия минус квадратный корень из индекса ММВБ
- И все остальное, на что у Вас хватает фантазии