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

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

Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 20 След.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Почему важно.
Встраиваю в проект Backtesting, я им раньше пользовался, по сути перенес функции из старых наработок,
изменений минимально и тут началось. Упала визуализация.

В квике 2 варианта визуализации.
1) На открывать графики, наставить индикаторы и получать их скриптом. Сильно зависит от количества графиков и пропускной способности канала.
Отказался.
2) Алгоритмически считать индикаторы  скриптом и пользоваться сервисом вывода меток на график.
Даже удивил (если не считать данную ошибку).
Потребление памяти не изменилось это все те же 500кб. Быстродействие отстоял сессию с замедление 1мс.
т.е. скрипт отлично чистится не каких протеканий. Правда, лог не смог открыть из за его объема блокнотом (Гб).

Чем больше пользуюсь HT тем больше нравится.

Допишу  Backtesting нужно стратегии оценивать.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Вот лог

Label_Image: I=22329; graph= JMM; d= 20230811; t= 130000; text= xS; q= 0.0; p= 3168.1
[Fri Aug 18 16:03:47 2023] Trace: params[FONT_FACE_NAME] = Arial; string
[Fri Aug 18 16:03:47 2023] Trace: params[TRANSPARENT_BACKGROUND] = 1; number
[Fri Aug 18 16:03:47 2023] Trace: params[TEXT] = ; string
[Fri Aug 18 16:03:47 2023] Trace: params[R] = 0; number
[Fri Aug 18 16:03:47 2023] Trace: params[FONT_HEIGHT] = 6; number
[Fri Aug 18 16:03:47 2023] Trace: params[TIME] = 130000; string
[Fri Aug 18 16:03:47 2023] Trace: params[DATE] = 20230811; string
[Fri Aug 18 16:03:47 2023] Trace: params[IMAGE_PATH] = ; string
[Fri Aug 18 16:03:47 2023] Trace: params[G] = 0; number
[Fri Aug 18 16:03:47 2023] Trace: params[YVALUE] = 3168.1; number
[Fri Aug 18 16:03:47 2023] Trace: params[HINT] = 20230811,130000,xS,1,3168.1; string
[Fri Aug 18 16:03:47 2023] Trace: params[ALIGNMENT] = LEFT; string
[Fri Aug 18 16:03:47 2023] Trace: params[B] = 0; number
[Fri Aug 18 16:03:47 2023] Trace: label id: nil; xS
[Fri Aug 18 16:03:47 2023] Trace: t_label Проблема? JMM = nil
[Fri Aug 18 16:03:47 2023] Trace: label_id[MMU3]= nil

В некоторых случаях не выполнялось условие, вот причина params[TEXT] = ; string.
Проверил это моя лексическая. Надеюсь что с этим все.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ziveleos, У себя по отключал метки, все равно иногда проявляется, думаю что то с параметрами, обложил логами.
Тормоза в отрисовке меток в 10 версии
 
Andrey Golik, C помощью скрипта.

Дело в том что, этой функции в "обед 100 лет", работала без проблем на разных версиях!



 
Тормоза в отрисовке меток в 10 версии
 
Добрый день!

при выставлении меток появляются вот такия ошибка:

Ошибка при создании метки: Группа или ресурс не находятся в нужном состоянии для выполнения требуемой операции. Версия 10.1.0.26

"Ни когда не было и вот опять"?  Что с этим делать?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Файлы картинок для меток используются?
Да используется.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Ziveleos написал:
Цитата
VPM написал:
При тестировании стратегий на исторических свечах. При выводе меток приходит такая ошибка;
 
Цитата
Ошибка при создании метки: Группа или ресурс не находятся в нужном состоянии для выполнения требуемой операции.
 Ни чего по ней найти не возможно, по смыслу что со свечами не то?

Скорее не со свечами, а с метками. Файлы картинок для меток используются?
Добрый день!

Опять  выскакивает "как черт из табакерки" эта ошибка?
Цитата
Ziveleos написал:
Скорее не со свечами, а с метками. Файлы картинок для меток используются?
Поясните в чем причина, и что с этим делать?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Собственно вот оно плечо =  цена шага / шаг;
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Так правильно MMU3:

стоимость контракта = price_last *   Стоимость пункта цены  -- *  lot;

Стоимость 1 пункта цены 10 руб.

шаг 0.05 ,
цена шага 0.5 руб.

