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

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

Страницы: Пред. 1 2 3
Доступность инструмента для открытий коротких позиций
 
Цитата
Stanislav Tvorogov написал:
Определить маржинальность инструмента можно из таблицы "Купить/Продать", с помощью функции "getBuySellInfo", параметр "is_margin_sec".Возможные значения:  «0» – не маржинальная;«1» – маржинальная.
Вечер добрый, вообщем отсканил весь класс "Акции 1-го уровня (эмулятор)" на вашем демо-счете - почти все все акции имеют значение - "0" т.е. недоступны для маржинальной торговли, а некоторые вообще имеют значение nil, и при этом некоторые акции со значением "0" возможно продать в долг, т.е. на самом деле они все таки доступны для маржи, например акции Башнефть - BANE, ну и с остальными видимо также - какие то доступны какие то нет надо узнавать методом тыка, в принципе если на демо счете от другого брокера или вообще на реальном там может быть и нормально но все таки...
Доступность инструмента для открытий коротких позиций
 
Всех приветствую, подскажите - средствами Qlua можно ли узнать по инструменту возможно ли по нему открытие коротких позиций, т.е. маржинальная торговля?
Ни в описании по Qlua ни в самом квике, вручную, я чтото ненашел ничего чтобы посмотреть эту информацию по инструменту, получается надо у своего брокера узнавать какие он предоставляет в долг, составлять такой список и держать его перед глазами? ))))
Превышен лимит по инструменту
 

Всех приветствую, подскажите пожалуйста - временами при попытке скрипта купить ценн.бумагу
происходит ошибка - Превышен лимит по инструменту
Вот например лог таблицы Ontransreply при такой ошибке:
sec_code = SNGSP
price = 32.9
client_code = 10804
balance = 0
time = 181207
status = 6
first_ordernum = 0
date_time = 18:12:7  273  28/1
gate_reply_time = 0:0:0  0  1/1
class_code = QJSIM
trans_id = 60043
error_source = 3
exchange_code =
uid = 134353
error_code = 108
flags = 2359297
result_msg = Превышен лимит по инструменту
brokerref = 10804
firm_id = NC0011100000
quantity = 13
order_num = 0
server_trans_id = 27
account = NL0011100043

И тут же вслед за неудачной попыткой скрипта я легко вручную купил те же самые 13 акций SNGSP
Что это за ошибка как её избежать?

Подскажите по флагам
 
Цитата
s_mike@rambler.ru написал:
подпишитесь на событие onorder. смотрите поле balance -там будет остаток
Ага помогло спасибо, но так все таки что же это за флаги такие - flags = 2359297 flags = 2490369?

И еще - через функцию onorder можно узнать сколько непродано/некуплено практически только сразу же как функция вызвана, т.е. сразу как заявка принята сервером, а если я хочу чтобы скрипт не сразу а спустя какое то время просматривал наличие зависших активных заявок? Я так ппонимаю через таблицу "orders" в функции getItem, видимо опять же через flags, только вот какой бит там смотреть - 0? "бит 0 (0x1)  Заявка активна, иначе – не активна" - активна значит висит неактивна значит исполнена?
Подскажите по флагам
 
Всех приветствую, подскажите - читаю полученные результаты при выполнении заявки в функции OnTransReply ( )
там есть поле flags, в  таблице возвращаемой этой функцией
вот я что то его не пойму, приходят например вот такие вот значения:
flags = 2359297
flags = 2490369
если перевести в двоичное значение получаю:
1001000000000000000001
1001100000000000000001

Но в руководстве по qlua ничего не сказано о значении битов для  флагов для таблиц заявки, заявки
на внебиржевые сделки, сделки, сделки для исполнения выше 9го бита, там можно прочитатать следующее:

