nikolz (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 48 49 50 51 52 53 54 55 56 57 58 ... 81 След.
Что делает SetEmptyCallback() ?
 
Цитата
Владимир написал:
На самом деле Вам не надо вызывать 1529*8=12232 раза
так как список Ваших инструментов грузится при старте и отображается в  текущей таблице.
У Вас будет проблема со скоростью вашего железа.
Но полагаю , если Вы торгуете по 1529 инструментам, то у вас железо должно быть очень крутое.
На рынке халявы нет и на плохом железе нечего делать с таким количеством тикиров.
Что делает SetEmptyCallback() ?
 
естественно, длина программы не зависит от числа инструментов.
Что делает SetEmptyCallback() ?
 
Цитата
Владимир написал:
Ах ты засранец!  

Ну, начнём с того, что тикеров у меня не 4, а на сегодняшний момент 1529, и их состав немного "плавает", и код скрипта это, разумеется, никак не затрагивает. Интервалов у меня тоже вдвое больше - мелкие свечи я считаю сам, но они ведь тоже должны где-то храниться и далее обрабатываться по общему алгоритму..

Теперь инициализация: что делает хреновина вида "ds[tikers[j][1]]=ds[tikers[j][1]] or {}" я не знаю, да и знать не хочу. Для меня не подлежит сомнению, что обращение к данным тикера должно быть по его айдишке (его порядковому номеру в таблице), а уже в полях этой таблицы должен лежать и код тикера, и код класса, его валюта, статус, количество закупленных лотов, размер лота и вся прочая хрень. В том числе, одно из этих полей должно содержать информацию о свечах по разным таймфреймам: младшую часть я инициализирую и поддерживаю в актуальном состоянии сам, а вот вторая половина должна получать её как раз через CreateDataSource. Итак, мне предлагается при старте вызвать эту конструкцию 1529*8=12232 раза, а уж опосля... впрочем, что-то мне подсказывает, что никакого "опосля" уже не будет - на этом скрипт и сдохнет. ::

Теперь насчёт Size: СКОЛЬКО свечей она мне даст по каждому интервалу? Повторяю: мне нужна ОДНА, последняя. Ну, для страховки, ДВЕ. А эта падла сколько их туда насуёт? И, насколько я понимаю, будет всё время дописывать? Или даже и дописывать не будет?

Нет, я не понимаю: Вы ВСЕРЬЁЗ предлагаете подобную хрень реализовать или прикалываетесь?
Реализуется это примерно так.
Надо читать с сервера самый мелкий интервал.
Долее на каждый  тик будет примерно 10 операторов
Считаем всегда последнюю. Сохраняем столько , сколько надо.
Если надо одну то в архиве будет всегда одна на каждый инструмент и одна - открытая
Что делает SetEmptyCallback() ?
 
Цитата
BlaZed написал:
Владимир, Не ожидал  :: Тут же даже кулинарить нечего, все и так очевидно  

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

Вопрос то у вас в чем?
вообще-то Вы ошибаетесь
Свеча - это четыре индикатора цены и один объема.
Т е для любого интервала надо считать close,Low, High, Volume.
Просто Выдернуть не получится .
---------------------
Open - это первая свеча после открытия интервала
High и Low - это локальные экстремумы на данном интервале
Value - сумма значений на интервале
Close - это последняя сделка перед закрытием интервала.
-------------------
На мало ликвидном рынке надо учитывать тот факт, что на интервале может не быть сделок вообще.
---------------------  
А теперь все это для различных интервалов и множества инструментов.
Когда писал это чудо.
Попробуйте написать.
-------------------------------
Полагаю, что вопрос в этом.
Индикатор Lua
 
Цитата
Незнайка написал:
Цитата
Незнайка написал:
упаковать значения в две таблицы, а потом объединить их

Но есть косяк: если функции могут возвращать nil, то unpack работает криво.
Когда таблица сразу заполняется при создании, то распаковывается нормально:
Код
     local  G  =  { 1 ,  2 ,  nil ,  4 ,  nil ,  6 }
   return   print (unpack(G))   -->  1       2       nil     4       nil     6   

А когда значения дописываются после, то работает криво
Код
   local  G  =  { 1 ,  2 ,  nil }
G[ 4 ]  =   4 
G[ 5 ]  =   nil 
G[ 6 ]  =   6 
 print (unpack(G))    -->   1       2       nil     4   
не ставьте перед переменными local.
они будут глобальными
в первой функции считаете 4 параметра  которые изначально не определены
во второй функции считаете следующие 4 параметра
при выводе просто перечисляете их
например так :
-----------------------------
function fun1(k)
x1=k+1;
x2=k+2;
x3=k+3;
x4=k+4;
end
------------------------------
function fun2(k)
x5=k+5;
x6=k+6;
x7=k+7;
x8=k+8;
end
----------------------------
function onCalculate(i)
....
fun1(i);
fun2(i);
return x1,x2,x3,x4,x5,x6,x7,x8;
end
APC в колбеках QLUA
 
Предлагаю для скриптов LUA реализовать:
1) колбеки QLUA в виде asynchronous procedure call (APC)для потока main;
2) в одном скрипте создавать несколько потоков и с помощью APC распределять по ним обработку данных из терминала КВИК.
Расширить список функций обратного вызова
 
Вы может сами добавить сколько хотите функций обратного вызова.
Динамическое количество линий индикатора
 
Цитата
Nikolay написал:
Нет, линии не обязательны конечно. Просто старые значения не должны исчезнуть с графика, поэтому вывод линий, пусть даже и одной, должен учитывать это.
вообще-то пересчет графиков взад - это бессмысленная затея.
---------------------------------------------------
"После драки -кулаками не машут"
Расширить список функций обратного вызова
 
Цитата
TGB написал:
Цитата
_sk_ написал:
Добавить функцию обратного вызова OnTimer(), которая будет вызываться терминалом с некоторой периодичностью

 В данном комментарии выложен модуль работы с таймерными событиями в отдельном потоке и шаблон его использования.
----
API работы с таймерными событиями:
1) Start_Timer()  -  запуск отдельного  потока обработки таймерных событий.
2) <Ключ события> = Set_Timer  (
{<Имя события>, <Интервал в млсек.>, <Функция обработки события>,{<Список парвметров функции>}} )    - запрос таймерного события.
Через <Интервал в млсек.> будет запущена в отдельном потоке <Функция обработки события> со <Списоком парвметров функции>.
3) delete_Timer (<Ключ события>) – удаление при необходимости запрошенного собы-тия.
----
Модуль и две dll (service53.dll и service54.dll) , скачанные по ссылке:
https://cloud.mail.ru/public/i3Y7/kQHBvs7um   необходимо положить в папку хранения info.exe.
---
Модуль OnTimer (для QLua 5.3 и 5.4):
Код
   -- Модуль таймерных событий OnTimer --- 
     -- Подключение C-пакетов service53, service54: https://cloud.mail.ru/public/i3Y7/kQHBvs7um 
 local  WorkingFolder  =   getWorkingFolder ()   
