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

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

Страницы: Пред. 1 ... 62 63 64 65 66 67 68 69 70 71 72 След.
Я в ужасе!! Кто-нибудь отзовитесь пожалуйста и скажите что это неправда!!
 
Одно из существенных достоинств луа это то, что таблицы не копируются а передаются указателем.
Это существенно ускоряет вычисления и экономит память, особенно в микроконтроллерах.
Если нужна копия таблицы, то надо делать явно через цикл.
Как быстрее войти в сделку, Как быстрее получить нужно значение цены или графика для выполнения условия
 
Цитата
ED921 пишет:
Здравствуйте. Тоже пытаюсь разобраться ..) И все-таки подскажите пожалуйста, как лучше на примере простых стратегий (по параболикам, пересечением скользящим) формировать сигнал для заявок? В простых примерах на просторах инета, часто берутся данные индикаторов прямо с графика, можно же наверно расчеты тех же скользяшек делать в скрипте используя (что-то, что лучше?, может про это спрашивалось в топике) и так будет быстрее, чем ждать когда Квик посчитает... Потом, что лучше брать для дальнейших действий в алгоритме, к примеру купили и хотим сразу выставить заявку на продажу, что лучше ждать?, отклика от сервера, что заявка исполнена или можно использовать данные ТЧП или это может быть гораздо дольше.... Простите пожалуйста за то, что неуч еще тот.. не программист я, просто времени свободного навалом, вот и читаю все подряд про QLua )
На примере простых стратегий подсказать очень просто: НЕЛЬЗЯ на простых стратегиях выиграть на бирже.
-------------------------------------------------
Простые примеры на просторах инета для того,
чтобы показать буратинам,
что на поле чудес они могут быстро стать карабасами.
Буратинам обычно этого достаточно.
----------------------------------------------------------
"Мы люди не местные,
детство тяжелое,
учиться некогда,
хотим много денег
Надеемся на халяву и чудо.
Простите нас пожалуйста."
- молитва начинающих игроков.
.
Highlight
 
Вот интересно, что реально хочет сказать автор этой фразы:
" Мы постараемся рассмотреть его (пожелание)..." и "постараемся ... сообщить Вам результаты анализа"
--------------------------
Варианты ответа:
-----------------------
a) Ваш вопрос такой маленький, что без специального старания его никак не рассмотреть.
----------------------
b) Мы очень заняты, но все же постараемся понять , что же Вы написали. Для этого проведем анализ.
----------------------------
c) Мы создадим специальную комиссию , которая тщательно проанализирует Ваше высказывание.
и "постараемся ... сообщить Вам результаты анализа"
----------------------------------------------------------------------------------------------------------

"Над кем посмеялся, тому уже простил, того даже полюбить готов" -И.С.Тургенев
Запуск скриптов lua
 
Могу предположить, что при запуске в автомате Ваши скрипты обращаются к еще не полученным данным.
В результате получаете nil и аварийное завершение.
когда пускаете кнопкой все данные уже подгружены и такого не происходит.
Почему умерает корутина?
 
Viktor MMM
Попробуйте рассмотреть работу Вашей программы,
когда приходят onorder, а корутина еще занята обработкой предыдущего.
-----------------------------------------
Для использования корутины с колбеками надо делать очередь.
Как быстрее войти в сделку, Как быстрее получить нужно значение цены или графика для выполнения условия
 
Параболик в любом случае работает с историей сделок.
Если цена для заявки - все равно,  то ставьте "по рынку"
Аккаунт выставившего заявку, Можно ли увидеть?
 
Объясняю.
против Вас играет маркет-мейкер.
У него алгоритм такой: Если стоит против, то ему биржа платит.
----------------------------------------
Когда Вы якобы обыгрывали -  Вы просто стояли по рынку.
А когда рынок пошел против Вас -  Вы просто этого не заметили.
----------------------------------------
Когда по рынку - то все гуру,
а когда против - то ищут кукловода,
а он - в зеркале.
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
1) на любой взгляд этот цикл "for i=1, 30 do" лишний.

2) Если надо делать такое лишь один раз в сессию то можно и так,
но если это делается всю сессию,
то надо ставить колбек OnQuote(STRING class_code, STRING sec_code).  
Ограничения VM LUA, указываются существующие ограничения при программировании на LUA
 
