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

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

Страницы: Пред. 1 ... 12 13 14 15 16 17 18 19 20 21 22 ... 41 След.
Бесконечный цикл функции с заданным интервалом времени
 
nikolz, Сударь, Ваш "пример" иллюстрирует разве что как не надо программировать - нигде и никогда. Во-первых, в цикле нет задержки, идёт с безумной скоростью опрос системных часов, при этом время задано В МИНУТАХ! А уж набор "ифов" - это позор даже для начинающего программиста. Самого-то не тошнит от Вашего примера? Уж если корчите из себя учителя, хотя бы пишите примерно так:
Код
f=true;
t1={4,17,35,60} --массив интервалов в секундах
function main()
 local i,x,y;
 y=os.time();
 while f==true do
  x=os.time()-y;
  for i=1,4 do
   if x%t1[i]==0 then
    message(x.." истёк интервал "..t1[i].." сек");
   end;
  end;
  sleep(1000);
 end;
end;

function OnStop()
 f=false;
end;
Кроме того, только клинический дебил "поместит всю свою обработку в эти колбеки": это аналог прерываний, и потому любой нормальный программист будет из них уматывать как можно скорее. Наконец, вся та хрень, которую Вы здесь "рекомендуете изучить" относится к области ОС, в которую прикладника нельзя пускать ни при каких обстоятельствах - особенно "деятельных", вроде Вас, у которых ручонки чешутся что-то такое запрограммировать, а задача организации торговли прикладная до мозга костей.
Бесконечный цикл функции с заданным интервалом времени
 
shtur2005,
Цитата
А как сделать так, что бы одно другому не мешало?
Да никак не делать! ВАМ, ЛИЧНО ВАМ нужно что-то делать в эти 30 секунд? Нет? Так какое Вам дело, что кто-то там что-то "простаивает"? И вообще, разделение по потокам - это одна из главных глупостей Lua (после этой долбаной "динамической типизации" и убийства типа integer).
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Мне плевать, где они находятся - мой скрипт обращается к утилитам Квика, а всё остальное не мои проблемы.

А разве не Вы сегодня говорили, про "выявление новых записей в таблице сделок"? Что же это, если не "беготня по таблице"? К тому же, информация о сделках ничего не говорит о рассогласовании портфелей. И для этой проверки не нужно никаких колбеков - нужно лишь чтобы getDepoEx РАБОТАЛА!
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Да можно менять и ТФ баров, если надо - мне лично нафиг не надо. Диалог здесь, конечно, более, чем убогий, но кое-что позволяет даже он. У нас с Борисом, кстати, разные ТФ и разное количество свечей в них. Но ни у меня, ни у него нет ни одного ордера рыночного. Мне всё равно, что кому надо - это ИХ проблемы. Я же делаю только то, что надо мне (теперь, со значительным сопротивлением, и Борису), но и у нас это постепенно перетекает в то, что надо нам обоим.

Просмотр прямых таблиц НЕ даёт гарантию, что там ЕСТЬ запись, которая там ДОЛЖНА БЫ быть. Я говорю про то, что ЕСЛИ запись есть у брокера, ТО я должен иметь возможность программного доступа к ней. Мне НЕ НУЖНЫ обращения к данным сервера - мне нужны данные моего брокера, касающиеся моего портфеля. Коллбек же (я использую только OnTrade) даёт информацию О СДЕЛКАХ, а не о содержимом портфеля, и в подавляющем большинстве случаев даёт её правильно.

НЕ БЫВАЕТ такого "постоянно". И это ВЫЗЫВАЕТ существенные накладные расходы. У нас с Борисом СОТНИ (если не тысячи) тикеров под контролем, и по любому из них могут быть СОТНИ (если не тысячи) сделок. И с этим со всем прекрасно справляется именно OnTrade, и почти 146% гарантии, что беготня по таблице сделок с этим НЕ справится. Здесь же нам нужна РЕДКАЯ (примерно раз в час) сверка с брокером имеющихся текущих остатков (currentbal) - и только!

Да, я смотрю в таблицу текущих торгов, но тоже не "постоянно", а раз в полсекунды, "зато" по всем тикерам и у каждого из них смотрю LAST, BID и OFFER. Ну так getParamEx работает, а getDepoEx - нет.
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Квик падает примерно раз в неделю, и я на этот случай каждые 5 минут сбрасываю дамп на диск. За приход при перезапуске всех пропущенных колбеков я бы разработчикам яйца пообрывал, как и за любые другие проявления этого долбаного "антиллехта", пользователю не нужно останавливать скрипт для изменения настроек - для этого есть система меню. Пользователь может запускать и останавливать скрипт в начале, в конце торговой сессии и в любое другое удобное время.

Что значит "когда это решение для других, то я не могу знать как оно будет использовано"? На это есть ТЗ, инструкция пользователя и прочие "атрибуты удовольствия". И он должен работать в ОПИСАННЫХ ситуациях и не обязан работать в любых других.

Да, я предлагаю при каждой остановке скрипта снимать все заявки. Вернее, это предлагает Борис, у меня заявок мало, и подавляющее большинство из них срабатывает в течение 1-2 секунд. А вот "каждая остановка скрипта" у меня происходит примерно полтора раза в день: один раз "плановая", а остальные при разных сбоях. А у Бориса и того реже.