бит 0 (0x1)  Заявка активна, иначе – не активна
бит 1 (0x2)  Заявка снята. Если флаг не установлен и значение бита «0» равно «0»,
то заявка исполнена
бит 2 (0x4)  Заявка на продажу, иначе – на покупку. Данный флаг для сделок и
сделок для исполнения определяет направление сделки (BUY/SELL)
бит 3 (0x8)  Заявка лимитированная, иначе – рыночная
бит 4 (0x10)  Разрешить / запретить сделки по разным ценам
бит 5 (0x20)  Исполнить заявку немедленно или снять (FILL OR KILL)
бит 6 (0x40)  Заявка маркет-мейкера. Для адресных заявок – заявка отправлена Флаг установлен  Значение
контрагенту
бит 7 (0x80)  Для адресных заявок – заявка получена от контрагента
бит 8 (0x100)  Снять остаток
бит 9 (0x200)  Айсберг-заявка

И все, в частности мне надо узнать из таблицы OnTransReply ( ) как выполнена заявка - полностью или частично, т.е. весь заявленный в исходной заявке куплен/продан или же куплена часть а часть висит в качестве активной заявки, или же вообще вся заявка зависла в качестве активной, по полю status это не узнать т.к. если заявка вообще принята торговой системой, т.е. не отвергнута, то возвращается status = 3 и все
getPortfolioInfo все время возвращает nil
 
Цитата
Sergey Gorokhov написал:
Приведите пример команды со всеми параметрами, которая работает не правильно.
Все стандартно в соответствии с инструкцией - getPortfolioInfo (firm_id, client_code)
где firm_id и client_code взял из теминала, допустим
firm_id ="NC0011100000"
client_code="10804"
причем сам getPortfolioInfo (firm_id, client_code) возвращает таблицу но она пустая - при обращении к любому полю, например
getPortfolioInfo (frmid, cli_cod).all_assets
getPortfolioInfo (frmid, cli_cod).total_money_bal

эти поля возвращаются как nil, на демо счетах других брокеров все в точно таком же исполнении работает нормально, поля возвращаются с текущими значениями, не nil, проблема похоже на вашей стороне
getPortfolioInfo все время возвращает nil
 
Всем доброго дня, подскажите кто знает - на демо доступе от разработчиков QUIK функция getPortfolioInfo все время возвращает nil, свои  firm_id и client_code указываю правильно, у меня никаких ошибок быть не может, при точно таком же использовании на демо-счетах других брокеров эта функция у меня все норм работает, при точно таком же использовании, без всяких различий в скрипте, ну только что firm_id и client_code там другой конечно же, я бы другими демо-счетами и пользовался поэтому но только вот проблема в том что почти все остальные демо-счета работают в режиме торгов приближенных к реальным - т.е. доступ к торгам по времени в соответствии с реальной работой биржи - т.е. только в рабочие дни с 10:00 и т.д. и только у разрабов QUIKа можно работать каждый день и почти круглосуточно
Функция CreateDataSource, Возможно ли получать данные с её помощью по любому инструменту не открывая его график?
 
Может быть потому что я на демо-счете?
Функция CreateDataSource, Возможно ли получать данные с её помощью по любому инструменту не открывая его график?
 
Цитата
Stanislav Tvorogov написал:
ds=CreateDataSource(Class_Code, Sec_Code, INTERVAL_M15)
ds:SetEmptyCallback()
sleep(100)
Что то не работает - если график не открыт то все равно не получает так CreateDataSource данные по инструменту
Функция CreateDataSource, Возможно ли получать данные с её помощью по любому инструменту не открывая его график?
 
Цитата
Stanislav Tvorogov написал:
Для получения данных через "CreateDataSource" необходимо, чтобы был открыт соответствующий график, либо чтобы был осуществлен их заказ через вызов функции ds:SetEmptyCallback().
Ага спасибо, и еще вот скажите пожалуйста -

ds=CreateDataSource(Class_Code, Sec_Code, INTERVAL_M15)
ds:SetEmptyCallback()
Создадут получение обновляющихся данных с сервера? Т.е. достаточно ли скажем эти строки для конкретного инструмента один раз в oninit( ) прописать и новые свечи по инструменту будут приходить или же надо эти две функции выполнять по новой для обновления данных?
Функция CreateDataSource, Возможно ли получать данные с её помощью по любому инструменту не открывая его график?
 
