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

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

Страницы: Пред. 1 ... 22 23 24 25 26 27 28 29 30 31 32 ... 71 След.
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
Цитата
k4rkpin написал:
Если  цены фьючерса и акции не сойдутся к моменту исполнения фьючерса ...

Для исполнения  поставочных  фьючерсов , количество активов  для продажи, равно количеству активов  для покупки. И если бы все клиенты, открывшие позиции по фьючерсам, имели достаточное количество активов для встречного удовлетоврения обязательств,  биржа смогла бы списать их активы по взаимозачету.
В противном случае,  для исполнения фьючерсов, потребуются дополнительные покупки (продажи),  а они могут сильно изменить цены актива.
Цена исполнения поставочного фьючерса определяется на 1 сессию раньше, чем его исполнение.  
    Скрытый текст            Скрытый текст       условия от Мосбиржи
Исполнение:  Поставка ценных бумаг путем заключения сделки в Секции фондового рынка в  порядке, предусмотренном Правилами проведения торгов на фондовом рынке  ПАО Московская Биржа, по цене,  равной результату деления РЦ  Контракта, определенной по итогам вечернего Расчетного периода   последнего дня заключения Контракта, на лот Контракта.
Однако, цена актива от момента определения расчетной цены  до  исполнения фьючерсов, может  измениться.

Вопрос: если цена актива на следующей сессии не сойдется с ценой исполнения фьючерса, за чей счет будет оплачена разница в цене и в каких таблицах Quik я смогу увидеть мои потери от разницы?
цена не просто сойдется, а цена исполнения фьючерса будет приравнена цене акции.
По постановочному фьючерсу брокер потребует от Вас наличие на счете нужного количества акций до экспирации.
Либо наличие соответствующего счета depo для зачисления акций, которые будут автоматом списаны у продавца, у которого они будут заблокированы на счете.  
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
и еще...
Если надо вызвать функцию QLUA в своей DLL,
то для отладки делаю заглушку с имитацией передачи данных.
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
Цитата
BVladimir написал:
Приветствую, All !

Есть своя dll к Quik, написанная год назад, Quik 9.7.1.10 и VS 2019. Помнится, в том году, для отладки подключался к процессу info.exe из VS 2019 спокойно и все видел. Сейчас пробую - не важно запущен ли с скрипт с подключением dll или нет, Quik выходит с кодом 0 (без ошибок) вообще без слов. Что то сломалось не пойму куда копать то ?
Я отлаживаю DLL для QUIK так же как и для любой другой VMLua ( например для встраиваемых микропроцессорных систем).
В DLL на C ставлю вывод prirntf.
Как правило большинство писателей для QUIK не используют библиотеку QLUA в DLL так как DLL обычно пишем для ускорения скриптов
а QLUA уже написана на СИ.
-----------------
Пишу тест на луа в Scite.
При запуске теста сообщения из dll по printf выводятся в окно редактора SCITE вместе с сообщениями теста Lua.
--------------------
Так как отладка для QUIK ничем не отличается от любой другой, то можно использовать любые любимые отладчики.
----------------
После отладки добавляю свою dll в скрипт QUIK и без проблем.  
Как надлежаще уведомить брокера через Quik ?
 
Цитата
k4rkpin написал:
При наличии у меня открытой позиции - проданных поставочных фьючерсов на акции, хочу просить  брокера, чтобы во исполнение фьючерса списал с моего счета  имеющихся в наличии одноименные акции, те произвел взаимозачет, а не покупал дополнительные.

Вопрос 1 Достаточно написать письмо брокеру через "Неторговые поручения, свободная форма", за сколько дней до экспирации это сделать ?  
Вопрос 2 Указывать цену акций, по которой хочу продать, или будет автоматически использована последняя расчетная цена фьючерса?
Вопрос 3 Нужно письменное подтверждение от брокера, оно придет через Quik или другими каналами?
Вопрос 4 Насколько хорошо документируются такие переговоры в Quik, можно их использовать как доказательство в случае конфликта ?
Рекомендую сделать следующее:
-------------------------------
1) прочитать регламент брокера на предмет решения Вашего вопроса