Ясно, Вы смотрите в таблицы терминала. Да, "можно говорить, что такое решение странное, не красивое и т.д", и оно ТОЖЕ не дает никаких гарантий. А в КАКИЕ ИМЕННО "таблицы терминала" Вы смотрите, КАК ЧАСТО и, главное, КАКИМ ОБРАЗОМ выявляете рассогласования? Я знаю лишь один способ для этого, и он называется getDepoEx. Да и тот не работает.
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Скрипт-то с какой радости "не работал"? А, ну да - если он не работает, никаких заявок быть не должно. Да он и так всё снимает через 3 минуты. Я потому и снимаю заявки по таймеру, что наивно предполагаю, что за это время сигнал гарантированно успеет придти, даже если сервер будет расположен на Луне (а начал я с 15 секунд). Вот именно, что торговля по неверным данным слишком опасна - для того-то и нужна сверка. Вы, лично Вы - сверяете свой портфель с брокером? Или хотя бы знаете того, кто сверяет? Как Вы умудряетесь получать "самое надежное решение как базовое"?
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Коллбеки как раз приходят пачками, вычищать дубли затрахаешься. Но приходят они иногда через несколько минут, когда заявка скриптом уже снята. Возможно, они приходят неправильно заполненными, и мой скрипт их не опознаёт - НУ НЕ ВЕРЮ я, что столько времени требуется на приход квитанций! Свет за секунду 7 раз вокруг Земли успевает облететь! А что Вы предлагаете в качестве альтернативы OnTrade? Рыться по таблице сделок, выкинув нафиг ПОСЛЕДНИЙ из коллбеков, который я использую? Так ведь всё равно не поможет! И скажите это Борису - моё скрипт делал десятки сделок в день (теперь, после Его Пришествия - сотни), но он-то хочет тысячи, если не десятки тысяч!
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Свой код сверки портфелей я выкладывал, и даже в этой ветке ссылку на него давал. И у меня, ленивого, тоже нет никакого желания сидеть за монитором и контролировать. Сверять портфели и вообще вести торговлю должен именно скрипт. Моя задача - запустить его утром и остановить вечером. Борис ещё ленивее - он его вообще выключать не хочет. Поэтому скрипт именно "всё помнит, считает, проверяет, корректирует". Но он В ПРИНЦИПЕ не может знать, что у него совершена сделка, если квитанция о ней к нему не пришла. А потому, чтобы просто УЗНАТЬ о том, что не так и прислать оповещение на почту, он должен периодически проводить сверку портфелей. А сверка не работает.
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay,
Цитата
Зачем рассказывать про то как скрипты работают месяцами - это само собой разумеется, а как иначе.
Это вовсе не "само собой разумеется" - это подразумевает наличие механизма восстановления после сбоев, который как раз у всех (включая меня, Бориса и Вас) пркактически отсутствует.

Про баланс вопрос совершенно конкретный: торгует именно скрипт, ведёт бухгалтерию именно скрипт (даже если имеются "левые" сделки - ручные или другими скриптами сделанные), скрипт отслеживает состояние своего портфеля и своих средств - в тех пределах, которые для него определил юзер, и ему совершенно необходимо знать, что по поводу его личного портфеля думает брокер. Ещё конкретнее: почему не работает getDepoEx?

А контролировать лимиты денежных средств, перед подачей транзакции - это простая задача: транзакций много хороших и разных, а сверка производится очень редко. Но если производится, то должна же работать, чёрт побери!  
Как сверить количество лотов в Квике и в моем роботе .
 
БорисД, Борь, ну какие "взаимные антипатии", какой "взаимный игнор"? Ты же помнишь, как лично твою ветку (очень популярную, кстати) просто уничтожило стадо распальцованных бездарей, с визгами и улюлюканьем. Ты же не хуже меня знаешь, что без сопротивления говно, как и газ, заполняет любой объём! Да, "ты так и не изучил  и не научился самостоятельно программировать  на Луа или каком то другом языке", и вряд ли когда-либо научишься, но с мозгами у тебя всегда было в полном порядке, мне с тобой всегда было интересно (думаю, и тебе со мной тоже), некоторые твои идеи уже воплотились в код, мною написанный, некоторые ещё нет, некоторые вообще вряд ли туда войдут, ибо неизвестно ещё, чьи идеи победят - мои или твои, некоторые мои ты уже принял... у нас с тобой именно СОТРУДНИЧЕСТВО, а не отношения "заказчик-исполнитель": ьв профессионал а торговле я - в программировании. И в наших с тобой разговорах мы тоже выражений не выбираем - половина местной публики давно бы соплями изошла, если на неё вывалить половину наших с тобой "текстов". Борь, но у нас с тобой всегда были, есть и будут разговоры ПО ДЕЛУ! А здесь что? Очередной долбаный "гуру", которого уже тыщу раз возили носом по его говну, в очередной раз всплывает и начинает засирать ветку очередной клинической хернёй с вумным видом. DDE - это ПРОТОКОЛ, БЛИН, и потому он В ПРИНЦИПЕ не может ничего обеспечивать - это могут только утилиты, поддерживающие этот протокол. В нашем же случае не работает специально для этого разработанная функция! Техподдержка опять молчит. И кивать после этого в сторону DDE... я просто не знаю, с чем это можно сравнить по уровню идиотизма. Кстати, я никогда не набрасывался на новичков, и здесь гонял именно "тех кто себя уже считает гуру как программист".
Бесконечный цикл функции с заданным интервалом времени
 