package.cpath  =  package.cpath  ..   ';'   ..  WorkingFolder  ..   '\\?.dll'   ..   ';'   ..  WorkingFolder  ..   '\\?53.dll'  ..   ';'   ..  WorkingFolder  ..   '\\?54.dll'   ..   ';'   ..  WorkingFolder  ..   '\\?51.dll' 
                             ..   ';'   ..  WorkingFolder  ..   '\\?3.dll'        -- C - пакеты  ---- 
 if  _VERSION  =  =   'Lua 5.3'   then    
     require ( 'service53' )      -- Подключает библиотеку service.dll, расположенную в корневом каталоге терминала QUIK (там где info.exe)   ---- 
 else 
     require ( 'service54' )  
 end    
 local  GetMilliseconds, Start_thread   =    service.GetMilliseconds, service.Start_thread

   --- Функции работы с очередями  --- 
     local  new   =     function   ()
         return   {first   =     1  , last   =     0  }
     end  
     --- 
     local  push   =     function   (self, v)
         local   last   =   self.last   +    1  
        self[last]   =   v
        self.last   =   last
         return   last
     end  
     --- 
     local  pop   =     function   (self)
        local   first   =   self.first
        if   first   >   self.last   then     return     nil     end  
        local   v   =   self [first]
       self.first   =   first  +   1  
       self[first]   =     nil  
        return   v, first
      end  
 --------- Создание очереди ------ 
  local   Queue_Timer  =  new()   --- Таймерные события ----- 
  local   Queue_Timer_Sl  =  new()   --- Очередь отмены событий --- 
 ------------------------------------------- 
     --- Заказ таймерных событий ---- 
     --- Таймерное событие:  {<Имя события>, <Интервал в млсек.>, <Функция обработки события>,{<Список парвметров функции>}} 
     local   function  Set_Timer  (self)
        if  type(self)  =  =   'table'   then  
          if   # self  >  =   3   then 
             self [ 2 ]  =  self [ 2 ]  +  GetMilliseconds() 
               return  push (Queue_Timer, self)
          else 
             message  (  '!!! Ошибка. Должно быть:  {<Имя события>, <Интервал в млсек.>, <Функция обработки события>,{<Список парвметров функции>}}' ) 
          end 
       else 
          message  (  '!!! Ошибка (параметр не таблица). Должно быть:  {<Имя события>, <Интервал в млсек.>, <Функция обработки события>,{<Список парвметров функции>}}' ) 
       end 
     end  
    ----- 
     local   function  delete_Timer  (kl)
       push (Queue_Timer_Sl, kl)
     end  
     ------ 
     local   function  Timer ()
        local  ms, first_q 
        while  IsRun    do  
             ---  Обработка удалений событий --- 
            ms, first_q  =  pop (Queue_Timer_Sl) 
             while  ms   do 
              if  Queue_Timer [ms]  then  Queue_Timer [ms]  =   nil   end 
            ms, first_q  =  pop (Queue_Timer_Sl)    
          end 
          ---  Чтение очереди заказанных событий[ -----    
           for  k, v  in  next, Queue_Timer  do 
             if  type(k)  =  =   'number'   then 
                 if  v [ 2 ]  <  =  GetMilliseconds()    then 
                   Queue_Timer [k]  =   nil 
                         if  v[ 4 ]  then 
                           pcall ( v[ 3 ], table.unpack (v[ 4 ]))
                   else 
                     pcall ( v[ 3 ])   -- функция без параметров --- 
                   end 
                end 
             end 
               end 
          ------------------------------------------------------- 
             sleep ( 2 )      
        end 
     end  
 --------------------------------------- 
     local   function  Start_Timer ()
     Start_thread (Timer)
     end 
   ------ 
   return  {Set_Timer  =  Set_Timer, delete_Timer  =  delete_Timer, Start_Timer  =  Start_Timer }
  

---------------------------------------------

Шаблон использования модуля:
Код
   -- Шаблон использования модуля таймерных событий 
 local  OnTi mer  =   require ( 'OnTimer' )   -- Подключение модуля обработки таймерных событий  --- 
 local  Set_Timer  =  OnTimer.Set_Timer
 local  delete_Timer  =  OnTimer.delete_Timer
 local  Start_Timer  =  OnTimer.Start_Timer

IsRun  =   true 

     local   function  call_Timer  (kl)
         message  (  'call_Timer = '   ..  kl)
     end  
   
     local   function  call_Timer1  ()
         message  (  'call_Timer1  () ==============' )
     end  

 function   main ()
    Start_Timer()
    local  kl
     --- Заказ таймерных событий ---- 
     --- Таймерное событие:  {<Имя события>, <Интервал в млсек.>, <Функция обработки события>,{<Список парвметров функции>}} 
   kl  =  Set_Timer({'Set_Timer',  100 , call_Timer, { 100 }})
   kl  =  Set_Timer({'Set_Timer',  1000 , call_Timer, { 1000 }})
   kl  =  Set_Timer({'Set_Timer',  5000 , call_Timer, { 5000 }})
   kl  =  Set_Timer({'Set_Timer',  3000 , call_Timer1})
 --   delete_Timer (kl) 
   
     ------------------- 
     while  IsRun  do  
   
        ----  Обработка в main остального ----- 
       kl  =  Set_Timer({'Set_Timer',  1000 , call_Timer, { 1000 }})
        delete_Timer (kl)
        ----  Конец Обработка в main остального ----- 
         sleep ( 500 )        
   end 
   ------------------ 
 end    
   
 function   OnStop ()
     IsRun  =   false 
     DestroyTable (TableQUIK)
      DestroyTable (TableQUIK1)
     return   10000     --  !!  По истечении этого интервала времени (в млсек.), данного скрипту на завершение работы, функция main() завершается принудительно.  
                                 -- При этом возможна потеря системных ресурсов.   ! Если функция не выдает значение, то по умолчанию оно 5000 (5 сек.) 
 end 
  
Попробуйте использовать таймеры ожидания (таймеры ядра)
Такое решение и проще и лучше. Не надо создавать новые потоки.
Квант таймера 0.1  мкс.
Программирование гораздо проще, чем ваша скатерть-самобранка.
Торговые роботы
 
Цитата
Алексей написал:
Уважаемые форумчане, добрый день.
Подскажите, пожалуйста, контакты хорошего программиста, который сможет за недорого написать торгового робота на заказ по предоставленному алгоритму для работы в QUIK.
Благодарю. ))
Могу за недорого доказать,
что робот по Вашему алгоритму
сольет Ваш депозит в реальных торгах.
синхронизация функции main и колбеков
 