2) если в регламенте ответа нет,
то написать брокеру письменно брокеру просьбу
добавить в Ваш с ним договор сформулированное Вами пожелание услуги брокера по данному вопросу
------------------------
Брокер либо включит Ваше пожелания как доп соглашение либо отклонит его, так как это его право.
-------------------
В любом случае, лишь письменный ответ брокера  будет реальным ответом на ваш вопрос.
Получение цены инструмента
 
и еще..
если торгуете неликвидом, то в качестве признака торговой сессии можно использовать опять же время и наличие заявок.
Но я роботов на неликвид не делаю.  
Получение цены инструмента
 
Цитата
Kolossi написал:
В принципе с подпиской получилось нормально. Всем спасибо.

Задумался вот, а почему статус торговой сессии нужно получать по определенному инструменту а не в общим параметром?
Я определяю статус торговой сессии по времени и наличию сделок.
время компа синхронизирую по серверу точного времени.  время торгов на бирже тоже синхронизировано по такому же серверу.
в результате дополнительные затраты ресурсов относительно ресурсов для торговли инструментом полностью отсутствуют.
Создать новый стек Lua, Создать новый стек Lua
 
Цитата
Quikos написал:
Есть такой простой код:

В квике Lua-скрипт:
Код
   function   main ()

Quik_Lua_connector =   require ( "Quil_Lua_connector_work_TEST" )    

 Quik_Lua_connector.TestFunc_run_WinConsole_for_dll ()

 Quik_Lua_connector.run_Cpp () 

 ------------------------- 
 while   not  stopped  do  
 sleep ( 1 )
 end  
 ------------------------- 
 end   

В С++ соответственно:
Код
  static int run_Cpp(lua_State *  Lua_stek)
{

    lua_State *  L  =  luaL_newstate();

     if  (L  =  =  NULL)
    {
        std::cout  <  <   "L == NULL"   <  <  std::endl;    //Ошибки нет.
    }

lua_getglobal(L,  "CreateDataSource" );           

lua_pushstring(L,  "TQBR" );    
lua_pushstring(L,  "GAZP" );         
lua_pushnumber(L,  "INTERVAL_MN1" );                

std::cout  <  <   "Size_stack:"   <  <  lua_gettop(L)  <  <  std::endl;   //Размер  4   -  как и должно быть

int status_lua_pcall  =  lua_pcall(L,  3 ,  2 ,  0 );   
    
 if (status_lua_pcall   !  =   0 )
{
std::cout <  < "Error" <  < std::endl;   //attempt to call a  nil  value
}

}  

То есть я хочу использовать автоматически не созданный при вызове функции run_Cpp - Lua стек, а создать своей новый - через luaL_newstate.
Стек создается, он не равен нулю.
В стек добавляются элементы - то есть он рабочий.
Но, как я вызываю lua_pcall - то lua_pcall завершается ошибкой "attempt to call a nil value".

Со автоматически созданный стеком Lua_stek - никаких ошибок нет, все работает.

Что это может быть ?
Попробуйте почитать учебники по программированию на API C for Lua.
Так как API C, то попробуйте не делать кашу из С и С++.
Быстрее научитесь писать без ошибок.
Квик ПАДАЕТ от простейшего кода
 
Нет слов, просто ужас какой-то. :shock:
Просто тащусь от такой программы. :what:
-----------------
М можно еще подобные шедевры в выложить,
а то давно так не смеялся. :lol:  :lol:  :lol: :lol:  :lol: :lol:  :lol:  
Не работает простейший скрипт вывода сообщения
 
Да Владимир это редкое имя,
почти такое же редкое как Иван.  
Net error "Удалённый хост принудительно разорвал существующее подключение", Такая ошибка ,как правило, возникает ближе к концу торгов.Подключиться после этой ошибки невозможно в этот день. На пк установлено ещё 2 квика,они при этом работают нормально. Подключение через USB-модем
 
Цитата
Андрей написал:
Установил причину  ошибки.
Пока вылетов нет.
снял одну планку DDR5,  нету вылета DDR5 установлена по мануалу

мат плата asus z690 prime a,  
ddr5 32 GB, две планки   по 16  ADATA 16GB ram mother PC5 ddr5 4800 МГц