shtur2005, Любой бесконечный цикл формулируется на Lua как while true do... end; Любая пауза формулируется на Lua как sleep (Nms); А, ну да - s_mike всё это уже описал. А со свечами здесь полная жопа, причём даже нет надежды, что положение когда-нибудь улучшится.
Как сверить количество лотов в Квике и в моем роботе .
 
nikolz, Лапуль, ну что Вы корчите из себя профи, ну что Вы постоянно лезете с голой жопой против танка? Вы для меня перестали существовать как программист ещё со времён Вашей истерики по поводу VM, то бишь... ага, вот она, истерика образца 30.10.2020 13:39:44
Не знаю, что за книгу вы написали и здесь пиарите, но в языках и виртуальных машинах вы ноль без палочки. Где Вы увидели интерпретатор в реализации луа в квике? Это VM а не интерпретатор. И там не куски текста а байт код - т е это машинный язык именно VMLua.

Лапуль, я не только описал свой алгоритм сверки портфелей, но и привёл его полный код. Не Вам, лапуль, а сотрудникам техподдержки - Вы меня не интересуете вообще никак. Вот ссылка - Вам для общего развития и чтобы идиотских вопросов поменьше задавали:
https://forum.quik.ru/messages/forum10/message61995/topic6503/#message61995

А свой "обобщенный алгоритм робота" можете смело засунуть себе в задницу. :wink:  
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay,
Цитата
есть таблица depo_limits
К таблицам (точнее, только к одной "orders") я обращаюсь в очень редких случаях, чтобы снять активные несработавшие заявки (чтобы не связываться с OnOrder). Это которые через getItem. А к ТТТ я обращаюсь очень часто, сотни раз в секунду, и для неё есть специальная функция getParamEx. Аналогичная функция есть и для сверки getDepoEx - что же ещё должно работать, если не она? Тем более, она реально работала, а потом вдруг перестала. И что, Вы предлагаете выбросить на помойку специализированную getDepoEx и заменить её на универсальную getItem?

У меня старая версия скрипта позволяла торговать в режиме кентавра, учитывая "левые" сделки, которые на поймала через OnTrade, но такая техника имеет некоторые неприятные следствия, и я её отменил. Но и без этого некоторые сделки пропадают, и это почти гарантированное рассогласование портфелей. И вообще меня уже очень заинтересовал вопрос: кто как сверяет портфели? И сверяет ли вообще - неужели только мы с Борисом?
Как сверить количество лотов в Квике и в моем роботе .
 
nikolz, О! Ещё один списилист вразнос пошёл... :smile:

Ну и хренли тут очередной "гуру" пояснил? Я сразу по памяти сказал, что DDE - это протокол! Ща глянул в Вики - и про мелкомягих я всё правильно сказал. Только вот вопрос остался: ЗА КАКИЕ ХЕРОМ "приложениям обмениваться данными в различных форматах", если вот оно ОДНО-ЕДИНСТВЕННОЕ приложение по кличке "скрипт", которому нужно получить данные от брокера СПЕЦИАЛЬНО ДЛЯ ЭТОГО НАПИСАННОЙ БИБЛИОТЕСЧНОЙ ФУНКЦИЕЙ? А Борька ещё спросил, и я присоединяюсь к вопросу: "ХОТЬ КТО-НИБУДЬ на этом форуме вообще сверяет свои портфели с брокером? Да или нет?

Естественно, я ЗНАЮ "иной способ" - передача через файлы есть очередной идиотизм, и я об этом способе тыщу раз писал. И что файлы у меня используются лишь для чтения данных при запуске, записи данных по выходу, ведения лога и сбрасывания дампа каждые 5 минут, поскольку Квик всё чаще начинает отвисать.
Как сверить количество лотов в Квике и в моем роботе .
 
Nikolay, Описываю проблему (как я её вижу). Нужен программный доступ к моему портфелю со стороны брокера - то, что видит именно он. Эти данные довольно часто различаются (по разным причинам). И у меня претензия именно к тем данным, которые транслирует брокер (точнее, что даёт мне терминал). Он ничего не знает про мои активы, но это же не значит, что он должен выдавать нули!