сделал библиотеку на луа для работы с системными событиями.
Если надо, стучите.
Можно ли сделать линии индикатора невидимыми?
 
напишите свои индикаторы и выводите вместо их значения nil
А если они невидимые то зачем из выводить на график?
синхронизация функции main и колбеков
 
sleep позволяет усыпить main не менее чем на 1 ms что примерно в 50 раз больше времени активации main колбеком.
Но чтобы ядро не грело воздух зря, надо ставить sleep на 100 ms.
А это уже в 5000 раз больше времени активации main.
---------------------
кроме того, интервал прихода информации с сервера брокера составляет примерно 70 ms (у меня)
Поэтому при sleep 100 ms может не только пропускать колбеки, но и создать затор поступающей информации с торгов.
т е легко получить тормознутый робот.
------------------
синхронизация функции main и колбеков
 
При этом запуск теста на загрузке процессора отражается слабо (я особо  не заметил). загрузка процессора в среднем 10%.
синхронизация функции main и колбеков
 
В предыдущем тесте в вычислении времени включено время преобразования значений счетчиков в строку
Поэтому время немного завышено
Вот показания лог файла чистой задержки активации main колбеком:
....
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,37,0
31>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,0
22>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,38,0
23>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,39,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,40,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,41,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,42,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,0
23>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,44,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,45,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,47,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,48,0
33>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,49,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,50,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,52,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,53,0
20>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,54,0
21>0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,55,0
28>0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,55,0
...
Т е это время менее 30 мкс .
синхронизация функции main и колбеков
 
Полагаю , что останов функции main c помощью sleep неудачное решение разработчиков.
--------------------------------
Сам использую останов потока системным событием Event.
Неоднократно предлагал разработчикам реализовать останов потока системным событием Event.
Но воз и ныне там.
------------------------------
Чтобы показать наглядно эффективность предлагаемого способа реализовал следующий тест.
-----------------------
Во всех колбеках поставил счетчик вызова и старт таймера.
В функции main поставил  останов таймера и запись  в лог счетчиков событий всех колбеков и прошедшее время с момента вызова очередного колбека.
----------------------
Вот фрагмент лог файла:
...
93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95846,0
83>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95847,0
90>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95848,0
129>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15785,95848,0
110>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95848,0
261>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0
431>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0
88>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95851,0
85>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95852,0
131>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15787,95852,0
113>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95852,0
162>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95853,0
91>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95854,0
93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95854,0
294>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95855,0
....
На первой позиции время в микросекундах, прошедшее с момента вызова терминалом колбека до момента активации потока main скрипта.
далее через запятую счетчики вызова колбеков.
--------------------------------------------
Как видно из лог файла это время составляет примерно 100 мкс (компьютер слабый, WIN XP).  
--------------------------
Получается, что использование функции sleep либо приведет к постоянной активации потока и бесполезной загрузки ядра,
либо к пропуску завершения работы колбеков.
Обе ситуации плохо.
Переустановка терминала QUICK в случае поломки компьютера, сохранение старых настроек при повторной установке QUICK
 
Цитата
Инесса написал:
Здравствуйте.
Сломался компьютер, поменяли жёсткий диск. Сохранилась на флэшке резервная копия QUICK  давностью полтора года  с ключами.
Как правильно переустановить терминал чтобы в нём были мои ПОСЛЕДНИЕ (недельной/месячной давности) настройки?
Можно ли это вообще каким-то образом сделать?
Если я просто копирую с этой флэшки и запускаю терминал, он имеет настройки полуторагодичной давности (время создания этой резервной флэшки). Может просто потом обновить терминал до текущей версии и появятся мои последние настройки?
Или скачать дистрибутив с сайта ВТБ и потом как-то прописать там старые ключи?
Или есть ещё способ восстановить собственные настройки терминала?
Если этот вопрос уже где-то рассматривался, киньте ссылкой, пожалуйста.
увы, никак.
Отменить цикличность появления сообщения
 
Цитата
Олег написал:
Небольшая корректировка: сейчас в коде прописано  sleep (20000) , то есть сообщение появляется раз в 20 секунд.
в цикле читайте системное время и вычисляйте требуемый интервал
при его наступлении выводите сообщение. Таким образом получите интервал от 1 секунды до 100 лет.
Еще один вопрос про потоки
 
Цитата
Владимир написал:
nikolz, Лапуль, Ваша информационная ценность для меня просто РАВНА нулю. Ну, расскажите, коль неймётся, как Вы будете получать дневные, недельные и месячные свечи - посмеёмся...

Владимир,
Вообще-то это Вы льете крокодильи слезы про ужас со свечами.
У меня нет проблем
Не хотите помощи, нет проблем.
Полагаю Вам надо лишь ля-ля.
Успехов в словесном поносе на форуме.
 
Еще один вопрос про потоки
 
Цитата
Владимир написал:
Anton, Я догадываюсь - я же не первый год программирую.  :: Но сути это не меняет: это по-прежнему простенькая прикладная задача и по-прежнему с поганым языком и поганым интерфейсом. Но функциональность по-прежнему ДОСТАТОЧНАЯ для организации торговли. Что до "внешних длл по дизайну" - а зачем они нужны? Дизайн на таблицах Квика и всяких там SetTableNotificationCallback более, чем удовлетворительный - хрен такой получишь от этих внешних длл! А роботу, по большому счёту, это вообще не нужно. Только вот со свечами какой-то тихий ужас творится.
Я Вам уже предлагал выше. Напишите конкретно что у вас за ужас со свечами.  (проще задачи не бывает)
Я Вам расскажу как решить Ваш ужас.
 
Перемещение заявки 2 транзакциями
 
поясню про быстрее.
Биржевая информация о сделках поступает простым клиентам с задержкой примерно 0.1 секунды.
Компьютер обработает ее и отправит заявку примерно через 0.01 сек  
Поэтому, если хотите быстрее, то используйте выделенный сервер в дата центре брокера.
Будет до 100 быстрее.
Еще один вопрос про потоки
 