в других программах ошибки не было
весьма возможно что в других программах процессор не лазил в эту область памяти либо процессору стало жарко.
можно сделать следующее:
1) проверить температуру процессора  и на всякий случай очистить вентилятор процессора от пыли.
2) установить у процессора динамическое изменение частоты.
3) увеличить тайминг памяти.
 
Глюк в стакане котировок, версия 9.3.1.11, Вверх тормашками
 
если пишите на луа, то до реализации в квике
можете сравнительно просто реализовать в индикаторе и отобразить как метку.
Глюк в стакане котировок, версия 9.3.1.11, Вверх тормашками
 
если правильно понял,
то чел хочет чтобы где-то отображалось время по модулю таймфрейма.
т е время, прошедшее с начала создания текущей свечи.
Предварительная проверка наличия в базе Quik инструмента (опциона), Subscribe_Level_II_Quotes и getParamEx не существующего опциона приводят к зависанию Quik
 
Цитата
Boris написал:
Цитата
nikolz написал:
Т е читайте любой из указанных параметров и проверяйте его на вшивость.
я это пробовал задолго до того как тут на форуме вопрос задать.

Проверял и на пустую строку и то что в значении число и что оно не nul
Но всё равно Quik намертво виснет.

Вероятно он виснет не на этапе getParamEx, а ещё ранее и где именно - абсолютно непонятно.
Но происходит это точно в тот момент когда в Quik обновляются данные и появляются сдохнувшие опционы.
Памяти скрипт ест - 8-15мб - не более.

Может какой то кэллбэк есть "инструмент исключён из базы" ??
как я понял Вы используете вывод по dde.
Я тоже с ним работаю, но сервер у меня свой на СИ.
поэтому пару слов по особенностям этого вывода. Так как это может быть причиной зависания.
--------------
В документации по применению DDE в квик, есть указание (место не помню где, но действительно влияет на результата вывода)
что нельзя использовать фильтры в таблице если она выводится по DDE.
Поэтому для начала отключите все фильтры на выводимой по DDE таблице.
-------------
Кроме того, зависание возможно по причине некорректной обработки пустых строк в вашем приложении  DDE
Примерно так.
Передать в SetUpdateCallback дополнительные параметры
 
Цитата
Quikos написал:
Цитата
nikolz написал:
 Вы можете передать любые параметры в любую функцию через внешние для нее параметры
Это могут быть либо глобальные либо локальные параметры блока
Например в вашем случае делаем так:
 
Код
       local   param1,param2;
  -------------------------------------  
  function   my_callback_ (index) 
  --Теперь тут доступны внешние локальные параметры...my_table_, param1, param2 - помимо стандартного index  
  end  
  ----------------  
  local   my_table   =     CreateDataSource   (code_class, code_paper_ interval)
parametr_1   =     "1"  
parametr_2   =     "2"  
my_table :   SetUpdateCallback   ( my_callback )
    
 И не надо огород городить.
Вы можете таким же образом передать и таблицу и все что хотите.

Не сочтите за наглость, Вы сами по поняли, что написали ?

1)Во первых даже если мы рассматриваем Lua - где тут передача параметров в функцию ? Я что спрашивал про глобальные параметры ? Почему вы вообще применяется к глобальным переменным термин "передать" ?? Это и так ГЛОБАЛЬНАЯ переменная.
2)Во вторых я четко спросил про Си, то есть, как это реализовать на Lua api в Си.

Будем откровенны - Вы написали очень глупую глупость :)
Я вам пояснил, что указанное вами решение - это нагромождение огорода - именно для луа.
---------------------
В подсмотренном но не понятом Вами варианте , параметры будут загружаться в стек луа вне функциию
------------------------------
В моем варианте параметры определены как upvalue и будут загружены в стек  луа внутри функции.
-----------------
Разница лишь в том, что ваш вариант содержит больше букв .
-----------------
Если Вы не поняли, то что я Вам написал, то нет смысла объяснять Вам как это делать на СИ.
Вы это тем более не поймете.
Шаг сетчика в операторе for, Некорректная работа оператора for при нецелочисленном шаге
 