http://www.kamynin.ru/archives/5851
Объединение массивов
 
такой вариант устроит:
-----------------------------
for i=1,#b do a[#a+1]=b[i] end;
table.sort(a);
for i=2,#a do if a[i-1]==a[i] then a[i-1]=nil end end;
table.sort(a);
Ontrade
 
Цитата
Серж пишет:
Цитата
Alexey K пишет:
почему у меня в этой части скрипта выдает ноль?
А вот если бы указал trade=getItem("trades", getNumberOf("trades")-1) то получил бы номер заявки предыдущей сделки
Потому что в хранилище Квика сделка попадает после отработки колбека. Поэтому внутри колбека getNumberOf возвращает количество сделок без учёта последней. И взять её значение из таблицы функцией getItem невозможно.
Но вот почему у вас ноль, а не nil - вот это вопрос.
Момент записи сделки в хранилище не имеет никакого значения в данном случае.
--------------------------------
В данном колбеке:
------------------------------------
function OnTrade(trade_data)
trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)
end
------------------------
обрабатывается не последняя совершенная сделка,
а сделка, которая находится после в таблице  в ячейке getNumberOf("trades")

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

т е trade_data никакого отношения не имеет к следующим операторам:

trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)
--------------------------------
Т е message выводит в сообщение номер сделки в пустой ячейке таблицы.
(см. мой комент выше)


---------------------------------------
А эта запись:
------------------------------
function OnTrade(trade_data)   message(tostring(trade_data["order_num"]),1) end
--------------------------------
обращается не к хранилищу, а к полученной таблице с параметрами сделки.
Хранилище здесь тоже не имеет никакого значения.
---------------------------------------------------
ноль очевидно потому, что  trade_data.order_num=0.
Новый индикатор
 
Добрый день,
Юрий Жбаков,
А Вы без этого индикатора тренд не видите?
Или есть надежда,
что по индикатору лучше гадать, чем по графику цены?
SetTableNotificationCallback
 
К каждой проблеме надо подходить творчески.

Если окно не закрывается, попробуйте выключить монитор.
Если и после этого не закрывается,
то выключайте свет и ложитесь спать под теплое одеяло.
--------------------------------------------------
Мужайтесь! Запад нам поможет!
нужно ли использовать Clear() при завершении скрипта
 
QLUA это не способ достижения результата,
а  средство для увлекательного процесса угадывания.
------------------------
Мужайтесь, Запад нам поможет.
Ontrade
 
первый элемент таблицы имеет индекс  0,
всего элементов в таблице:  getNumberOf("trades")
последний элемент имеет индекс getNumberOf("trades")-1
первый свободный( несуществующий ) элемент имеет индекс:  getNumberOf("trades")
----------------------
Поэтому и ноль.
Подсобите с битовыми флагами на примере выяснения позиции из таблицы OnTrade( )?
 
Цитата
Николай Бехтерев пишет:
Зачем было вводить эти биты, какая-то экономия на памяти?)))
Все еще смешнее на самом деле это не экономия, а лишние затраты,
так как битовая операция  bit.band(order["flags"],4)
занимает места больше,
чем экономия памяти на упаковке флагов.
--------------------------------------
Возможно, что так сделано для того,
чтобы неподготовленным пользователям (а таких большинство) "жизнь медом не казалась".
Синхронизация потоков в своей dll на с++
 
Добрый день,
Добавлю свой стакан бензина в костер дискуссии.
--------------------------
Есть как минимум два варианта
1) несколько скриптов с обменом информацией между скриптами
2) несколько потоков и один из них main с дополнительной синхронизацией потоков
----------------------------
Хотя поток входных данных с сервера один, но это не мешает сделать параллельную обработку,
так как обработка данных умным роботом требует значительных ресурсов.
А обработку по разным инструментам можно делать параллельно без проблем.
-------------------------------
Из собственного опыта замечу,
что в QUIKe на существующем уровне реализуются оба способа( реализовал год назад оба)
Синхронизация потоков в своей dll на с++
 