Согласен вариант акций не годится, надо проверять нужен ли здесь лот, по моему не нужен.

стоимость контракта = price_last *  (1 / шаг)*цена шага
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Ziveleos написал:
Скорее не со свечами, а с метками. Файлы картинок для меток используются?
Сними все порядке, кашлял на 0 , вот лекарство math.floor(price),
но как то странно приходит не понятно где формируется.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
При тестировании стратегий на исторических свечах. При выводе меток приходит такая ошибка;
Цитата
Ошибка при создании метки: Группа или ресурс не находятся в нужном состоянии для выполнения требуемой операции.
Ни чего по ней найти не возможно, по смыслу что со свечами не то?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Ziveleos написал:
С контрактом на индекса мосбиржи (MXI) такая формула не работает
А как?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Добрый день!

nikolz, Да спасибо, поправил, вот код:

local tag={}
sec   = {
        'NGQ3',
        'EDU3',       --  9.6 p;   ГО 6598;
        'RMU3',       -- RTSM-9.23 Индекс РТС (мини) Расчетный фьючерс на RTSI.                                      Стоимость пункта цены 18,46 p;  ГО 3546;
        'NAU3',       -- NASD-9.23 Nasdaq 100 Расчетный фьючерс на Invesco QQQ ETF Trust Unit Series                 Стоимость пункта цены  0,92p;   ГО 1799;
};

for i=1,#sec do
   tag[i] = 'J'..string.sub( sec[i], 1,2 )                print(type(tag[i]), tag[i])
end

Так тоже ошибку не давал?
string.sub( sec[i], 0,2 )
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ну вроде такой вариант работает:

string.sub (sec, 0,2 )
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Всем добрый день!

Стоит задача вывод меток на график, чтоб их вывести необходимо задать идентификатор графика, куда эти метки выводить.

Раньше я делал просто

tag={}; for i=1, #sec do tag[i] = tostring( 'J'..i)  end

где, sec - массив тикеров в работе.
      J - обозначение таймфрейма.

Для небольшого массива вроде и нечего , но если порядок тикеров в массиве поменялся нужно переписывать идентификатор графика.

Для автоматизации процесса удобней вместо индекса добавлять первые два символа тикера

На пример: тикер NGQ3, идентификатор графика   tostring( 'J'..'NG')

Как правильно от тикера  отделить первые два символа?
Проверка, что заявка выполнена
 
БорисД, Ни чего личного, всех тонкостей не знал, поэтому счел за высокомерие!
Если чем то обидел,  то прошу прощения!

Но зато Ваш, друг как бился за Вас :smile:  
Индикатор средняя по RSI, Некорректно отражается индикатор.
 
Цитата
Сергей написал:
В код пришлось вводить много дополнительных условий и переменных, т.к. в процессе написания выяснилось, что иногда бывает несколько одинаковых index на свечу.
Не бывает ни когда. Индекс пришел или не пришел.

Можно отслеживать:

newbar = Индекс > Индекс1 or false;
Индекс1=Индекс
Индикатор средняя по RSI, Некорректно отражается индикатор.
 
Цитата
Сергей написал:
Любой индикатор легко считается в скрипте qlua, сделать там же среднюю по значениям индикатора не проблема, вопрос именно в пристыковке средней к индикатору на графике силами кода индикатора.
Вы сами то понимаете что написали?
Цитата
Сергей написал:
Обычно на такое не отвечаю, но просто чтобы не набежала еще толпа желающих просто посотрясать воздух и пофилосовствовать, коих на форуме стала тьма
Вам тут больше на код не кто не скажет, "Белиберда", просто потому что время дороже.
Цитата
Сергей написал:
а не посоветовать что-то в конкретном коде:
Цитата
VPM написал:
Алгоритмы все известны, пишите сразу RSI, усредняйте (Period RSI + Period Вашего усреднения).
Индикаторы Опубликованы на этом сайте, берите, усредняйте, при вычислении результатов учитывайте два периода усреднения (Период усреднения RSI и Ваш период).
Примеров двойного усреднения полно опубликованных.
Хотел в своей библиотеке найти где то был сразу не нашел.
Но вот пример как я пользуюсь индикаторами через присвоение.

function Cached.RSI__()
local log=math.log
local exp=math.exp
local abs=math.abs
local Price={}
local EMA={}
local Noise,Peak={},{}
local UOE={}

local fLaguerre=Cached.Laguerre_Ehlers()
local fPeriod=Cached.Period_SineWave()