например так:
for x=1,2.05,0.1 do  print("x="..x) end
------------
x=1.0
x=1.1
x=1.2
x=1.3
x=1.4
x=1.5
x=1.6
x=1.7
x=1.8
x=1.9
x=2.0
-----------------
Шаг сетчика в операторе for, Некорректная работа оператора for при нецелочисленном шаге
 
чтобы было  правильно ,
надо изменить границу цикла, чтобы результат проверялся не на равно.
как правило путем добавления половины шага
Шаг сетчика в операторе for, Некорректная работа оператора for при нецелочисленном шаге
 
вообще-то  ,
обычно в букварях по программированию предупреждают,
что не надо использовать точное сравнение для вещественных чисел.
чтобы не было мучительно больно.
Шаг сетчика в операторе for, Некорректная работа оператора for при нецелочисленном шаге
 
Цитата
BlaZed написал:
Сегодня столкнулся с некорректной работой оператора for, если задать не целочисленный шаг счетчика

Простой пример
Код
   for  x =  1 , 2 , 0.1   do 
  message ( "x="  .. x)
 end 
  
Логично ожидать перебор значений от 1 до 2 включительно с шагом 0.1
Однако перебор значений идет от 1 только до 1.9
В данном случае на последнем шаге получается x=2.0+8.8817841970013e-016  
Передать в SetUpdateCallback дополнительные параметры
 
Цитата
Quikos написал:
При вызове SetUpdateCallback по умолчанию передать туда доп. параметры нельзя:


Код
   function   my_callback_ (index)

 --index - индекс свечи в таблице my_table, НО сама таблица по умолчанию не приходит, что просто дикость. 

 end 


 local  my_table  =   CreateDataSource (code_class, code_paper_ interval)

my_table : SetUpdateCallback (my_callback_)  


Но, передать доп. параметры в callback - можно с помощью такой контракции, в данном случае я не знаю, что она означает на Lua, просто подсмотрел на данном форуме:

Код
   function   my_callback_ (my_table_, param1, param2, index)

 --Теперь тут доступны переданные дополнительные параметры...my_table_, param1, param2 - помимо стандартного index 

 end 


 local  my_table  =   CreateDataSource (code_class, code_paper_ interval)

parametr_1  =   "1" 
parametr_2  =   "2" 

my_table : SetUpdateCallback ( function (idx)my_callback_(my_table,parametr_1, parametr_2, idx)  end )  



И теперь параметры замечательно переданы в callback SetUpdateCallback.  И вот подскажите пожалуйста, а можно ли подобное провернуть в Си ??
Вы можете передать любые параметры в любую функцию через внешние для нее параметры
Это могут быть либо глобальные либо локальные параметры блока
Например в вашем случае делаем так:
Код
 local param1,param2;
-------------------------------------
function my_callback_ (index) 
--Теперь тут доступны внешние локальные параметры...my_table_, param1, param2 - помимо стандартного index
end
----------------
local my_table = CreateDataSource (code_class, code_paper_ interval)
parametr_1 = "1"
parametr_2 = "2"
my_table : SetUpdateCallback ( my_callback )
И не надо огород городить.
Вы можете таким же образом передать и таблицу и все что хотите.
Получение цены инструмента
 
Цитата
Kolossi написал:
Подскажите, есть ли возможность получения цены последней сделки по инструменту запросом с сервера не занося его в таблицу текущих торгов руками и не создавая всю базу через CreateDataSource ?
Можно.
Для этого Вам надо установить режим по подписке
и подписаться на нужные инструменты
В ТТТ ни руками ни ногами заносить инструмент не требуется.  
Предварительная проверка наличия в базе Quik инструмента (опциона), Subscribe_Level_II_Quotes и getParamEx не существующего опциона приводят к зависанию Quik
 
Цитата
Boris написал:
Периодически сервера Quik перестают транслировать данные по некоторым опционам.
Выглядит это так как опцион был и все его параметры транслировались, эти опционы постоянно мониторятся lua скриптом - который был запущен в тот момент когда опционы все ещё были живы.
В какой то момент некоторые дальние опционы "дохнут" (ещё до истечения по сроку) и исчезают из трансляции серверов Quik как доступные инструменты.