Цитата
Виталий написал:
Цитата
nikolz написал:
В итоге каждый колбек пишет принимаемые им данные в свой массив
А функция main лишь читает эти данные.
Синхронизировать колбек и main нет надобности,
так как если колбек изменил данные, то main на следующем цикле их увидет.
У меня меин в блокировке ждет данных периодических...в этот момент колбеки вызывают функциии другие. Но стек то получается один и надо его синхронизировать.
я решил проблему через системные события и мапинг файлы.  В результате я могу данные из колбеков использовать в любых других скриптах т е потоках а не только в main данного скрипта.
Чтобы стеки не пересекались  определяю все данные как локальные для соответствующего потока.  
Еще один вопрос про потоки
 
В итоге каждый колбек пишет принимаемые им данные в свой массив
А функция main лишь читает эти данные.
Синхронизировать колбек и main нет надобности,
так как если колбек изменил данные, то main на следующем цикле их увидет.
Еще один вопрос про потоки
 
Цитата
Виталий написал:
Известно, что функция main и колбэки (напр. OnTransReply) выполняются в разных потоках. Далее к проекту подключена с++ либа и функции из нее вызываются как и из функции main так и из колбэков. Далее, я понимаю механику следующим образом:
- Функция main и колбэки отправляют в с++ либу разные lua_state, и поэтому в данном случае обращение к ним из либы в принципе не может пересечься  поэтому потокобезопасно.
- А вот разные колбэки сами по себе отправляют в либу одно и тоже lua_state и поэтому работа с ними в либе уже требует синхронизации.

Правильно ли я понял механизм?
Проблема синхронизации потоков  не связана с исполняемым кодом, а связана с записью данных .
--------------------
Из своего опыта:
Особенностью работы с биржевыми данными является то, что всегда можно организовать данные так,
чтобы запись в  конкретный массив (вектор) делалась лишь одним потоком, а читались данные всеми другими.
Так как данные поступают асинхронно, то в такой реализации синхронизировать ничего не надо.
Проблем не возникает.
Перемещение заявки 2 транзакциями
 
Цитата
Незнайка написал:
Цитата
Андрей написал:
ошибки типа данный инструмент запрещен в шорт
 
Цитата
Андрей написал:
Сделайте вторую версию sendTransaction, которая бы не проверяла подобные локальные условия. Чтобы можно было вызывать 2 транзакции сразу друг за другом.
Вы не подумали, что первая заявка может исполниться, пока транзакция на её снятие дойдёт до биржи?
Тогда, при исполнении второй заявки, получится как раз шорт.
А это нарушение. Брокер будет вынужден закрывать ваш шорт принудительно.

Цитата
Игорь М написал:
вам нужен прямой доступ на биржу
А кто в этом случае контролирует лимиты?Никаких нарушений не возникнет
Не парьтесь никаких нарушений не возникнет.
На бирже торгуете не Вы, а брокер.
Поэтому не важно будет шорт или нет.
У брокера достаточно средств клиентов и бумаг клиентов  для покрытия всех его ( т е его клиентов) сделок
За достаточностью средств у брокера следит биржа .
Неправильное исполнение тейк-стопа, Брокер Сбер наглым образом нарушает исполнение стоп-ордеров
 
А чтобы клиенты не наезжали на брокера, брокер в регламенте честно указывает:
мол сделаю как получится и когда смогу.
Неправильное исполнение тейк-стопа, Брокер Сбер наглым образом нарушает исполнение стоп-ордеров
 
Цитата
Олег написал:
Коллеги!
Подскажите как бороться с наглым Сбером, который неправильно исполняет стоп-заявки.
У меня была выставлена стоп-заявка №305 019 117 на продажу акций Акрон по цене 6600, с отступом 2 и защитным спредом 6.

27.07.21 произошел скачек стоимости акций до 7000. Но моя заявка была реализована по цене 6028, что на 240 рублей ниже покупки.