Дмитрий,
1) Вот здесь:
"ещё несколько потоков будут подписываться на ТВС и перебирать все сделки через CreateDataSource (а их может быть миллионы). "
У Вас огромные резервы в повышении производительности.
Рекомендую полностью пересмотреть Вашу концепцию  обработки информации.
-----------------------------------------------
2) Следует учитывать что сораунды не позволяют задействовать множество ядер в процессоре  или множество процессоров в кластере.
Они позволяют переключаться лишь между фрагментами алгоритма в рамках одного ядра.
Поиск элемента в таблице
 
Дмитрий,
В чистом луа таких средств нет.
Для упрощения текста оформите функции поиска элементов в таблице в виде модуля
или найдите готовый модуль.
вопрос по коллбекам, к разработчикам (ONLY)
 
Добрый день,
утомился я читать эту перепалку что-то.
-----------------------------------
попробую ответить, чтобы ускорить обсуждение.
------------------------------------------
колбеки - это обычная функция в глобальной таблице скрипта.
-------------------------------------
если у вас есть бесконечный цикл в скрипте,
то колбек никогда не вызовется и квик повиснет.
---------------------------
собственно майн для того и сделан,
чтобы обеспечить работу скрипта вне основного потока колбеков
т е тела скрипта вне майн.
------------------------------
Надеюсь , что объяснил понятно.
sendTransaction
 
Michael Bulychev,
Теперь все понятно. Спасибо.
--------------------------------------------------
Замечу, что риторические вопросы не требуют ответов.
Поэтому они не могут затягивать обсуждение по определению.
Просто надо внимательно читать вопросы и учитывать,
что не все могут угадать,
что именно Вы спрятали по капот Вашего творения.
------------------------------------------
Каждый понимает вопросы по-своему.
Кому-то кажется сарказм,
кто-то вникает в суть, не обращая на форму,
а кто-то подглядывает со-стороны
и тупо вставляет свои оценки - "флуд".
----------------------------------------------
Не бывает глупых вопросов ,
бывают глупые ответы.
Глупее глупее ответов бывают лишь
глупые оценки подсматривающих за обсуждением.
sendTransaction
 
Может объясните, как эмуляцией с использованием OnTransReply
можно получить результат транзакции без использования OnTransReply
sendTransaction
 
Добрый день, Михаил
Вы надеюсь поняли, что не ответили челу на его вопрос?
Если нет то повторю:
Вопрос:
Как получить результат транзакции, без использования OnTransReply ?
Естественно ожидать два варианта:
1) Невозможно.
2) или какой-то вариант "без использования OnTransReply "
Вот Ваш ответ:
"Только эмуляцией, с использованием sendTransaction и OnTransReply."
Вы придумали третий вариант очень напоминает ответ "сам дурак",
Просто замечательный ответ.
Главное доходчиво и сразу все понятно.
Событие возвращает ошибку 1000
 
это значит, что на вершине стека лежит эта константа.
попробуйте поставить проверку типа
после вызова функции обращения к стакану.
   lua_pcall(st, 2, 1, 0);
весьма возможно что функция ничего не вернула или вернула nil,
а вы пытаетесь что-то извлекать из стека.
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
 
Евгений,

"Мои коды просты как дрова, сложные я писать не умею"
Значит Вы профессионал,
потому что сложные( вернее сказать мудреные)  пишут начинающие.
--------------------------------------
В структурном программировании есть такое образное сравнение.
программа не должна напоминать тарелку вареных спагетти,
в которой трудно понять где что начинается и кончается.
Программа должна быть подобно жемчужному ожерелью.
Каждая функция подобно ниточке жемчуга.
Можно удалить, но ожерелье не рассыпется.
--------------------------
Ну а, у Вас тоже хорошо - стопка дров.
Успехов
Событие возвращает ошибку 1000
 
В целом проблема понятно, проверяйте типы данных и значения на nil.
И будет Вам счастье.
Событие возвращает ошибку 1000
 
NiKO,
последний Ваш тест это про другую ошибку
т е отсутствие данных по стакану
она известна
надо проверять на nil
Событие возвращает ошибку 1000
 
NiKO
А сделайте такой тест
вместо
sleep(1000)
напишите
sleep(999)
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
 