Если эти опционы находятся в таблице торгов то у них в таблице пропадают такие параметры как:
Спрос    Предл.    Цена послед.    Волатильность    Теор. цена

Вместо нулевых значений начинает отображаться пустое значение.

Если таблицу отредактировать и заново заполнить по фильтру - то эти опционы исчезают.

В итоге по DDE из указанной таблицы начинают транслироваться пустые значения - что приводит к зависанию DDE сервера - до тех пор пока сдохнувшие опционы не будут удалены из таблицы

В lua мониторятся стаканы этих опционов - запускается скрипт и формируется список для мониторинга в тот момент когда опцион ещё жив, но в тот момент когда опционы дохнут - попытка мониторинга приводит к зависанию Quik намертво (даже ошибок lua не показывает)

Подобная конструкция - для предварительной проверки успешности запроса getParamEx через параметр result - не помогает, скрипт всё равно вешает Quik.
Какие функции позволят заблаговременно отследить исчезновение инструмента из трансляции сервера Quik ?
Вы в своем вопросе написали ответ.
-----------------------
Если эти опционы находятся в таблице торгов то у них в таблице пропадают такие параметры как:
Спрос Предл. Цена послед. Волатильность Теор. цена

Вместо нулевых значений начинает отображаться пустое значение.
-----------------
вот это и нужно проверять.
Т е читайте любой из указанных параметров и проверяйте его на вшивость.
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Цитата
Quikos написал:
В документации естественно таких данных нет, но может кто знает ?  Когда вызывается callback SetUpdateCallback от CreateDataSource - он вызывается всегда только в одном потоке, как в Lua, так и в С++ ?  Кстати интересен данный вопрос и касаемо функции OnQuote.  Вопрос естественно связан с синхронизацией доступа в случае - многотонной SetUpdateCallback .
Какая разница в каком потоке вызывается функция?
-------------------------
Полагаю Вы знаете, что любая библиотека dll хранится в памяти компа в единственном экземпляре
--------------------------------
Это значит, что все потоки, даже если их тысяча вызывают один и тот же код функции
-------------------
Важным моментом является какие данные изменяют эти потоки.
------------------
Именно обращение к данным надо синхронизировать, а не обращение к коду функций.
------------------
Уточните свой вопрос.
Вызвать Lua функцию из С++ c передачей callback`а, Вызвать Lua функцию из С++ c передачей callback`а
 
Цитата
Quikos написал:
Подскажите пожалуйста, есть ли пример, как вызывать функцию к примеру SetUpdateCallback с передачей в нее параметров ?  Ну то есть, вот аналог код в Lua:  
Код
   local  my_table_ =   CreateDataSource (code_class_, code_paper_, interval)

my_table_: SetUpdateCallback ( function (idx)my_callback_(my_table_, code_class_, code_paper_, interval)  end )
  
       
Код
   function   my_callback_ (my_table_, code_class, code_paper, interval)
 .. .код

 end   
 
Код
  //В L  -  на вершине стека уже находится таблица возвращенная  CreateDataSource .

lua_getfield(L,  -  1 ,  "SetUpdateCallback" );          //"Извлекаем" на вершину стека из  "таблицы"  функцию  SetUpdateCallback .  


Теперь нужно поместить в стек последовательно параметры функции SetUpdateCallback, но тут уже не могу понять:
- как поместить function(idx)
- как поместить my_callback_

Не могу понять, где должна быть объявлена моя функция callback ?