return function( I,FSettings,ds )

 local I = I
 local ds=ds
 local FSettings = (FSettings or {})

Cached -- моя библиотека
дальше присвоение и создание переменных (для данной ф. это глобальные).

return function( I,FSettings,ds ) - это замыкание в луа, собственно сама функция  то что мы считаем.
 дальше присвоение и  создание локальных переменных

и считаем все что угодно.
Индикатор средняя по RSI, Некорректно отражается индикатор.
 
Добрый день!

Не я не про код! Только маленькая ремарка в отношении смысла. Про постановку вопроса?
А зачем?

Вы читаете значение из RSI?, и пытаетесь его ещё дополнительно сгладить, Вы представляете какой период оцениваете?

Нет технических вопросов совсем нет,  до нас все придумали !
Вашем исполнении техника мягко говоря  хромает,. зачем создавать индикатор в QUIk а потом  его читать,  (QUIk без Вашей помощи упадет :cry: )

Алгоритмы все известны, пишите сразу RSI, усредняйте (Period RSI + Period Вашего усреднения).
А зачем? Это из области "Если Все прыгнули в колодец, то и мне пора" :wink:

Высказываясь так, "Ни чего личного", хочу чтоб Вы для себя с формулировали задачу. А зачем?

Альфа эквивалентной EMA связана с длиной простой скользящей средней как            

Альфа
= 2/(P+1);

Не если вы  не Инвестор!  
Проверка, что заявка выполнена
 
Владимир, Вы зачем то опять все в склоку переводите?
Цитата
Владимир написал:
А Вам он ничего советовать не станет. Я не Нострадамус, но я предсказываю.
Так я даю совет,
Цитата
VPM написал:
А Вы бы бросили высокомерие, еще не так давно сами здесь помощи искали
Я лишь за конструктивный диалог, здесь пользователи разных навыков и знаний. так давайте терпимей к друг другу относиться !
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Да я сообразил, просто думал что готовый параметр может быть., Спасибо
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Nikolay,
Чтоб точно ГО считать мне пока не нужно, достаточно получать его, все равно необходим зазор чтоб позиция дышала.
стоимость контракта = price_last * pos_qty* lot ?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Нет я про реальную цену контракта на рынке, чтоб рычаг считать.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Что то я совсем не могу понять, что средствами qlua нельзя получить стоимость контракта на fut?
Проверка, что заявка выполнена
 
Владимир, Этот форум устроен для поддержки, а главное обнаружению и устранению "косяков" QUIK.
То что в нём закралась страничка по обмену опытом в программировании на луа, нужно сказать спасибо организаторам и поддерживать ее.
Цитата
Владимир написал:
Боря не той помощи искал, которую может дать этот форум. И уж точно не от Вас. Он очень грамотный трейдер, в биржевой торговле понимает гораздо больше, чем подавляющее большинство участников этого форума - включая меня, например.
Не важно кто что ищет, важно кто что дает, а если "очень грамотный трейдер"  тои давай такие же советы,
я тоже с удовольствием послушаю "очень грамотный трейдер" :wink:  
Проверка, что заявка выполнена
 
Цитата
БорисД написал:
Цитата
VPM написал:
 
Цитата
VPM  написал:
лимитные ордера на срочном рынке отменили
 Я не верно выразился, на срочном рынке их как таковых нет, посмотрите в этом ключе.
А комиссии если в стакан то нету!
Володь а тебе что еще не надоело здесь общаться ?  
А Вы бы бросили высокомерие, еще не так давно сами здесь помощи искали :what:

Так понятней, нельзя найти того чего нет, ни с флагом ни без флага, не технически ни логически :smile:  
Проверка, что заявка выполнена
 
Цитата
VPM написал:
лимитные ордера на срочном рынке отменили
Я не верно выразился, на срочном рынке их как таковых нет, посмотрите в этом ключе.
А комиссии если в стакан то нету!
Проверка, что заявка выполнена
 
Igor_User, Мне попадалось где то, что лимитные ордера на срочном рынке отменили?
Может с этим что то связано?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
В такой ситуации робот перевыставит заявку на те же 10 лотов.И есть  шанс вместо 10 купить 17 лотов.Он может не реализоваться, но он есть и далеко не нулевой.
Нет в этой реализации не каких 17 не может быть, ордер знает 10 и пока ему не подтвердит кщлбек  исполнение будет стоять 10 или набираться частями до 10.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Так я и описал логику автора вот

   
Код
dofile("hacktrade.lua")  ---Загруили