Всех приветствую, подскажите с помощью функции CreateDataSource - возможно ли получать данные о свечах любых доступных торговых инструментов неоткрывая их график?
А проблема такова что я использовал данную функцию в скрипте и обнаружил что для того чтобы эта функция получала данные по инструменту его график должен быть открыт, если график неоткрыт то функция ничего не получает
В Система/Настройки/Основные настройки/Программа-получение данных
Сначала стояла опция - "Исходя из из настроек открытых пользователем таблиц"
Я ее переключил в - "С учетом настроек, выбранных через пункт меню "Система/Заказ данных/Поток котировок"
и поставил галочку "Обновлять все данные после расширения списка получаемых инструментов и параметров"
Там, допустим меня интересуют акции, включил фильтр инструментов и там добавил в список получаемых ценных бумаг все имеющиеся доступными акции
Но ничего не изменилось - CreateDataSource по прежнему получает данные с открытых графиков, даже терминал перезапустил - также не помогло, пробовал и Система/Заказ данных/Перезаказать данные, со всеми галочками, перезапустил терминал - ничего не изменилось
QLUA, вопросы начинающих.
 
Цитата
Sergey Gorokhov написал:
Но, Вы можете написать алгоритм который будет искать нужные параметры в таблицах лимитов через функцию getItem.
Спасибо!
Подскажите по расчету RSI
 
Всех приветствую, подскажите пожалуйста как рассчитать RSI

Читаю вот такое:
Расчёт индикатора RSI Формула RSI следующая: RSI = 100 - [100/1 + RS], где RS - среднее значение положительных изменений цены закры­тия за определенное число дней,

деленное на среднее значение отри­цательных изменений цены закрытия за то же число дней.
RS = средний прирост (average gain) / среднее падение (average loss)

где  RS - среднее значение положительных изменений цены закры­тия за  определенное число дней, деленное на среднее значение отри­цательных  изменений цены закрытия за то же число дней. Скажем, чтобы рассчитать  9-дневный индикатор RSI, сперва надо просуммировать все ценовые  приращения (в пунктах) в дни роста за 9-дневный период и разделить сумму  на девять. Затем просуммировать все отрицательные изменения цены,  отмеченные в дни снижения за 9-дневный период, и разделить сумму на  девять. После этого найти относительную силу (RS) пу­тем деления  среднего положительного ценового изменения на среднее отрицательное. И  наконец, подставить значение RS в формулу RSI и по­лучить осциллятор с  амплитудой колебаний от нуля до 100.

Вот  не совсем пойму в итоге - так как же рассчитать RS? Скажем за 14 дневный  период, получается нужно по свече за день правильно? И как по ним  посчитать все ценовые приращения и все отрицательные изменения цены? Что мне суммировать что вычитать?
Подскажите по Таблице лимитов по денежным средствам
 
Извините, поспешил написал, почитал справку и разобрался
Подскажите по Таблице лимитов по денежным средствам
 
Здравствуйте, разьясните пожалуйста подробно новичку по Таблице лимитов по денежным средствам, в частности интересует занчение параметров

Входящий остаток, Текущий остаток, Всего, Доступно, Баланс

В частности тренируюсь на демо-счете, накупил акций потом их все продал, теперь у меня в этой таблице такие параметры:Входящий остаток = -25653,35р
Текущий остаток = 108974,79р
Всего = 108974,79р
Доступно = 108974,79р

Баланс = 108974,79р

Какой из этих параметров показывает количество свободных денег оставшихся у меня на счету?
Что значит параметр Входящий остаток? Почему он с минусом?
QLUA, вопросы начинающих.
 