В Lua скрипте и тогда мне ее нужно просто получить через Lua_global или же в C++ ?
Не совсем понятно, что Вы не знаете -луа или библиотеку QLUA, поэтому поясняю оба момента.
----------------------------
см. документацию  луа:
----------------
Следующий пример показывает, как хост-программа может выполнять эквивалент этого кода Lua: a = f("как", т.x, 14)
Вот оно в C:
lua_getglobal(L, "f"); /* вызываемая функция */
lua_pushliteral(L, "как"); /* 1-й аргумент */
lua_getglobal(L, "t"); /* таблица, подлежащая индексации */
lua_getfield(L, -1, "x"); /* результат ввода t.x (2-й аргумент) */
lua_remove(L, -2); /* удалить 't' из стека */
lua_pushinteger(L, 14); /* 3-й аргумент */
lua_call(L, 3, 1); /* вызов 'f' с 3 аргументами и 1 результатом */
lua_setglobal(L, "a"); /* установить глобальный 'a' */
=================
см документацию библиотеки QLUA ,
-----------------
Формат функции обратного вызова:  function call_back(NUMBER index)
Пример получения времени из свечки:
function cb( index )   -- объявили колбек функцию
local t = ds:T(index)
end
------------------
SetUpdateCallback(ds,cb)   -- запихнули ссылку на нее в таблицу источника
===============================
если Вы пишите на Си то колбек объявляете на СИ,
но можете и на луа.
в любом случае это глобальная функция.
-----------------
ВСЕ функции библиотеки QLUA - глобальные.
-----------------------
вроде бы все понятно?
----------------------
попробуйте  написать, потом выложите и спросите что не так.
=================
QUIK съедает более 2 ГБ памяти вне зависимости от брокера.
 
Добрый день,
Периодически на форуме появляются душераздирающие вопли о том,
что мол у брокера .... QUIK съедает .. ГБ.
Попытка объяснить ,
что и как надо сделать наталкивается либо на вопли "мы все это знаем",
либо на рассуждения о том, что это не у любого брокера, а лишь у избранного.
----------------------
Полагаю, что проблема не в зеркале,
то есть не в брокере,
а как обычно, в отсутствии знаний у пользователя.
-----------------
Доказательство:
-------------------
брокер СБЕРБАНК.
Чтобы доказать, что брокер не виноват,
специально настроил QUIK так, чтобы получить наибольшую загрузку памяти для этого брокера.
---------------------------
Желающие могут получить и большую загрузку.
Я к этому не стремился, но знаю как это сделать.
-----------------
итак вот картинка результата сегодня:


а это результат обычной настройки

-----------------------------------------------
Успехов в борьбе за знания, т.е. за память.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
СергейК написал:
Цитата
nikolz написал:
как я понял у него объем потребления памяти уменьшился с 1800 Мб до 350 т е в 5 раз
У него ничего не уменьшилось:
Цитата
Дмитрий Б. написал:
Запустил пустой квик без вкладок и без любых котировок, всё отключил.  Изменений нет .
 
Цитата
Дмитрий Б. написал:
Эксперимент завершил. Отсутствие файлов dat не повлияло на память. Сегодня ВТБ обновил версию до 9.8.0.11. А  память забирают все столько же - 2Гб

И не путайте оперативную память и размер файла info.log на диске.
Квик ВТБ жрёт  памяти  2Г и больше, это показывает диспетчер задач.
180М (а не 1800!) и 350М - это размеры  файла   info.log !

Цитата
nikolz написал:
Как я понял Вы из тех кому важно все обосрать
Из тех, но с учётом того, что я никого не обсирал, они существуют только в вашем воображении.  
СергейК,
Был неправ. Приношу извинения.
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Скажите, что не так в картинках ниже:
это исходное


это изменили инструмент через легенду в окне

это изменили интервал