function Robot()

----- Получили т.тек.торгов
feed = MarketData{
        market="QJSIM",
        ticker="SBER",
    }
----- создаем ордера

    order = SmartOrder{
        account="NL0011100043",
        client="74808",
        market="QJSIM",
        ticker="SBER",
    }
----- Получили индикаторы

    ind = Indicator{
        tag="MAVG",
    }

----- Торгуем 

    while true do
        if feed.last > ind[-1] then
          order:update(feed.last, 10)
        else
          order:update(feed.last, -10)
        end
        Trade()
    end
end
"Это пример реверса по скользящей средней.  
Пример тривиальный, но надёжный. Робот догоняет цену. 
Если снимите заявку, он выставит количество, которое не успел купить/продать."

Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
Ну а из замечаний - вот это и еще иногда пытается снимать уже снятые заявки. Терминал ругается. Но вроде не критично.
Я добавил проверку на ошибку  reply[i][6]=trans_reply.status; reply[a][6]~=3 если заругался выхожу из цикла.
Пока так.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
А если колбэки о сделке еще не пришли, order.position не обновился, то и количество лотов в заявке может быть не тем, которое задумывалось.
Не может если не поменяли.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
Ну так hacktrade набирает позицию в рамках своих знаний о ней. А эти его знания можно посмотреть в order.position.Если обновлять заявку order:update в рамках своих знаний о текущей позиции, то робот то выставит на биржу заявку в соответствии со своими знаниями о позиции.
Ну подождите, по порядку: В начале до основного цикла формируем заявки им присваивается уникальный номер, согласно этого номера и действуем.
Нужно при следующем обращении поменять цену, меняем, нужно поменять количество меняем, нужно снять снимаем.
Если исполняется у нее есть два статуса активна и исполнена, активная цена ушла снимаем.

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

Так что два параллельных мира. мы управляем ценой и количеством (т.е денюшкой) в ордере,
А  hacktrade исполнением ордера и взаимодействует с терминалом.

Все как в лучших домах!  :smile:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
Давно пользуюсь этой штукой в боевых роботах
Есть замечания?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
Просто order.position не всегда оперативно обновляется после сделки. Видимо колбэки запаздывают.
Что пришло от терминала  только это и может обработать, быстрее не откуда взять.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
Я то думал сам  hacktrade  удалось модифицировать на работу со сделками.
А зачем? hacktrade занимается своей работой, а в ф. робот  я веду учет текущей позиции.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
uuh написал:
Кстати, есть версия посвежее
Пользуюсь HackTrade version 1.4 все прекрасно работает.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
И что это было 1 час в борьбе за подключение к сервера? Да уж.
А было это графики.

Вернул расчеты алгоритмов в main убрал лишние графики и вот оно чудо. Все грузится.
Идея вести расчеты в квик, подходит для для единичных инструментов.
Цитата
Владимир написал:
Господи, канал-то здесь при чём?
Еще как оказалось причем.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Всем добрый день!

uuh, Да тут все просто, добавил OnTrade вот код:
Код
function OnTrade(trade)
    
   local key = trade.trans_id
    
  if working 
  and key~=sdelka.id
  --and trade.sec_code==symbol 
  --and trade.class_code==class 
  then
   
    local i=tonumber(sdelka[0]); i=i+1;  ---- новый размер стека сделок из прерывания
   sdelka[0]=i; ---- записываем изменение стека:
   ---- сохраняем новую сделку;
    sdelka[i]={};                    -- заводим новый элемент стека
    sdelka[i][0]=sdelka[0];
    sdelka[i][1]=trade.trans_id;     -- ID транзакции
    sdelka[i][2]=get_date(trade.datetime)
   sdelka[i][3]=get_time(trade.datetime)
    
     -- по умолчанию это покупка
    sdelka[i][4]="B"; if bit.band(trade.flags,4)~=0 then sdelka[i][4]="S"; end;
   local dir = sdelka[i][4]=="B" and 1 or sdelka[i][4]=="S" and -1 or 0;
    sdelka[i][5]=trade.qty*dir;      -- количество в сделке (в лотах)
    sdelka[i][6]=trade.price;        -- цена сделки
   ----- comission 
   sdelka[i][7]=trade.clearing_comission+trade.exchange_comission+trade.tech_center_comission;
    sdelka[i][8]=trade.order_num;    
    sdelka[i][9]=trade.trade_num;  
    sdelka[i][10]=trade.sec_code;     -- тикер
                       
   ---- Защита от повторений:
   sdelka.id=trade.trans_id;
   
  end