Евгений,
------------------------------
Я указал как возможную ошибку ограничение памяти на основании того, что Вы указали о ранее работавшей программе.
Т е данная конструкция у Вас работала. Т е она интерпретировалась правильно.
Теперь не работает. как вариант, интерпретатрор обрезал строку и получил ошибку.
----------------------------------------
Давным дано я решил большинство проблем программирована на QPILE таким образом:
----------------------------------------------
Написал препроцессор , но так как компилятора нет в QPILE, то назвал его компилятор,
который сам создает внутренние переменные для функций.
---------------------------------------------------
Вместо функций сделал макросы.
----------------------------------------------------
Компилятор выдает список всех переменных и функций.
----------------------------------------------
Все функции и макросы разместил в библиотеках.
--------------------------------------------------
В результате программа на QPILE стала простой и понятной.
--------------------------------------------------------
Кроме того, таким образом снимается ограничение на максимальное число переменных и функций.
-------------------------------------------------------
Если владеете языками рекомендую сделать так.
 
Событие возвращает ошибку 1000
 
if (top == 0) return 0;    
поставьте здесь проверку значения на вершине стека  на тип кода или вывод в лог файл
string sec_code = lua_tostring(st, -1);// qlua.ToString(-1);   // код бумаги
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
 
Добрый день,
выражение
if((Server_Time_var-Registration_Time)>Time_Criterium_for_Bad_Deal)
перепишите так:
x=Server_Time_var-Registration_Time-Time_Criterium_for_Bad_Deal
if x>0
--------------------------------------
Можно предположить, что не хватает памяти для данной строки и в результате облом.
------------------------------------
Могу рекомендовать следующее правило:
Не пишите сложных и длинных выражений в условиях и такой проблемы никогда не будет.
И еще в QPILE не рекомендую использовать длинные имена переменных.
Все переменные и функции на одном уровне видимости.
Длинные имена лишь замедляют интерпретацию  
sendTransaction
 
Добрый день, Михаил,
Хорошо бы  увидеть конкретный ответ.
А то "эмуляция", хотя и короче двух слов и предлога между ними, но звучит почти также.
sendTransaction
 
А что такое "эмуляция"?
----------------------------------------------
ВИки: Эмуля́ция (англ. emulation) в вычислительной технике — комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (или эмулирования) функций одной вычислительной системы (гостя) на другой, отличной от первой, вычислительной системе (хосте) таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы (гостя).
------------------------------------------
Вы это рекомендуете?
Может стоит объединить функции O, H, L, C, V, T в одну?
 
возможно имеет смысл,
если сделать это на CИ (сами пользователи этого не сделают, а на луа это будет медленнее, чем существующее решение)
и возвратить таблицу типа:
local x= ds:candle(index)
Формат даты
 
Добрый день,
ну да, "без выкрутасов":
-------------------------------
есть общепринятые форматы дат.
А это:  2015 0002 01,  2015 0002 01 не дата
и не число.
а последовательность цифр и пробелов.
Вилы Эндрюса
 
"Служить бы рад, прислуживаться тошно"
Зависание терминала, Зависание терминала при загрузке портфеля qpile
 
Дмитрий,
А если это "неправильно" так удивило ОС, что у нее пропал дар речи?
Надо ставить BREAKPOINT и по шагам искать проблему.
Вилы Эндрюса
 
yako-v,
ВИЛЫ ЭНДРЮСА - это всего-то лишь прямая проведенная из одной точки через середину отрезка, соединяющего две других. Т е это настолько примитивный индикатор, что он без проблем рисуется в квике.
--------------------------------------------------------
Неужели Вы серьезно верите, что Эндрюс на таком примитиве делал бабло на рынке.
50 лет ему приносит бабло издание книжечки для буратин.
Как в прочем и большинству популярных книг о торговле на фондовом рынке.
----------------------------------------------------------
лучше почитайте книгу Сореса Новая парадигма финансовых рынков.
Этот чел по крайней мере не пишет бульварных книг для буратин, но делает деньги.
.
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
 