Стор-ордер был выставлен именно с защитным спредом, а не "по рынку". Если бы в момент исполнения стоп-ордера на рынке не было бы предложения по цене 6600+2-6, то должен был остаться открытым и не исполненным ордер на продажу по цене 6596 и до предложения на рынке он должен был остаться не исполненным.
Так как в Сбер-онлайн отключили возможность написать жалобу, а в чате оператору ни чего нельзя объяснить, пришлось писать в группы Сбера в соцсетях, но хоть так приняли жалобу и даже присвоили ей входящий номер. К стати, это фишка только Сбера не принимать на сайте жалобы :-(

В ответ получаю вот такую отписку:
--------------------------------------------------
Решение:  У банка отсутствуют основания для выплаты компенсации денежных средств.  Заявка от 05.07.2021 на продажу Акций исполнена банком согласно выставленных Вами условий.  Банк регулярно контролирует показатель текущей очереди входящих звонков в службу поддержки. Однако в силу того, что количество поступающих телефонных обращений в некоторых ситуациях не поддаются точному прогнозу, оперативно сократить при данных обстоятельствах время ожидания клиента до показателя штатного режима не всегда представляется возможным. Банк проводит мероприятия для исключения подобных проблем в будущем, в том числе путем увеличения штатной численности службы поддержки.  Задать интересующие Вас вопросы Вы можете в приложении СберБанк Онлайн в разделе «Диалоги» или в профиле «Связь с банком», а также в мобильном приложении СберБанк Инвестор / СберИнвестор.  Информация о инвестиционно-брокерском обслуживании размещена на официальном сайте банка в разделе «Инвестиции».  За консультацией Вы также можете обращаться в подразделения банка, осуществляющие брокерское обслуживание. Адреса, телефоны и режим работы офисов брокерского обслуживания размещены на интернет-сайте банка в разделе «Инвестиции» - «Брокерское обслуживание» - «Контакты»:  Приносим извинения за неудобства.   Основание принятого решения:   Порядок и условия, на которых Банк предоставляет физическим лицам брокерские услуги на рынке ценных бумаг, биржевом валютном рынке и срочном рынке, предусмотренные Федеральным законом «О рынке ценных бумаг» от 22.04.1996 № 39-ФЗ, а также иные сопутствующие услуги определяются Условиями предоставления брокерских и иных услуг ПАО Сбербанк (далее - Условия).  Текст Условий размещён на официальном сайте банка в сети Интернет в разделе «Инвестиции» - «Брокерское обслуживание» - «Документы»[1].  Заявка «Тэйк-профит» – это заявка с условием вида «исполнить при ухудшении цены на заданную величину от достигнутого максимума (на продажу) или минимума (на покупку)». Заявка работает следующим образом (пример для заявки на продажу): после достижения ценой последней сделки условия стоп-цены начинается определение максимума цены последней сделки. Если цена последней сделки снижается от максимума на величину, превышающую установленный «отступ», то создается лимитированная заявка с ценой, меньшей цены последней сделки на величину «защитного спрэда».  ----------------------------------------------  Дальше куча воды.  Может мне специалисты по Квику объяснят как в таком случае должна исполняться заявка? И зачем нужен защитный спред, если брокер как хочет, так ее и исполняет?  С уважением, Олег.  
Попробую пояснить про стоп-заяви.
Стоп-заявка - это отложенная отправка заявки клиента
При срабатывании условия заявка не будет исполнена а будет отправлена на исполнение на сервер биржи.
Поэтому фактическое исполнение стоп-заявки зависит от многих условий.
Так как стоп-заявка как правило исполняется у многих клиентов и в моменты резкого движения цены, то в итоге получается длинная очередь на отправку этой заявки с сервера биржи
и длинная очередь на исполнение этой заявки на сервере биржи
----------------
В итоге Вы всегда получите результат хуже, чем Вы мечтаете.
Нехватка видеопамяти
 
Цитата
TGB написал:
Цитата
nikolz написал:
пора бы усвоить что халява - она и есть халява.Во-первых, весь квик - это официально бесплатный продукт.
   Это вам так брокеры рассказывают, но при этом в ваших комиссиях брокеру незримо сидит некий процент отчисления за QUIK.
Так что за QUIK пользователь платит и ARQA материально зависит от пользователей.
Это так в регламенте брокера указано и Вы с ним согласны и подписываете с ним договор.
-------------------------
что сидит там незримо, то в суде не докажите.
-----------------------
А бесплатность услуги исключает ответственность за ее качество.
------------------------  
Можете сколько угодно  жаловаться на ошибки на форуме.
-----------------------  
Для всех посетителей форума писанина на QUIK это хобби с желанием на халяву срубить бабло.
---------------------------------
Для разработчиков - это ежедневная работа , а не хобби. Поэтому они делают то, за что им брокеры платят.
--------------------
Вы платите деньги брокерам. Вот и жалуйтесь брокерам на ошибки в софте.
Только при претензиях от них разработчики будут исправлять ошибки.
---------------------
А на жалобы от халявщиков  всегда будут лишь отписки и милостыня.  
Тестирование стратегий, Возможность тестирования
 
Цитата
BlaZed написал:
Цитата
Egor Zaytsev написал:
Добрый день.

Если делать склейки инструментов при экспирации? Данные будут склеиваться, правда имя инструмента будет новое, но исторические данные получить сможете.
Или такой вариант не удобен?
Такой вариант очень неудобен.

Может все же рассмотрите озвученное мной предложение?

Каждый при желании может написать свой тестер стратегий.
Но на данный момент нет возможности получить доступ к историческим данным, однако исторические данные у многих имеются в папке archives терминала.
Разве не логично бы было дать способ доступа к ним?
Все не так уж сумрачно вблизи...
Рассказываю свой опыт:
---------------------
Вариант 1:
1)  Изучаем Lua
2) Берем  редактор текста Scite. Этот редактор написан на LUA и на нем легко запускать на исполнение скрипты на LUA
3) Исторические данные за любой период и с любым таймом качаем с сайта финам  или выводим  из терминала КВИК в файлы
4) Пишем  свой тестер на ЛУА в Scite и тестируем свои стратегии сколько душе угодно и на любой истории.
-------------------------
Вариант 2:
Пишем для терминала КВИК индикатор и в не вставляем режим тестирования и оптимизации
Тестируем на данных, которые в КВИК.
------------------------
Вариант 3:
1) Берем пакет R, так как это бесплатно.Изучаем его язык.
2) Пишем скрипт который скачивает историю с бесплатных сайтов котировок
3) Пишем свой тестировщик в R используя любые библиотеки обработки big data.
-----------------
Вариант 4:
Используем бесплатный сервер в облаке и делаем все на нем.
=================  
Это лучше и быстрее, чем канючить халяву на этом форуме.
Нехватка видеопамяти
 
Цитата
Владимир написал:
Предлагаю радикальное решение проблемы.

Насколько я понимаю, существует некий "регламент работы с клиентами", который обязывает реагировать на замечания и предложения участников форума, но не обязывает их исправлять - достаточно стандартной отписки: "Ваше предложение зарегистрировано", после чего проблема как бы закрыта, и следующее аналогичное или даже тождественное предложение начинает жить своей жизнью, и так по кругу. Мало того: сами сотрудники техподдержки не помнят (или делают вид, что не помнят), что данное предложение уже подавалось. А нужно бы изменить регламент примерно так:
1. Заводится страничка, в которой сидит таблица со всеми предложениями, пронумерованными, прошнурованными, столбцы которое примерно такие:
а) Порядковый номер предложения
б) Автор (ник)
в) Дата подачи предложения (и ссылка на него)
г) Содержание предложения (лучше в "приглаженной" форме, убирая эмоции, если они там есть)
д) Решение по предложению
е) Причина отклонения либо предполагаемая дата реализации
ж) Дата фактической реализации либо причина, по которой предложение не было реализовано.

Собрать такую страничку не так уж сложно - например, я сам могу не полениться и денька три посидеть в сообщениях сотруждников техподдержки и вытащить оттуда все посты о регистрации. Да, в конце концов, могу даже у себя на сайте такую таблицу сварганить! И я считаю, что подобное действие в состоянии серьёзно изменить отношения к пожеланиям пользователей: регламент - штука СТРРРРАШНАЯ!

Ну как, господа из техподдержки - регистрируем моё предложение? ::  
Немного прикольно читать это.
..надцать лет использую QUIK и все надцать лет одно и тоже завывание от пользователей. Особенно начинающих .
---------------------
пора бы усвоить что халява - она и есть халява.
Во-первых, весь квик - это официально бесплатный продукт.
QLUA - это все лишь библиотека.
Как все бесплатное - все это применяется пользователями как есть, c приключениями на свою ж...у.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
В качестве справки:
Для тестирования  скорости обработки колбеков с использованием Event
Делаю вот такой тест: (настройку скрипта опускаю)
----------------
function main()
while true  do
mat.waitEv(Event);
t=mat.Stop();
messege(tostring(t));
end
---------------
function OnParam(class,sec)
if class=="SPBFUT" and sec=="SRU1" then
tbid=getParamEx(class,sec,"bid")
mat.wr(fout,tbid.param_image));
mat.setEv(Event);
end
---------------------------------
Суть теста следующая
поток main остановлен и не потребляет процессор пока не произойдет прерывание  колбека
------------------------
В колбеке стартует таймер, пишется в map-file параметр и сбрасывается Event.
----------------------------
При этом запускается поток main и в нем останавливается таймер  и выводится время реакции потока на колбек.
--------------------
В итоге  запаздывание реакции потока main на колбек не более 20 микросекунд.  
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
nikolz, Спасибо, родной - советы ОТ ВАС поистине бесценны! ::