end;

Получаю в функции робот обрабатываю.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Исправил орфографию, добавил поля, увеличил период обращений. Все заработало!
Всем спасибо.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Один терминал сильно  грузит память компьютера при запуске, version Quik = 10.1.0.26,
и потом потихоньку чистит память до нормального состояния.

Что за дела?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Nikolay, Заметил, Спасибо!

Поискал но так и не понял какие поля обязательны, ведь Ошибка об этом
Цитата
VPM написал:
получаю:  "Не указан режим транзакции"
Перепроверю поля, восстановлю CLASSCODE
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Не не помогло!

Может слишком быстро обращаюсь, но с другой стороны я именно для этого проверку сделал при вызове if active then  KillOrders_id( trans_id )  end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Отличие от вашего только
CLASSCODE = ord.cllas_code,
попробую закомментирую.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ну так вот же
local trans_id = get_trans_id();

TRANS_ID = tostring(trans_id),

Даже если и фильтр избыточен?
trans_id пользователь присваивает может и не быть!  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ордер активный у него есть уже  trans_id, я его передаю для фильтрации ордеров:   if active then  KillOrders_id( trans_id )  end

А уже в заявке формирую новый:         local trans_id = get_trans_id();

Но получаю:  "Не указан режим транзакции"
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Всем Добрый день!

"Ни когда не было и вот опять".   Подскажите что я не так делаю?

Хочу снять активную заявку по  trans_id, вот вызов:

if active then  KillOrders_id( trans_id )  end

Но получаю:  "Ошибка: ord.sec_code CNYRUBF;  Не указан режим транзакции"

Вот сама функция:

function KillOrders_id(trans_id)

local NumberOf = getNumberOf("orders")
for i = 0, NumberOf - 1 do
local ord = getItem("orders", i)
local ord_status = get_order_status(ord.flags)

if ord_status and ord_status~='' and ord_status == "active"
--and ord.sec_code == symbol
--and ord.account == account
and ord.trans_id == trans_id --trans_id  NUMBER  Идентификатор транзакции  
then

local trans_id = get_trans_id();
Log:trace( "KillOrders trans_id: ".."; status= ".. tostring(ord_status).."; trans_id= ".. tostring(trans_id) )
local trans_params =
{
--ACCOUNT=account,
--CLIENT_CODE=client,
CLASSCODE = ord.cllas_code,
TRANS_ID = tostring(trans_id),
ACTION = "KILL_ORDER",
ORDER_KEY = tostring(ord.order_num)
}
local res = sendTransaction(trans_params)
if 0 < string_len(res) then
Log:info('KillOrders_id - Ошибка: '.."ord.sec_code "..tostring(ord.sec_code)..'; '..res,1)
end
end
end
end

Что я не так делаю?  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Владимир, Нет я про чудо,  от разработчиков ARQA Technologies с аббревиатурой QUIK.

Просто не Солидно!

Даже после увеличения пропускной способности канала связи, "все вкось и вкривь", куда подевалась стабильность работы!
Какой тут мой скрипт.

Да и акции я руками посматриваю на советник, скорректировал вчера, Сегодня 3 бумаги и то сейчас выкупаю назад после коррекции.  

Думаю в понедельник начнут выкупать.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Не Солидно, просто не солидно,
поведение программы за пятницу 04.08.23 ну несолидно!
А ведь только коррекция на рынке  акций РФ.
Ну просто несолидно!
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Да надо быть осторожней в высказываниях :smile:
Цитата
VPM написал:
Фондовый рынок просто выкупают, правда непонятно кто гребет, но мы сними
Цитата
Владимир написал:
Примерно час назад рынок ломанулся вниз, сейчас вроде как остановился.
Похоже на выходные закрываются, или что вышло?

Цитата
Владимир написал:
Это было весь позавчерашний вечер, весь вчерашний день и всё сегодняшнее утро.
Ну вот говорили не проблем со связью.

После общения с провайдером, как в прошлом инженер, делаю вывод "канал сквозняком сдуло" :lol:
Так как связь есть но она не работает, Роутер поближе, витую пару наготове!
 
Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 20 След.
Наверх