Да, "скрипт ведет свою позицию", но данные портфелей должны совпадать! Иначе он ведёт торговлю по неверным данным, и самая безопасная ситуация в данном случае - "инструмент запрещён для операции шорт". То есть скрипт думает, что бумаги этого тикера у него есть и, соответственно, он может их продать, а брокер - что у него этих бумаг нет. Один из них неправ (причём ошибки встречаются и на той, и на другой стороне.
Как сверить количество лотов в Квике и в моем роботе .
 
БорисД, Насколько я знаю, DDE - это протокол. Старый. Заменён на какое-то новое говно вроде OLE. Всё это поделия мелкомягких, так что говно просто по определению. А вот нужна именно функция. Такая функция, как оказалось, есть (хотя меня когда-то здесь уверяли, что это сделать невозможно вообще никак), зовут её getDepoEx, и она действительно работает. Точнее, работала несколько дней после того, как я написал программу сверки портфелей, а потом работать перестала. Почему - без понятия, ни единой запятой в коде я не менял. По моим представлениям, эта утилита должна входить в базовый набор обязательным элементом - как вообще можно работать без сверки портфелей? Неужели НИКТО до сих пор этим опросом не озаботился?!

nikolz,
Цитата
Сомневаюсь, что кто-то сможет доходчиво и подробно рассказать такой алгоритм словами на форуме.  
Как говорил Станиславский, НЕ ВЕРЮ! Должен же хоть один программист хоть изредка появляться на этом форуме!
Вы не можете заменить заявку ..., так как ее обработка еще не завершена.
 
Проверка на то, что заявку снимают, не менее (а более) затратна, чем её обработка. Бирже уж точно не должно быть до этого никакого дела. Предъявлять претензии брокеру, что его железо не тянет тоже смешно: чем выше нагрузка, тем лучше - он именно за это деньги получает. Точнее, получает он комиссию за сделки, а вот передвигать заявки получается бесплатно, так что чисто алгоритмически перенос заявок должен быть последним в приоритете. Когда возрастает волатильность, на рынке (или на тикере) паника, а потому именно в эти моменты и нужно грести деньги лопатой: за всё платит юзер - тем более, тот, который неправильно поставил заявку. Ну, а задержка уведомлений о реально совершённых сделках - это просто свинство!
Возникает ошибка в квике
 
nikolz, Я не помню, что там "прекрасно работает на XP", но "десятку" я стал искать именно потому, что Квик на XP перестал "прекрасно работать" (Хрюша до сих пор стоит у меня на стационарном компе). А потом перестало работать на 32-разрядной математике. Точнее, прекрасно этот софт не работал нигде и никогда, а ХОТЬ КАК-ТО он пока ещё работает на 64 разрядах. Производители ВЫНУЖДАЮТ переходить на всё новое и новое говно - я писал уже, что сраный Яндекс под XP уже не поддерживает даже сраную почту - у этих козлов там опять какие-то долбаные "новые возможности" нарисовались! Короче, все умерли.(с)
Возникает ошибка в квике
 
Николай Колесников, Я в своё время специально для Квика искал 32-разрядную "десятку". Нашёл (с неё сейчас и пишу), а Квик тут же перевели на 64 разряда. Пришлось покупать ещё один ноут "специально для Квика". :smile:  
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Daniil Pozdnyakov, Добрый день, Даниил.

Так у меня же просто нет никаких новых скриншотов! Меня не интересует ничего, кроме текущего остатка в бумагах. Кстати, я не уверен, что getDepoEx возвращает 0 - может, и nil. Дело в том, что я провожу сверку по всем тикерам, за которыми следит скрипт. Они могут быть у меня в портфеле, а могут и не быть, при этом возможно, что их никогда там не было (и тогда, я полагаю, getDepoEx должен бы вернуть nil), возможно, они были, но я их недавно продал, и тогда getDepoEx должен вернуть 0. Возможна и обратная ситуация: я думаю, что у меня этого тикера нет, а у брокера он есть (я купил, но не получил уведомления либо думаю, что продал, а сделка не прошла или ещё что), так что nil и 0 для меня одно и то же. Ну и, наконец, я веду учёт в лотах, а там в бумагах.

Вот код утилиты сверки портфелей (FC - код фирмы, CC 0 код клиента, a[i][0][1] - код инструмента, AC - торговый счёт, TX=2 для одного брокера и 365 для другого, a[i][0][5] - количество бумаг i-го тикера в портфеле в лотах, a[i][0][8] - размер лота);
Код
function BC()   -- функция сверки портфеля с брокером
 local i,j;   -- вспомогательные переменные
 for i=1,N do    -- цикл по тикерам
  j=getDepoEx(FC,CC,a[i][0][1],AC,TX);
  if j==nil then j=0;else j=j.currentbal;end;
  if a[i][0][5]*a[i][0][8]~=j then 
   a[i][1][6][9]=-1;   -- отрубаем бракованный тикер и пишем в лог
   F:write("-! Рассогласование: "..a[i][0][1].." "..a[i][0][5].." "..j.."\n");
  end;   -- конец условия "рассогласование портфелей"
 end;   -- конец цикла по тикерам
end;   -- BC()

[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
БорисД, Не ругайся, почту посмотри. Сегодня нам с тобой неплохо бы ударно поработать...
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
TGB, Сочувствую. А я всегда пишу то, что считаю нужным и правильным, и не представляю, какая сила может меня вынудить делать обратное. А исправляться я не собираюсь: у меня много прекрасных друзей - и в Сети, и вне её, некоторые "перетекают" из первых во вторые, и вообще я сроду не испытывал недостатка ни в друзьях, ни в общении. Ещё фрагмент из описания моего "идеального стиля".

Для меня самого было в своё время открытием, что этот стиль возможен не только "в своём кругу", а практически где угодно. Он оказался эффективным даже "для первого знакомства"! Судите сами: этот стиль хронически неприятен всяким "портянкам" и другим троллям, потому как он просто требует наличия мозгов и умения говорить своими словами! Этот стиль вполне комфортен и для друзей, они легко к нему привыкают - обычный формат "без галстуков". Наконец, он достаточно резко бьёт по глазам новичкам, привлекает внимание, сбивает равнодушие, заставляет определиться по отношению к высказываемому тезису (или, на худой конец, к его автору). Одни сплошные плюсы!

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

Да, мои слова часто "выглядят именно наездом или наскоком". Для тех, кто закомплексован, кто ищет эти наскоки, кто не в состоянии поверить собеседнику, кто боится быть им обманутым... да и хрен бы с ними! Следовательно, этот мой стиль не только рабочий, но и фильтрующий всяких закомплексованных! Не говоря уже про штатных троллей. Они с этим стилем не уживаются, он не сдаёт территорию хаму и мерзавцу - он её защищает. А если мы будем себя уважать только на собственной кухне, отдав все публичные площадки хамам и подлецам, то за что, нам, собственно, себя уважать?
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
nikolz, Шахматы В МИЛЛИОН раз сложнее, чем игра на бирже! Шахматных программ НАМНОГО меньше, чем скриптов для торговли - там даже чтобы просто фишки передвигать код написать - упаришься! А степеней свободы и вообще жуткое количество. И коэффициент ветвления порядка 40! А здесь что? Курс может либо расти, либо падать. Может ещё стоять на месте или вообще не торговаться. И ВСЁ, БЛИН! А вот программ, умеющих именно играть в шахматы, а не просто фишки передвигать, считанные единицы. Роботов, которые не сливают депозит и умеют играть на бирже, тоже, наверное, немного. Но сложного-то здесь чего? Ну, МОЙ робот "фактически существует", и, как и наша шахматная программа, играет ЛУЧШЕ меня. А новая версия, как и наша шахматная программа, должна играть НАМНОГО лучше меня, и УЖЕ СЕЙЧАС играет лучше старой, так что старую я уже с почётом проводил в последний путь. К тому же, я вообще ни разу не видел, чтобы на этом форуме обсуждали алгоритмы торговли, а не технические вопросы, которые, по большому счёту, выеденного яйца не стоят, даже с учётом многочисленных глюков в софте Квика. Наконец, я занимался разработкой и шахматной, и торговой программы, так что мне ЛУЧШЕ знать, что проще, а что сложнее. :wink:  
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
TGB, Информация ПОЛНОСТЬЮ определяется ПРИЁМНИКОМ, так что Ваши фантазии насчёт "закомплексованного подростка" или "исключительного и неповторимого" есть только Ваши фантазии.  :wink: А я действительно взрослый НОРМАЛЬНЫЙ человек, и веду себя именно по-взрослому - у меня на сайте в описании моего "идеального стиля общения" давным-давно чёрным по белому написано:
Последнее: я не собираюсь лукавить, заменять фразы "чем-то гипоаллергенным" или "проскакивать пока это место в объяснениях вообще", не собираюсь "сначала показать красивый образ, картинку, как всё будет прекрасно, когда..." Вот "привести примеры какие-то, понятные каждому, нарисовать схему" - могу. Но только не люмпену. Я убеждён, что нельзя найти нечто хорошее в ком-бы то ни было, если он сам не начинает это искать - пущай и собственную задницу от кресла отрывает! Кстати, это как раз "ровно то же, чего я хотел бы видеть по отношению к себе". Идея "обрастает в пути необходимыми деталями и т.д." только в процессе диалога, обратной связи, споров, драк, но никогда при "вещании с броневика"! Я всё время говорю: "Спорьте, бейте меня - я полностью открыт, у меня даже ника сроду не было, ведь разве rybvv это ник"? Но бейте аргументами, чиорт побъери! И ещё: этот мой стиль - он для взрослых. Я много раз говорил открытым текстом, что не перевариваю общения ни "снизу вверх", ни "сверху вниз" - собеседник равен мне! А я - взрослый. Так что и собеседник мой - взрослый! Приплясывать перед ним и трясти погремушками я не намерен. Такой вот у меня "идеальный стиль"...

Помнится, БорисД тоже когда-то принимал меня за подростка, но потом мы лично встречались и до сих пор много переписываемся и перезваниваемся, и прекрасно знаем, что мы оба взрослые нормальные люди (а не одно лицо, как тут "выяснил" когда-то один придурошный "опер"). Но если какой-то распальцованный сопляк опять начнёт кукарекать, что меня откуда-то кто-то когда-то "гонял ссаными тряпками", он непременно получит ответку, что это как раз я гонял ссаными тряпками всякую полуграмотную шушеру годами и стадами. Всё просто...
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Старатель, Так я же и не спорю, лапуль. И в шахматы с голубем не играю - у меня всего-то первый разряд когда-то был, но моя программа (точнее, наша с Юркой) всё-таки была двукратным чемпионом России и даже бронзовым призёром чемпионата мира в Лондоне, и имела не только гроссмейстерский рейтинг (2456 максимально), но и немало поверженных мастеров и гроссмейстеров в личных встречах. А тут какая-то сраная задача организации торговли на бирже - да тьфу! Это может быть проблемой разве что для распальцованных бездарей по кличке "гуру". :wink:  
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Старатель, Лапуль, у "тупого тролля 40-го уровня с 40-летним опытом" скрипт работает и зарабатывает, памяти и быстродействия предостаточно, тикеров в обслуживании на порядок (если не на два) больше, чем у вечно скулящего "гуру". Вы бы хоть подпись поменяли - какой Вы, в задницу, "роботорговец"? А лучше и вообще "поменять ориентацию" - ну не Ваша эта зона, программирование, ну не Ваша!
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Старатель, Не знаю, как там "тролль в большинстве случаев", а вечный скулёж "разбирающегося" реально достал - всё ему не так, убогому: с производительностью жопа, с памятью жопа... да и красная цена "всей информации в этой теме" ровно один ломаный грош.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Anton, Про "намоленные улучшения" классно! :smile: А у меня так и не получилось намолить ни про "положите куда-нибудь последние свечи по всем таймфреймам, чтобы их можно было просто прочитать", ни про "дайте вы только одно прерывание на одно событие". :cry:  
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Anton, Жаль. Был тут один "адвокат", расхваливавший этот сборщик, но уже несколько месяцев ни слуху ни духу. :smile:

Так переименовать мысленно я могу, но что толку? Реальный вызов OnParam идёт по совершенно другим алгоритмам, которые, скорее всего, очень сильно отличаются от такого вызова. А здесь можно вызывать что-то типа abcd() - тогда уж точно условия теста совпадут с боевыми. Иначе тест не имеет смысла - проверяется НЕ ТО. Даже если Вы "можете гарантировать, что квик до 9.3.3 включительно не заменит".

А ещё несколько тысячелетий назад наблюдение было, что если кто-то утверждает, что "все беды от того, что", то это чушь собачья вне зависимости от того, что бы там ни утверждалось. Так что борьба против борьбы с новоназначенными врагами квика очень полезна и заслуживает всяческой поддержки. Я когда-то тоже пытался сказать, что плевать мне на миллисекунды, что я заранее согласен на тормоза в таких ситуациях на один, на два, даже на три порядка! Но воители не слышат и продолжают воевать - уже близко к классическому "расстрелять как бешеных собак".
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Anton, Сборщик-то влияет, может, и мало, но у меня вопрос: а какого хрена он вообще тут "влияет"? Если я заказал память, это МОЯ память! Если я ему куда-то кинул nil - другое дело, чисти на здоровье - даже искать ничего не надо. А если не кинул - тем более ничего делать не надо! Какая с него польза, кроме оверхеда?

Теперь тесты: убей, не пойму, что тут вообще проверяется. Вижу, в цикле вызывается OnParam, но ведь это же, блин, прерывание! Прерывания на то и существуют, чтобы прерывать, а здесь обработчик вызывается явно из того самого кода, который он должен прерывать. И что дают эти миллионные циклы? Кто вообще может гарантировать, что умный интерпретатор не заменит конструкцию:
for i = 1, 1000000 do OnParam('TQBR', 'SBER');end
ОДНИМ вызовом? Мне доводилось видеть такие "оптимизирующие" компиляторы. И кому здесь вообще нужна скорость? Надёжность, надёжность и ещё раз надёжность! А она практически на нуле. И продолжает падать, хотя дальше падать некуда. А память? Ну кому нужна эта память? У меня она постоянно болтается в диапазоне 5-10 мегов, иногда чуть больше, иногда чуть меньше. Памяти тоже хоть жопой жуй! Ни один программист (и все местные тестировщики, вместе взятые) в реальных скриптах никогда не смогут окучить и сотой доли переменных, которые они здесь тестируют. НУ НА КОЙ ВСЁ ТО НАДО?!
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
bstone, А вот "критическая нестабильность последних версий терминала" и меня достала выше крыши - я просто боюсь новых версий, которые постоянно модифицируются по идиотским пожеланиям местной публики в результате чего перестаёт работать даже то, что раньше работало.

Это ДЛЯ ВСЕХ "всего лишь раскраска", я ею пользуюсь более, чем активно - мои таблицы вообще раскрашены как попугай, и вызовы организованы примерно так:
SetColor(table,row,col,0xFF00,0xCCCC,-1,-1);
RGB - это функция, которое возвращает трёхбайтовое число, так я использую само это число. А если Вы будете присваивать переменной функцию, а не её результат, то кто знает, какая моча интерпретатору в голову вдарит?
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
bstone, Если "проблема серьезная, требует оперативного решения", так закомментируйте все эти строки - это всего лишь раскраска. :smile:

Кроме того, резануло глаз: "Переменная может принимать одно из трех значений: RGB( 0, 200, 0 )". При чём тут RGB? Поставьте нормальные цвета обычными константами. Больше в коде ошибок не вижу, только длиннющие имена раздражают - хрен поймёшь, где там начало, где конец.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
nikolz,
Цитата
Ну и кто кого грузит?
Старатель, грузит процессор. Работающих скриптов писать не умеет, так что забивает его всякой хернёй, дабы разработчики изуродовали софт по его идиотским пожеланиям, и у всех остальных тоже всё бы рухнуло. А то ему абыдна. :smile:  
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
Как же достали эти вечно скулящие умники!

Ну, я когда-то тестировал более 20000 инструментов, большинство из которых прекрасно обновлялись и торговались. А тут проблемы с неполным десятком? Это как же нужно уметь программировать!

По поводу "умного" заказа - вот фрагмент моей переписки с брокером:

Добрый день. У меня в последнее время появились нарастающие проблемы с Квиком:
1. Загрузка самого Квика происходит неприлично долго, причём это время постепенно увеличивается.
2. Сегодня Квик отвис...

Проверьте пожалуйста наличие фильтров на получаемую информацию, возможно они сбились и сейчас программа запрашивает информацию в разы больше чем вам нужно. Для проверки фильтров нажмите F9, потом котировки, должно быть так: (...). Потом в обезличенных сделках справа должно быть выбрано желательно 0 , т.е. ( 0/…):

Да, в настройках стоит именно "умным заказом". А вот обезличенные сделки я вообще не использую - может быть, их можно как-то отключить? Ага, у меня там куча галок стоит - всякие там кросс-курсы, опционы, акции, облигации, а у Вас ни одной. Если я правильно понимаю, то "умный заказ" и так обеспечит получение необходимых данных?

Обезличенные сделки подключены всем по умолчанию. Если их не используете в работе , то просто проверьте что у вас в Инструментах вверху справа перед  / стоит 0. Да, если включен умный заказ , то наличие или отсутствие галочек в панели ниже ни на что не влияет

Даже сейчас читаю просто с наслаждением! А здесь... ЗА КАКИМ ХРЕНОМ Вам "и количество скриптов и/или количество данных надо увеличивать пропорционально"? Сделайте ОДИН скрипт и пихайте туда только НУЖНЫЕ данные! Тогда любой процессор потянет не Ваши несчастные "8 фьючерсов", а все 800! И покурить при этом успеет, и кофейку попить. Это особый талант нужно иметь, чтобы выкапывать "повышенную загрузку" в задачах, которым любой старый велосипед годится!

И Вам задали совершенно конкретные вопросы: "сколько конкретно скриптов?", "Какие конкретно функции используются в данных скриптах ?", "Какие конкретно параметры ОС". В ответ снова гнутые пальцы, ибо по теме сказать тупо НЕЧЕГО! Чел со сраным десятком тикеров справиться не способен, но он "с компьютером на "ты", панимаш! Тьфу!
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
 
nikolz, Чтобы скрипт корректно завершил работу, в колбеке OnStop, нужен нормальный колбек OnStop, а не этот маразм со "специально сделанным (!!!) возвратом со значением времени задержки завершения". В 99 случаях из 100 работа скрипта завершается корректно, и вся "работа" этого "коллбека" состоит в том, чтобы сбросить флаг останова - И ВСЁ!!! Этот же придурок считает, что его вызвали для АВАРИЙНОГО завершения скрипта, причём даже этого он тоже делать не умеет. Разделение по потокам - ещё один идиотизм, источник бесконечных глюков и ничего более. Когда я узнал, что интерпретируемый код способен подвесить задачу, я просто не поверил своим глазам! Кстати, какое бы Вы ни указали время задержки завершения, это ничего не значит и не гарантирует от зависания при выходе - этот придурок просто и нагло не отдаёт управление "для завершения всех ваших плюшек в скрипте".
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
 
swerg, Ну, вот он я - открываю файл в main, а закрываю в OnStop. Мало того: я ещё его и ПЕРЕоткрываю в обработчике событий от юзера! Все свои действия считаю безусловно правильными. Да, иногда выскакивает "attempt to use a closed file" - абсолютно непонятно, чего ему надобно? Да и не очень интересно.

И я тоже "мгновенно по выходу из OnStop прибиваю поток main" - чтобы что? На это подробно отвечал Антон ещё в самые первые дни после моего появления здесь.

А "оставшаяся часть софта" начинает глючить ВСЕГДА И ВЕЗДЕ! Я что-то вообще не могу припомнить ни единой "части", которая бы НЕ глючила!

В чем ценность этой демонстрации? В разумно заданном вопросе, на который был дан профессиональный ответ - чрезвычайно редкая ситуация на этом форуме!
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
 
Денис, Да, решений может быть множество, но такое - одно: только один коллбек на все случаи жизни, так что плевать, работают функции обратного вызова после окончания OnStop или нет - в этом варианте их просто нет, как и самого OnStop. OnTrade тоже загружен до безобразия всяким действиями - а что делать?

Я бы не стал полагаться на "блага цивилизации" Четверть, если не треть кода моего скрипта создана исключительно для борьбы с глюками, появляющимися при работе этих самых "благ". :smile:  
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
 
Денис, Кстати, есть ещё одно решение - я даже когда-то хотел его реализовать: вообще отказаться от OnStop, а выход реализовать по собственному обработчику событий (по мышке или по клавише). В этом случае всё прекрасно отработает - и с файлами, и с таблицами. Отказался потому, что когда-нибудь рука всё равно даванёт на кнопку "остановить", и я останусь без результатов торговли последнего запуска. Потом, правда, я всё равно стал сбрасывать дамп каждые 5 минут (по другим причинам - Квик стал вылетать "без объявления войны"), так что можно бы сделать и так, но мне уже лень там что-либо перестраивать.
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
 
Anton,  Я понимаю но меня, как старого программиста, просто корёжит от необходимости что-либо делать в прерывании. На то оно и прерывание, чтобы быстренько отреагировать, установить какие-то флаги и быстренько оттуда умотать. А потому и логически, и физически, завершающие операции нужно бы делать именно в мейне, а в OnStop просто сбрасывать флаг бесконечного цикла. Но тут имеем: потеря управления - раз, запрет обращаться к функциям основного потока - два. Файловые операции, слава Богу, ещё работают, а вот операции с таблицами Квика - это ещё бабушка надвое сказала.
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
 
Anton,
Цитата
А вообще я б лучше предложил сделать последним таки мейн.
Дык я когда-то именно так и пытался делать, но терялось управление - почему, я понял только по Вашим же комментариям, и теперь у меня в OnStop выполняется целая куча действий - в основном, с файлами, а напоследок я убиваю открытые таблицы: получится, нет ли - уже пофиг, и sleep(500) ему в зубы, чтобы особо не раздумывал. Давно уже работает без нареканий.
Как считать данные из таблицы текущих торгов?
 
Anton, Это не утверждение - это шутка. Тем более, что я и сам такой, особенно в молодости был: "Как это, я ещё не пробовал, а уже говорят, невозможно".  :smile:

Так Вася написал, что он начинающий программист, и я сильно подозреваю, что заказчик этот вообще очень слабо представляет, чего он, собственно, хочет от скрипта. Так что риски скорее у Васи.
Как считать данные из таблицы текущих торгов?
 
Вася, Удачи!
Как считать данные из таблицы текущих торгов?
 
Вася, Ну, тогда примите мои искренние соболезнования. Думаю, пожелания Вашего заказчика не сможет реализовать ни один человек с планеты Земля. :smile:  
Как считать данные из таблицы текущих торгов?
 
Вася, А что Вам мешает добавлять новую колонку не в ТТТ, а в Вашу "самодельную таблицу" и набивать её данными из ТТТ? Вот скрин работы моего скрипта: третий столбец - это цена последней сделки, четвёртый - процент её изменения с конца предыдущей сессии. Оба параметра я читаю из ТТТ, содержимое остальных столбцов считаю сам.
Как считать данные из таблицы текущих торгов?
 
Вася,   Нельзя.
Как считать данные из таблицы текущих торгов?
 
Вася, Во-первых, ТТТ в принципе не редактируется со стороны клиента. Во-вторых, не имеет значения, какие там строки и столбцы показываются и даже открыта ли она вообще. В-третьих, любые данные из ТТТ достаются обращением к ней через getParamEx.
Что не так с таблицей firm_holding?
 
Иван, Как уже тут говорилось, получить программный доступ к "состоянию счёта" нельзя никак. Есть функция getDepoEx, из которой можно получить какие-то сведения, типа:
currentbal NUMBER Текущий остаток по бумагам
currentlimit NUMBER Текущий лимит по бумагам
awg_position_price NUMBER Цена приобретения
Но она глючит. Что делать? Держать все эти данные у себя.
Вы не можете заменить заявку ..., так как ее обработка еще не завершена.
 
Присоединяюсь. На срочном рынке не торгую, заявки не передвигал ни разу в жизни, но со временем творится что-то невообразимое.

Из-за того, что на одно событие приходит несколько прерываний (в частности, по сделке приходит обычно три прерывания OnTrade), и это дело не исправляется годами, пользователи вынуждены бороться с этим самостоятельно. Я вот обрабатываю первое прерывание, а два "дублирующих" отбрасываю, а потому снимать даже исполненные заявки могу только по таймеру - поставил задержку в 15 секунд, чтобы гарантированно пришли все эти дубли. НЕ ПОМОГАЕТ! Уже после снятия заявки даже таким способом время от времени приходят уведомления о сделках по заявкам, которые уже сняты! Иногда одно, а нередко и все три! Если хоть одно из них пришло - не страшно, информация обработана, а в последнем случае сделка есть, а информации по ней у меня нет. ПЯТНАДЦАТЬ СЕКУНД! Даже если сервер находится на Луне, всё прекрасно успеет придти! На Марсе, что ли? И что прикажете делать бедным пользователям - минутами, часами, днями, неделями ждать уведомлений?
Как вывести данные своей таблицы по DDE?, Как вывести данные своей таблицы по DDE?
 
Вася, Я не сказал, что НУЖНО сохранять в файл .txt - тем более, "при каждой итерации цикла в скрипте". Лично перестал пользоваться экселем уже дня через три после того, как заработала первая версия моего скрипта - сама эта таблица оказалась в сто раз информативнее, чем я вообще вытащить из экселя. Я думал, нужно проводить какую-то аналитическую обработку по результатам торговой сессии, как минимум или вообще анализировать недельные или месячные результаты торгов. Принимать же текущие решения в реальном времени через эксель, sql или что-то внешнее, на мой взгляд, просто безумие. Именно "лучше всего в самом скрипте и организовать".
Как вывести данные своей таблицы по DDE?, Как вывести данные своей таблицы по DDE?
 
Вася, Самое простое - вывести данные в текстовом виде (например, в виде таблицы, где разделителями строк будет символ перевода строки, а разделителями полей - символ табуляции), а потом скормить их хоть в Excel, хоть в SQL хоть ещё куда. Программируется в 5 секунд, работать будет с первого тыка - почти гарантия.
Страницы: Пред. 1 ... 12 13 14 15 16 17 18 19 20 21 22 ... 41 След.
Наверх