1. Плевать мне на индикаторы - у меня их нет, не было, и не будет.

2. У меня нет выбранных интервалов - я считаю ПО ВСЕМ интервалам сразу. Минимальный интервал у меня 15 секунд, и недельные, скажем, свечи оттуда не получить никак, не говоря уже про "пару-тройку арифметических операций".

3. Многопоточность действительно "реализуется сравнительно просто" - я много раз это делал. А вот "каждый скрипт - это отдельный поток" - это кретинизм. У меня был, есть и будет ОДИН скрипт на все случаи жизни.

4. Я писал и буду писать только на Lua - токо вот питонов здесь не хватало!
Если хотите могу показать как  оттуда получить свечи и реализовать  "пару-тройку арифметических операций".
Для этого покажите код где вы работаете со свечами в 15 секунд.
----------------
Относительно других языков я написал Вам для примера.  
Не хотите изучать английский - говорите а Англии на русском. или по словарю. Это Ваши проблемы.
Спасение утопающих-дело рук самих утопающих.
Только непонятно, что Вы на форуме  сопли размазали .
Нехватка видеопамяти
 
не знал, что на форуме есть телепаты.
Пример торгового робота, Помощь с торговым роботом
 
Специально для чайников объясняю:
--------------------
1)  отличие LUA от языка для метатрейда (mql)  в том, что для луа есть не только подробная инструкция но и куча учебников .
----------------------
2) справка по qlua - это справочник библиотеки , а не описания языка. Как всякий справочник он предполагает, что Вы изучили язык программирования LUA и умеете писать на нем программ.
---------------------------
3) Создание роботов это вообще не про qLua или Lua, а про умение создавать алгоритмы конечных автоматов, которые автоматизируют некоторые рутинные действия
------------------------
4) Создание робота , который не сливает счет а даже приносит прибыль - это вообще не про то, что Выше, а про знание рынков и возможно ИИ.
------------------------------  
Поэтому для получения бабла с рынка изучайте все 4 указанных выше пункта и не ищите халяву.  
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
TGB, Да как же не жаловаться? Для меня в своё время было просто шоком узнать, что интерпретируемый код способен подвесить Квик! "Как системщик я должен понимать", что этого не может быть потому, что не может быть никогда! И мне противно писать свои "компенсаторы" на системные глюки. Я знаю некоторые места: например, при ручной торговле через скрипт Квик иногда подвисает, потому как я подаю заявку прямо из обработчика событий меню - всё никак руки не доходят перенести это дело в мейн. У меня на OnStop стыдно смотреть - у меня там и лог, и дамп состояния, и закрытие таблиц, и чёрта лысого только нет. А что делать? Я не знаю, и знать не хочу, почему в таблицах иногда пропадает текст - слава богу, научился лечить. Но это всё НЕ МОИ ПРОБЛЕМЫ, блин! Кроме того, есть вещи, которые я в принципе не могу сделать сам - не могу вот достучаться программно до своего портфеля. Техподдержка говорила, что таблица "клиентский портфель" недоступна вообще никак - во радость! Осталась надежда, что смогу прочитать хотя бы "позиции по инструментам", да и то слабая. А свечи? Это же уму непостижимо! Мне нужно порядка 20 тысяч свечей - и что делать? Ладно, "мелочь" я считаю сам, но более тяжёлые (от 15 минут и выше) хочу получать с сервера. И что, прикажете 7-8 тысяч графиков заказывать? На каждую сраную свечу свой график? Да здесь не то что "не обеспечена более-менее надежная среда разработки и исполнения скриптов" - здесь вообще ничего не обеспечено. Но торговать (с ужимками и прыжками) всё-таки можно - и на том спасибо!
Попробую дать несколько советов утопающим:
-------------------------
Если пишите робота в индикаторе, то Вы получаете примерно каждый тик вне зависимости от выбранного интервала
Поэтому можете сформировать свечи с любым интервалом затрачивая примерно один условный оператор и пару-тройку арифметических операций на каждый из интервалов  для получения текущей свечи
т е если Ваш индикатор работает на интервале 1 минута, то все остальные выше 1 минуты можете сформировать сами ничего дополнительно не заказывая.  
------------------------------
Если работаете в скриптах, то проблема решается аналогично. Заказывайте лишь младший интервал. остальные считаете с затратой два-три оператора на интервал на свечу.
-----------------------------
многопоточность реализуется сравнительно просто.
каждый скрипт - это отдельный поток.
делаете на каждый колбек свой скрипт и получаете много много потоков
В каждом колбеке сохраняете данные в мап файле и получаете доступ к данным этого скрипта  из других скриптов.
-----------------------
Таким способом можете строить своего робота на питоне либо Luajit.
Перерывы в торговых сессиях, реализация в скрипте
 
Цитата
ddonny написал:
Добрый день.

Собственно вопрос в теме.
Поскольку некоторые таблицы возвращают nil  в перерывах, есть ли оптимальные варианты не прерывать работу скрипта, но без sleep?
Насколько sleep актуален и безопасен, если к примеру просто вычислять время в системе и за минуту до перерыва просто засыпать?

Может быть у кого-то иначе реализован этот момент, при условии "не делать ничего руками" - просто автоматизация.
Использую  системные объекты   Event  и функцию waiteEvent для ожидания вызова колбека  терминалом квика.
В перерывах  сообщений нет, поэтому  и колбеки не освобождают Event, а  скрипт находится в состоянии останова до появления события.
Халявы нет.
Нехватка видеопамяти
 
Цитата
s_mike@rambler.ru написал:
Цитата
Roman Azarov написал:
   s_mike@rambler.ru, здравствуйте!

К сожалению, при переходе по предоставленной ссылке получаем сообщение от сервера об отсутствии доступа к директории.
Просьба предоставить корректную ссылку или уточнить, что имеется в виду под "активной" работой с метками.
О каком количестве меток идет речь?
Странно.

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


Это скрипт, который выводит профиль рынка.

он выводит много меток на график. За предыдущие дни (за каждый день) он выводит 50-100 меток (addlabel) и оставляет их в покое. Текущий день обрабатывается путем начального вывода тей же сотни меток и их перестановок при помощи replacelabel

При этом количество выставленных меток в течение дня (практически) не увеличивается, а количество свободной видеопамяти уменьшается.

Тест, который продемонстрирует проблему, может выглядеть так:

выставляем 100 меток посредством createlabel и потом раз в секунду заменяем первую на вторую, вторую на третью и так по кругу. Наблюдаем и удивляемся.