Люди подскажите пожалуйста - как при запуске скрипта, из секции OnInit () сразу узнать текущее состояние баланса денежных средств, исходя из справки для этого служат функции getMoney  и getMoneyEx, им нужно передать параметры (STRING client_code, STRING firmid, STRING tag, STRING currcod
client_code можно получить а как получить firmid, tag и currcod?
Их  можно получить либо по результатам из таблиц ontrade или onorder но для  этого уже после запуска скрипта создать заявку,  либо прописать вручную, но допустим я хочу максимально автоматизировать  скрипт - чтобы он без совершения каких либо сделок или заявок сам каждый  раз узнавал все нужные рабочие параметры, без прописывания их вручную, терминал  ведь знает все эти параметры сразу после соединения с сервером
QLUA, вопросы начинающих.
 
Вообщем сравнил результаты выгрузки таблиц OnOrder (neworder) и OnTrade(trade_data) в файл (дубликаты по одной и той же сделке)
Таблицы neworder отличаются значениями withdraw_datetime, datetime и uid, причем 1ый uid=0 а второй uid = 132894
Таблицы  trade_data отличаются значениями canceled_datetime  (Какой тут может  быть canceled_datetime? заявка ведь выполнена) и datetime
QLUA, вопросы начинающих.
 
Цитата
что именно не понятно?
добавляете условие if и пишите проверку, все стандартными средствами lua никакой магии.
Вы же умеете сравнивать две переменные? (if a==b then) вот это оно и есть.
вопрос только в том как хранить ранее полученные данные
можно просто в виде таблицы lua
можно в файле
как Вам удобней
А да, сразу что то не подумал все просто, еще до того как вы ответили уже решил проблему примерно так
function OnInit ()

ordn=0
tr=0
end

function main()
   while is_run do
      tr=0
      ordn=0
      sleep(1000)
   end;

function OnOrder (neworder)

if ordn==0 then
ordn=neworder.order_num
....
end

function OnTrade(trade_data)
   
if tr~=0 then return end
   if tr ==0 then
   tr=trade_data.trade_num
...
end

Но хотелось бы знать почему на выполнение одной заявки на покупку одного  лота  приходит три ответа с разным временем? Это временный глюк на сервере или эти дубликаты могут иметь какое то значение?

QLUA, вопросы начинающих.
 
Цитата
Sergey Gorokhov написал:
Просто добавить условие фильтрации. Если сделка с таким номером по данному классу уже была то игнорировать.
Извините за глупый вопрос - как это сделать? Для этого есть какие то функции qlua? или же обычными средствами lua
Во втором случае примерно понятно как это сделать
QLUA, вопросы начинающих.
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,Это нормально, т.к. сервер может обновлять некоторые параметры сделки, он присылает ее несколько раз.Тоже самое с заявками.
И как же мне отфильтровать дублирующиеся мне ответы от сервера? Можно это делать вручную сидя за компом но тогда и смысла скрипты писать нет, я ведь пишу скрипт как раз для того чтобы автоматизировать различные действия и не сидеть для этого за компом, уже перепробовал много раз - Ontrade все время выполняется три раза,
для интереса даже переписал скрипт для изучения происходящего, примерно вот в такой вид

IsRun = true;
function main()
while is_run do
      sleep(50)
  end;

end;

function Oninit ()
n=0
end

function OnOrder (neworder)

       file = io.open("C:\\FinamJunior\\logs\\res_onorder.txt", "a")
     n=n+1
   file:write(tostring (n).."\n")
   file:close()

end

function OnTransReply (transorder)

       file = io.open("C:\\FinamJunior\\logs\\res_ontransreply.txt", "a")
       n=n+1
   file:write(tostring (n).."\n")
   file:close()

end

function OnTrade(trade_data)

       file = io.open("C:\\FinamJunior\\logs\\res_ontrade.txt", "a")
       n=n+1
   file:write(tostring (n).."\n")
   file:close()

end

function OnStop()
 IsRun = false;
end;

Далее делаю следующее - формирую завку на покупку одного лота некоторых  акций по рыночной цене, чтобы заявка быстро была выполнена, и отправляю  ее и вижу следующий результат:
функция OnTrade выполняется первой, причем три раза, в файле res_ontrade.txt  я увидел 1 2 3
Затем выполняется два раза функция OnOrder, два раза - в res_onorder.txt я увидел 4 5
Функция OnTransReply вообще не была выполнена ни разу - в файле res_ontransreply.txt  пусто

QLUA, вопросы начинающих.
 
То есть получается что при выполнении сделки функция ontrade ( )  у меня выполняется трижды, либо ее тело трижды, странно
QLUA, вопросы начинающих.
 
Всех приветствую, ребята подскажите в чем может быть проблема - вообщем только начал изучать Qlua и создание скриптов на нем для квика, создал для начала пробный скрипт
по простой схеме -

IsRun = true;
function main()
while is_run do
       sleep(50)
   end;
 
end;

function ontrade (trade_data)

file = io.open("res_ontrade.txt", "a")
   
   for key,v in pairs(trade_data) do
   file:write(key .. " = " ..tostring(v).. "\n")
   end
   file:close()

end
function OnStop()
  IsRun = false;
end;

в тело функции ontrade прописал простенький скрипт для записи результата выполненной сделки в текстовый файл но тут происходит странное - в случае совершения сделки, т.е. одной сделки любой сделки, покупка продажа - запись результатов происходит трижды, много раз перепробовал все одно и то же - сделка одна и три одинаковых записи подряд о ней, почему так?


Значение символов из таблиц вроде %q+
 
Хорошо спасибо, еще вопрос, дальше в https://www.lua.org/pil/20.3.html встречаю набор с 3мя %, как это можно понять?

The corresponding encoding is also easy to write. First, we write the escape function; this function encodes all special characters as a `%´ followed by the character ASCII code in hexadecimal (the format option "%02X" makes an hexadecimal number with two digits, using 0 for padding), and then changes spaces to `+´:

function escape (s)
s = string.gsub(s, "([&=+%c])", function ©

                                       return string.format ("%%%02X", string.byte©)

                               end)
        s = string.gsub(s, " ", "+")
        return s

end


"%%%02X"  - что тут означают аж три знака % ?, первый надо понимать экранирующий, но зачем после него еще два знака % а не один? Т.к. сказано что опцией является %02X а не %%02X
Значение символов из таблиц вроде %q+
 
Разобрался но не до конца, читаю у Иерусалимчего о паттернах дальше, на https://www.lua.org/pil/20.3.html, там такой пример:
As a more useful example, let us write a primitive format converter, which gets a string with commands written in a LaTeX style, such as
   \command{some text}
and changes them to a format in XML style,
   <command>some text</command>
For this specification, the following line does the job:
   s = string.gsub(s, "\\(%a+){(.-)}", "<%1>%2</%1>")
For instance, if s is the string
   the \quote{task} is to \em{change} that.
that gsub call will change it to
   the <quote>task</quote> is to <em>change</em> that.

Что значат эти два прямых слэша в s = string.gsub(s, "\\(%a+){(.-)}", "<%1>%2</%1>")   -  "\\(%a+){(.-)}"?
На этот раз они не в квадратных скобках, теперь у них уже другой смысл
Поэкспериментировал,
С двумя и более слэшами вывод print(s) выдает:
the <quote>task</quote> is to <em>change</em> that.

А с одним и без вывод print(s) выдает:
the \<quote>task</quote> is to \<em>change</em> that.
Значение символов из таблиц вроде %q+
 
Цитата
Анатолий написал:
Цитата
Nikolay Pavlov написал:
Добрый день.Поищите в интернете статьи об использовании паттернов или регулярных выражений в Lua, это достаточно мощный и интересный функционал, вот для примера официальное описание для Lua   https://www.lua.org/pil/20.2.html  , на русском так же статей много.
Может вы будете так добры что подскажет дальше, вообщем читаю про паттерны, многое стало ясно но опять наткнулся на место где без обьяснения что это применяется некоторая вещь, а именно, в  https://www.lua.org/pil/20.3.html

Цитата
We can also use captures in the pattern itself. In a pattern, an item like '%d', where d is a single digit, matches only a copy of the d-th capture. As a typical use, suppose you want to find, inside a string, a substring enclosed between single or double quotes. You could try a pattern such as '["'].-["']', that is, a quote followed by anything followed by another quote; but you would have problems with strings like "it's all right". To solve that problem, you can capture the first quote and use it to specify the second one:

   s = [[then he said: "it's all right"!]]
   a, b, c, quotedPart = string.find(s, "([\"'])(.-)%1")
   print(quotedPart)   --> it's all right
   print©            --> "

Тут в паттерне "([\"'])(.-)%1" используется такой шаблон как %1 который в данном случае означает первую захваченную кавычку, но в  https://www.lua.org/pil/20.2.html  нигде небыло сказано о паттернах вида %цифра, и еще я не совсем понял что там означает прямой слэш в [\"'], т.к. в паттернах применяются везде только обратные слэши - /, надо понимать что он ничего не значит а в квадратных скобках просто указываются все символы один из которых должен быть в строке к которой применяется шаблон, то есть либо \ либо " либо ', ну а как же тогда истолковывается %1? и дальше там идут такие же примеры:
print(string.gsub("hello Lua!", "(%a)", "%1-%1"))
     -->  h-he-el-ll-lo-o L-Lu-ua-a!

В книге же у него этот пример приводится с %0:
print((string.gsub("hello Lua!", "%a", "%0-%0")))
       --> h-he-el-ll-lo-o L-Lu-ua-a!

обе программы, и с %0 и с %1 работают одинаково

print(string.gsub("hello Lua", "(.)(.)", "%2%1"))
     -->  ehll ouLa

что тут означают %2 и %1?
Что значат все эти %0, %1, %2, %3 и т.д.?
Удалите, разобрался
Значение символов из таблиц вроде %q+
 
Цитата
Nikolay Pavlov написал:
Добрый день.Поищите в интернете статьи об использовании паттернов или регулярных выражений в Lua, это достаточно мощный и интересный функционал, вот для примера официальное описание для Lua  https://www.lua.org/pil/20.2.html , на русском так же статей много.
Может вы будете так добры что подскажет дальше, вообщем читаю про паттерны, многое стало ясно но опять наткнулся на место где без обьяснения что это применяется некоторая вещь, а именно, в https://www.lua.org/pil/20.3.html

[QUOTE]We can also use captures in the pattern itself. In a pattern, an item like '%d', where d is a single digit, matches only a copy of the d-th capture. As a typical use, suppose you want to find, inside a string, a substring enclosed between single or double quotes. You could try a pattern such as '["'].-["']', that is, a quote followed by anything followed by another quote; but you would have problems with strings like "it's all right". To solve that problem, you can capture the first quote and use it to specify the second one:

   s = [[then he said: "it's all right"!]]
   a, b, c, quotedPart = string.find(s, "([\"'])(.-)%1")
   print(quotedPart)   --> it's all right
   print©            --> "
[/QUOTE]

Тут в паттерне "([\"'])(.-)%1" используется такой шаблон как %1 который в данном случае означает первую захваченную кавычку, но в https://www.lua.org/pil/20.2.html нигде небыло сказано о паттернах вида %цифра, и еще я не совсем понял что там означает прямой слэш в [\"'], т.к. в паттернах применяются везде только обратные слэши - /, надо понимать что он ничего не значит а в квадратных скобках просто указываются все символы один из которых должен быть в строке к которой применяется шаблон, то есть либо \ либо " либо ', ну а как же тогда истолковывается %1? и дальше там идут такие же примеры:
print(string.gsub("hello Lua!", "(%a)", "%1-%1"))
     -->  h-he-el-ll-lo-o L-Lu-ua-a!

В книге же у него этот пример приводится с %0:
print((string.gsub("hello Lua!", "%a", "%0-%0")))
       --> h-he-el-ll-lo-o L-Lu-ua-a!

обе программы, и с %0 и с %1 работают одинаково

print(string.gsub("hello Lua", "(.)(.)", "%2%1"))
     -->  ehll ouLa

что тут означают %2 и %1?
Что значат все эти %0, %1, %2, %3 и т.д.?
Значение символов из таблиц вроде %q+
 
Цитата
Nikolay Pavlov написал:
https://www.lua.org/pil/20.2.html
Вот тут все стало ясно и понятно
Значение символов из таблиц вроде %q+
 
Здравствуйте! Только начал изучать lua по книге Роберто  Иерусалимского и у него сразу пошло, без обьяснения, использование неких последовательностей символов в таблицах вроде %q+ или %w+ или %a+ или все тоже самое но без плюса, растолкуйте мне пожалуйста что они значат и что дает добавление знака плюс?
Страницы: Пред. 1 2 3
Наверх