Все верно?
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
если изменять инструмент через меню, то надо изменить инструмент и в индикаторе.
тогда все работает.
--------------------
Резюме:
Изменение данных в индикаторе будет происходить:
1) при изменении тайма
2) при изменении инструмента якорем
3) при изменении инструмента через меню в окне и в индикаторе
4)  Можно сделать изменение инструмента через меню лишь в окне, но тогда изменение в индикаторе можно сделать лишь на следующей обезличенной сделке.
Konstantin777,
Какой из этих 4 вариантов или иной Вам нужен?
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,,
Как Вы изменяете инструмент?
------------------
Дело в том, что если Вы изменяете интервал или инструмент с помощью якоря, то эти изменения приводят к пересчету индикатора
--------------------
Но если инструмент заменяется через меню окна, то индикатор не пересчитывается.
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Я не понял, зачем Вам два окна с двумя инструментами.
Напишите подробнее, что Вы хотите сделать.
Возможно есть решение именно того, что хотите , но пока я не понимаю в чем смысл двух инструментов и
наблюдение трех первых и трех последних, если это не арбитраж.
----------------------  
Можно решить задачу многими способами.
В первом приближении выбранный вами неудачный.
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
вариант при котором индикатор работает при смене инструмента, если включить якорь
но при этом смена происходит и во всех окнах и название индикатора тоже изменяется


 
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Тот факт что индикатор остается привязанный к первоначальному инструменту косвенно подтверждает название окна индикатора
если его поместить в третье окно
На картинке
индикатор помещен первоначально  со Сбербанком
После смены инструмента название окна индикатора не меняется

 
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
но он отображает 0, а не данные предыдущего инструмента
Если индикатор написан правильно, то отображает предыдущее значение а не ноль
 
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
СергейК написал:
Цитата
nikolz написал:
Выкладываю картинки с настройками
Тут ничего особенного нет, у меня всё приблизительно так же.
И даже если бы дело было в настройках, проблема была бы и раньше, а она в ВТБ появилась только недавно в сентябре.
А советы ваши давно описаны в начальных постах по теме и все давно испробованы, не работает ничего
Вообще-то я Дмитрию помогаю,
как я понял у него объем потребления памяти уменьшился с 1800 Мб до 350 т е в 5 раз.
-----------
Вам я советов не давал, и тем более не спрашивал вашего мнения.
Как я понял Вы из тех кому важно все обосрать.  
Не исполняется ордер на валютной секции
 
Цитата
Михаил Филимонов написал:
Кто-нибудь торгует на Валютной секции на Едином брокерском счете в Открывашке через TRANS2QUIK  API ?  
Вы зря полезли в  TRANS2QUIK API. это такое старье.
появилось еще задолго до встраивания VMLua в QUIK.
------------------------
переходите на LUA - чем раньше сделаете, тем меньше будет проблем.
---------------------------
"Ох, нелегкая это работа -Из болота тащить бегемота!"
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Объясняю вам, почему  данные не изменяются при смене инструмента.
-------------
Проблема в том, что индикатор использует данные инструмента, который отображен перед  загрузкой индикатора на график,
т е при начальной инициализации индикатора в нем сохраняется указатель на архив данных инструмента.
----------------
Когда Вы изменяете инструмент на графике, то в индикаторе остается указатель на прежний инструмент.
Поэтому он продолжает отображать данные первоначального инструмента.
--------------
Поэтому для смены инструмента в индикаторе при смене его на графике Вам надо обеспечить отслеживание этой замены в индикаторе
и при обнаружении замены изменить источник данных для индикатора.
---------------
Полагаю, что это можно сделать задействовав функции создания источника данных.
Но помогать Вам я не буду, нет желания.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
СергейК написал:
 
Цитата
nikolz  написал:
сохраняли историю многих параметров
 Это где настраивается?
350Мб пока самое большое.
Выкладываю картинки с настройками
Так как не знаю как у Вас настроено.
Установите как на них. Потом, если что-то не хватит выложу еще.






Потом удалите все log и data и содержимое arxive и снова подключитесь к серверу.
Надеюсь, что станет еще лучше.
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
Konstantin777 написал:
Цитата
Konstantin777 написал:
я не понимаю чем Ваш пример от моего отличается.
понял, у Вас getCandlesByIndex вызывается в OnCalculate, а моем примере в Init. Однако  
Цитата
Konstantin777 написал:
Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу.
я такой же пример сам писал, и все так же плохо работает
Странный Вы человек.
Вместо того, чтобы задавать вопросы и высказывать недовольство,
просто надо было бы привести результат теста, а не рассказывать мне что вы делали что-то не работающее.
Я же не должен за вас все проверять,
написал же вам выше , проверьте если что не так напишите поправлю.
Но в любом случае Я делаю это если у меня есть желание Вам помогать.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
еще заметил, что у ВТБ все файлы с расширением dat почему-то 65536 байт т е 2 в 16 степени, а у меня т е сбербанка есть и 1024 байта.
------------------
Если вы не удаляли эти файлы как я писал ранее, то удалите их тоже.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Рекомендую в дальнейшем их не сохранять, будет память как у меня.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Предположу, что вы сохраняли историю многих параметров.  
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Мне системные файлы ничго не говорят. Не знаю куда смотреть.