----

дополнительно, не относящееся к теме ремарка. Очень жаль, что bmp метки терминал может взять только из файла, и нет возможности передать картинку напрямую по памяти, минуя диск. львиная часть затрат мощности при активной работе с метками идет на бесполезную последовательность конверирование растра в бмп формат -> запись файла -> чтение файла -> раскодировка файла в растр.

Понятно, что не сделаете, но я все же "зарегистрируйте, пообещайте".  Булычев в свое время думал об этом, но не надумал, как выясняется.
ну и зачем эта перепалка с разработчиками?
----------------------------------------------------------
спасение утопающих - дело рук самих утопающих.
Прочесть таблицу новости через LUA
 
Цитата
Владимир написал:
   s_mike@rambler.ru,  Лапуль, про ассемблер я не только слышал, но и писал аж на ТРЁХ ассемблерах (БЭСМ, PDP и Intel). И на Васике тоже доводилось писать. Для справки: тип integer в любом ассемблере был, есть и будет ВСЕГДА! Это как раз наоборот, типа float нам когда-то не было - он появился позже, [тогда ещё] отдельным сопроцессором и со своей системой команд. Вот sql действительно не использовал никогда - я чуть не всю свою сознательную жизнь занимался сложными базами данных, и моя давняя фраза на эту тему звучит так: "Базы данных могут быть либо сложными либо реляционными, но не тем и другим одновременно". И тыщу раз говорил, что за "слабую типитзацию" руки-ноги бы повыдёргивал тем умникам, которые выродили эту бредятину.

Nikolay, ЧАВО?! Во-первых, В МОИХ базах данных, как правило, ОДНА таблица (неоднородных кортежей).  :: Во-вторых, какое отношение имеет открытие таблицы к визуализации? ТТТ - это ХРАНЕНИЕ данных в терминале, а никакая не "визуализация". И доступ к ней как раз "ракообразный", через getParamEx, а не getItem, скажем. Разумного объяснения сему факту лично я найти не могу. Привязка же доступа к графикам - это КРЕТИНИЗМ! АДНАЗНАЧНА!
добавлю свою ложку...
тип float в ассемблере существует всегда и он не зависит от наличия сопроцессора.
Типы вводятся в язык по причине необходимости работать с ними.
float - это способ хранить числа в большем диапазоне значений
с экономией памяти, но с допустимой погрешностью.
альтернативой был двоично-десятичный тип  - позволявший точно хранить финансовые данные.
---------------
Но в языках нет понятия "бредятина"
----------------------------------------------------
Если что-то не понятно, то зеркало не виновато.
Отладка QUIK 8.13
 
Цитата
Владимир написал:
Что вы фигнёй маетесь, господа? Я вот тоже "разработал свою систему создания торговых роботов в QUIK", хотя появился здесь (и написал свою первую строчку на Lua) в сентябре прошлого года. Скрипт свой я уже и не помню, когда правил в последний раз. В ём сейчас 16 функций, включая main и прочие OnStop, объём кода менее 20 кило, и на все "версии компилятора, ключи компиляции и режимы линковки" мне давно пилювать с высокой колокольни. Кажется, при запуске скрипта Квик чо-то там компилирует - ну и пусть себе компилирует, а я скармливаю ему чистейший Lua как интерпретатору. Всё прекрасно работает! Сейчас я пишу совсем уж сумасшедший скрипт, уже не с трёхмерными, а с четырёхмерными массивами, с разветвлённым диалогом, и я уже совершенно точно знаю, что и он будет прекрасно работать - я просто не вижу, откуда могут появиться проблемы. Вернее, я пока пишу описание, то бишь набросок ТЗ, и пишу уже не первую неделю - задача АЛГОРИТМИЧЕСКИ сложная, а вот ТЕХНИЧЕСКИЕ вопросы решены уже сейчас. Ну, может, вылезет количество функций и/или объём кода за тридцатник - и чего? А может даже и не вылезет. Нафига вам это надо - не понимаю...

Нет, соврал - парочка нерешённых технических проблем ещё осталась:

1. Мне хотелось бы получать с сервера свечи (от 15-минутных и выше), при этом меня интересуют только последние две свечи по каждому таймфрейму, можно даже без коллбеков - только доступ к этим данным.

2. Я не умею программно прочесть состояние своего портфеля (та табличка, которая зелёненьким цвет текста выводит). Портфель я, ессно, веду у себя, но время от времени случаются сбои и рассогласование содержимого портфеля с точки зрения брокера и самого скрипта. Примерно раз в неделю я это дело проверяю (вручную) и убираю нестыковки. А хотелось бы делать это программно, примерно раз в полчаса. Никто не знает, как это сделать?
"- Всё хорошо, прекрасная маркиза,
Дела идут и жизнь легка.
Ни одного печального сюрприза
За исключением пустяка.
Так, ерунда, пустое дело --
Кобыла ваша околела.
А в остальном, прекрасная маркиза,
Всё хорошо, всё хорошо."
Оптимизация использования памяти QUIK, Оптимизация использования памяти QUIK при работе с Таблицей обезличенных сделок
 
Кроме того, циклы используют даже программы индикаторов разработчиков, что является крайне расточительным и не профессиональным решением для программ реального времени.
Учитесь обходится без циклов в прогах реального времени и будет Вам счастье.
---------------
Применение векторов на C в скриптах на луа сократит требуемый объем памяти и повысит быстродействие в десять и более раз.
Оптимизация использования памяти QUIK, Оптимизация использования памяти QUIK при работе с Таблицей обезличенных сделок
 
Цитата
Albert Eritsyan написал:
Цитата
swerg написал:
 
Цитата
Albert Eritsyan  написал:
Данная опция обеспечит возможность расположения этих файлов на HDD, в то время как программа сама будет находиться на SSD (чтобы не затирать SSD временными большими файлами).
 
Странное желание.
Основное время запуска QUIK (а только это время волнует пользователя) занимает как раз чтение файлов с накопленными данными.
Если у вас нет места на SSD - просто перенесите весь QUIK на HDD. Ну если вы готовы мириться с упавшей от этого скоростью запуска терминала.
Реально, куда больше времени уходит после чтения данных с дисков на синхронизацию и начало получение данных с сервера, вот тут-то info.log может разрастись до гигантских размеров. Пользователей же волнует суммарное время, а не время чтения с диска, так как им нужно синхронизированное поступление данных с сервера, последнее при переподключении терминала и превалирует над временем чтения с диска.
Но, воля Ваша, оценивайте как "странное" желание.
Для хранения данных в КВИК используется проецируемые в память файлы т е данные хранятся на диске, а в рам отображаются лишь нужные страницы файлов.
При работе в реальном времени информация с сохраненных файлов используется лишь на несколько процентов, так как история данных в реальных сделках не используется.
Поэтому на скорость торговли размер сохраненных файлов не влияет.
На скорость влияют те циклы, которыми как правило заполнены самопальные программы торговли.
api c
 