Серж,
Вы заблуждаетесь.
Ответ на вопрос платная или нет очень простой.
Если Вы платите за эту программу,
то она для Вас платная, если нет - то бесплатная.
--------------------------------------------
Т е программу покупает проф участник рынка(брокер) , который вам оказывает услуги.
Для него она платная.
Но Вам он может предоставлять как платные так и бесплатные услуги.
Большинство брокеров не берет плату за предоставление данной программы,
что снимает с них ответственность за качество этой услуги.
В этом случае данная услуга бесплатная для клиентов брокера.
Кроме того, терминал QUIK  -это программа подачи поручений, исполнение которых не является обязательным для брокера.
Т е Вы ему сообщили? Он Вас услышал?
Все!!
Если окажет услугу (купит или продаст) - возьмет денюшку если нет, то нет.
---------------------------------------------------------------------------
Вместо того, чтобы наезжать на разработчиков ,
перечитайте внимательно ГК РФ, ФЗ о защите прав потребителя, ФЗ о рынке ценных бумаг и регламент брокера.
Претензии к бесплатным продуктам не имеют никаких правовых последствий.
----------------------------------------------------------------------
"Дареному коню в зад, т е в зубы не смотрят" - народная мудрость.
не добавляются строки в таблицу
 
Дмитрий
Вот так все работает:
-------------------------------------------

local stopped, t_id
------------------------------------------------
function main()
 t_id = AllocTable()
 res = AddColumn(t_id,1,"col1",true,QTABLE_STRING_TYPE,30)
 message("AddColumn - " .. tostring(res), 1)
 res = AddColumn(t_id,2,"col2",true,QTABLE_STRING_TYPE,30)
  CreateWindow(t_id)
 SetWindowCaption(t_id, "Моя таблица" ;)  
   local row = InsertRow(t_id, -1);   SetCell(t_id, row, 1, "тест" ;)  
 row = InsertRow(t_id, -1) ;    SetCell(t_id, row, 2, "привет" )
 while not stopped do
   sleep(1000)
 end
end
-------------------------------------------------
function OnStop(s)
stopped = true
if t_id~= nil then
           DestroyTable(t_id)
end
end

----------------------------------------------------
У Вас основная ошибка в том, что Вы пытаетесь работать с таблицей, т е добавлять строки и изменять название до ее создания - CreateWindow(t_id)
Библиотека QCtrls.dll
 
В одной русской сказке, под названием "по щучьему велению" сидел Иван на печи и мечтал

В другом классическом произведении есть тост "Хочу чтобы Все"
---------------------------------------------
мечтать оно конечно не вредно, но и бесполезно.
-------------------------------
"С одной стороны....С другой стороны" -ничего не напоминает ?
( типа песню из одного классического фильма)
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
 
вообще-то у большинства брокеров КВИК - бесплатная прога для подачи поручений и только,
А не торговая платформа  (можно почитать регламент брокера на досуге)
Не считываются параметры инструмента
 
вместо SIH5  надо писать SiH5   (i вместо I)
Снятие заявки и тут же ее выставление., Снятие заявки и тут же ее выставление.
 
проверять в таблице заявок ее снятие перед отправкой новой
Снятие заявки и тут же ее выставление., Снятие заявки и тут же ее выставление.
 
проверить разрешен ли шорт
Формат даты
 
Если без особых выкрутасов, то можно упростить:

function DateFormat(date, input_fmt, output_fmt)
  local day = date:sub(input_fmt:find("([d|D]+)")
  local month = date:sub(input_fmt:find("([m|M]+)")
  local year = date:sub(input_fmt:find("([Y|y]+)")
  local outstr = output_fmt:gsub("([d|D]+)",  day)
  local outstr = outstr:gsub("([m|M]+)",  month)
  local outstr = outstr:gsub("([y|Y]+)", year)
  return outstr
end

примерно в 2 раза быстрее.
Конвертация Qple на Lua
 
суть в том, что в LUA необходимо будет реализовать работу с событийной моделью робота, чего в QPILE просто нет.
Вот и вырастет программа  а если еще "да ладно " прикрутить то будет еще больше.
Относительно того в 2 или в 10 раз - это уж от автора произведения зависит.
Конвертация Qple на Lua
 
а если еще и "да ладно",
то в десять.
Библиотека QCtrls.dll
 
Почему-то полностью согласен с sam063rus ,
за исключением его пристрастия  к слову "дерьмо".  
Конвертация Qple на Lua
 
Если в QPILE 2000 строк,
то в луа будет раз в пять больше (включая строки программ на СИ).
Страницы: Пред. 1 ... 62 63 64 65 66 67 68 69 70 71 72 След.
Наверх