По дате так:
убейте файлы info.log
У вас они 74776765 байт и 24646913 байт
а у меня 1024 байта
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Выкладываю пример, если что не так, напишите, поправлю.
Код
Settings={
sec ="ind2",  --идентификатор инструмента 2-го графика
Name = 'nk_ind',
}
-------
function OnCalculate(i)
   if i==Size() then
      local N=getNumCandles (Settings.sec) ;
      if N>3 then
         local t=getCandlesByIndex(Settings.sec,0,N-3,3); --последние 3 свечи 2-го графика
         local Hi2,Hi1,Hi0=t[0].high,t[1].high,t[2].high;
      --------------------------
         t=getCandlesByIndex(Settings.sec,0,0,3);   --первые 3 свечи 2-го графика
         local H1,H2,H3=t[0].high,t[1].high,t[2].high;

         message("1="..H(1)..",2="..H(2)..",3="..H(3).."....,i-2="..H(i-2)..",i-1="..H(i-1)..",i="..H(i).."\n"..
         "1="..H1..",2="..H2..",3="..H3..",i-2="..Hi2..",i-1="..Hi1..",i="..Hi0.."\n");
      end
   end
   return
end
-----
function Init()
 Settings.line={};
   Settings.line[1] =    {Name = "C",Color = RGB(0,255,0),      Type =2,Width = 2   };
   return 1;
end
 
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
это файл курса , не важно есть или нет.
Вы отсортируйте по дате, чтобы можно было сравнивать
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Позже выложу для Вас пример  
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
Konstantin777 написал:
Цитата
   s_mike@rambler.ru написал:
Надо понимать, что при загрузке терминала варианты 1,2 и 3 имеют гораздо более высокую вероятность, чем вариант 4. А вот в устоявшемся варианте, когда все данные терминалом прогружены, вы скорее всего будете получать вариант 4
Цитата
Konstantin777 написал:
Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу.
 
Цитата
nikolz написал:
посмотрите скрипт который я выложил на этом форуме для арбитража
если это скрипт, то в скрипте у меня тоже все работает нормально, проблема именно в индикаторе, где то была тема что функция getCandlesByIndex плохо работает именно в инидикаторах
это индикатор.  Там я даже картинку выложил.
Но называется он скриптом, потому что написан языке Lua.
https://habr.com/ru/post/196272/
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
У меня так:
 
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
можно еще сравнить размер файлов в папке QUIK ВТБ и СБЕРБАНК
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
nikolz написал:
 
Цитата
У Вас Win7 у меня Win10.
Сравним память для demo версии
Установил демо. Ничего в демо не настраивал. Запустил сразу три квика. Демо версия память почти не забирает.
У меня подобное.
Ну остается Вам  сменить брокера ВТБ на Сбербанк.
Будет как у меня.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
nikolz написал:
для чистоты эксперимента надо удалить содержимое папки arxive и все файлы с расширением dat
Эксперимент завершил. Отсутствие файлов dat не повлияло на память.
Сегодня ВТБ обновил версию до 9.8.0.11. А память забирают все столько же - 2Гб.
попробуйте установить демо с сайта QUIK, чтобы сравнить как влияет OS.
У Вас Win7 у меня Win10.
Сравним память для demo версии
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
У вас  почти тысяча инструментов.  Зачем?
--------------------------
Вы физически не сможете за ними следить.
---------------------
Рекомендую оставить лишь ликвидные
--------------------
Потом если будет мало и будете круто торговать добавите неликвид.
--------------------
Начните с  не более 100 инструментов.
Полагаю что  память уменьшится раз в 10.
Да, мне столько не нужно интрументов. Оказалось они тоже не влияют на память. Запустил пустой квик без вкладок и без любых котировок, всё отключил. Изменений нет.
и последнее,
для чистоты эксперимента надо удалить содержимое папки arxive и все файлы с расширением dat
Страницы: Пред. 1 ... 22 23 24 25 26 27 28 29 30 31 32 ... 71 След.
Наверх