Добрый день,
проблема следующая.
------------------
Использую  в торговых роботах нейронные сети.
-----------------------
Если нейронные сети встраивать на основе QLUA , то  все работает медленно и кушает много памяти.
Поэтому полноценный процесс обучения практически не реализуем.
-------------------------------------
Реализовал векторную алгебру в виде библиотеки на CИ для QLUA.
Скорость вычислений возрастает в 7-20 раз, а затраты памяти сокращаются во столько же.
Процесс обучения реализуем.
------------------------------------------------
Но очень раздражает необходимость делать бессмысленную работу перегоняя данные туда и обратно а потом обратно и туда.
Сначала функциями QLUA  приходится вытаскивать из архива квика данные , преобразовывая их в формат луа,
а потом функциями из своей библиотеки обратно их преобразовывать из формата луа в формат CИ
---------------------------------
Просьба к разработчикам выложить API С для обращения к хранилищу данных терминала QUIK.
-----------------
Спасибо
Брокер Сбербанк. Проблема с QUIK
 
Вопрос к разработчикам.
что делать?
--------------------------------------
брокер Сбербанк
QUIK версия 8.7.1.3 (для предыдущей было тоже самое)
Сейчас - утренняя сессия изменяются данные лишь в стакане
Графики и таблица позиций не обновляется.
Не отображаются новые сделки.
На графиках лишь вчерашний день.
Так часто бывает и в начала вечерней сессии.
Заявка по минимуму последней свечи
 
if DS==nil then  DS,Error = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL); end
Программисты на LUA, Требуются LUA программисты
 
Цитата
Владимир написал:
TGB, Я не знаю, что там за "метрики берутся за основу" - я работаю только с текущими курсами (ну или там с минутными свечами, в которых меня интересует только цена закрытия), и мне абсолютно по барабану, чем именно вызваны движения курса: поведением толпы, инсайдерской информацией, вбросами в СМИ или ещё чем. Мой алгоритм работает на исторических данных точно так же, как и на реальных. И работает (тьфу-тьфу!) хорошо!
если не секрет,
то покажите картинку работы на реальном рынке
и картинку работы на этом же участке на исторических данных.
---------------  
Т е один и тот же участок на котором Вы реально торговали
и после этого в тесте прогнали свой алгоритм.
---------------
Спорю, что сделки будут разные.
одинаковыми они будут лишь у бога или дьявола, полагаю вы не из их числа.
Как определить последнюю свечу в индикаторе?, Как определить последнюю свечу в индикаторе?
 
тот факт что закрытие свечи происходит задним числом приводит к тому,
что все роботы совершающие сделки на истории на закрытии свечи ВСЕГДА более прибыльные (иногда очень прибыльные),
чем в реальном времени .
На этом основан лохотрон по торговле в интернете такими роботами.
Как определить последнюю свечу в индикаторе?, Как определить последнюю свечу в индикаторе?
 
Цитата
swerg написал:
Цитата
s_mike@rambler.ru написал:
Свеча является закрытой тогда, когда появилась новая.
А не бывает такого, что приходит значение по предыдущей свече после прихода значений по новой?
бывает:
1)  если это значение не было загружено ранее.
2) если это свеча индикатора,
то так будет всегда для всех индикаторов, которые "заглядывают в будущее" - таких как fractal, ZigZag, и т д
---------------------  
Сама свеча цены - это тоже индикатор заглядывающий в будущее, поэтому закрытие свечи происходит лишь по истечению времени интервала, а не по времени последней сделки.
-------------
В скрипте индикатора  закрытие свечи определяется условием неравенства текущего индекса onCalculate  предыдущему.
Помощь в написании скрипта отправки данных по сделкам из QUIK к нам на сайт, выгрузка данных
 
Цитата
swerg написал:
Мне лень читать в ВТБ, а в Финам попалось быстро
http://zaoik.finam.ru/broker/regulations
Берем документ "23.11.20 актуально с 26.11.20.pdf"
 http://zaoik.finam.ru/Files/documents/disclosure/finam/broker/regulations/2010_­ ­%D0%A0%D0%B5%D0%B3%D0%BB%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%20%D­0 ­%B1%D1%80%D0%BE%D0%BA%D0%B5%D1%80%D1%81%D0%BA%D0%BE%D0%B3%D­0 ­%BE%20%D0%BE%D0%B1%D1%81%D0%BB%D1%83%D0%B6%D0%B8%D0%B2%D0%B­0 ­%D0%BD%D0%B8%D1%8F%2023.11.20%20%D0%B0%D0%BA%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%­ ­20%D1%81%2026.11.20.pdf  

см. пункт 22.2, особенно второй абзац пункта 22.2.2.
автор темы указал, что надо транслировать сделки клиента.
--------------------
В п 22.2  речь идет о биржевой информации, которая определена в п 22.2.1 так:
представляющая собой цифровые данные и иные сведения неконфиденциального
характера о ходе и итогах торгов на различных рынках организатора торговли, а также иная информация,
определяемая правилами проведения торгов на соответствующем рынке, правом на использование которых
обладает организатор торговли.
---------------------
Полагаю, что сделки конкретного клиента имеют конфиденциальный характер и не транслируются брокерам все его клиентам,
а правом на использование этой информации обладает клиент,
так как сделки выполнены за его счет и в его интересах.
Получение значения индикатора не открывая данных графика
 
Цитата
s_mike@rambler.ru написал:
Цитата
Максим написал:
Здравствуйте, подскажите, есть ли возможность получение значений индикатора МАСД не открывая сам график и не рассчитывая самому в скрипте. Постановка задачи: Пройтись по таблице текущие торги и отобрать акции с определенным значением МАСД.
вот этот скрипт умеет что то похожее

http://www.bot4sale.ru/download-categories/2012-06-13-15-10-36/item/market-scaner.html
чушь. Лишь бы пропиариться.
Привязка скрипта на lua к конкретному компьютеру, Ограничение возможности запуска скрипта
 
решал эту задачу иначе - шифровал dll c функциями.
ключ формировался из кода dll.
При запуске dll проверял кто и для чего ее вызывает.
Страницы: Пред. 1 ... 48 49 50 51 52 53 54 55 56 57 58 ... 81 След.
Наверх