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

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

Страницы: 1 2 3 След.
Quik - чтение почты
 
Сокет смог запустить прочитав этот пост https://smart-lab.ru/blog/401675.php
1) установил программу
2) закинул две папки mime & socket в LuaIndicators
3) подключил в скрипте

require("socket");
http = require("socket.http");

Выполнил запрос

-- QUIK Выполнить http - запрос
function _QuikGetHttp()
  content, status, header = socket.http.request(HTTP_URL);
  return content;
end;

Но все равно не пойму как дальше быть с почтой?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Цитата
Nikolay написал:
Цитата
Иван написал:
Спасибо за развернутый ответ.
Можно пример с вашей консольной программы.
Она написана на C#. Я её ещё не выкладывал в открытый доступ.

Но, все можно найти в примерах MailKit:  https://github.com/jstedfast/MailKit
Уже и туда и сюда попробовал положить эти библиотеки.
Но QUIK все равно их не находит... Не пойму что могу делать не правиьно?
Код
...\QUIK_2\LuaIndicators\Git\EnterTrade.lua:64: module 'socket' not found:
   no field package.preload['socket']
   no file '.\socket.lua'
   no file 'C:\QUIK_2\lua\socket.lua'
   no file 'C:\QUIK_2\lua\socket\init.lua'
   no file 'C:\QUIK_2\socket.lua'
   no file 'C:\QUIK_2\socket\init.lua'
   no file 'C:\QUIK_2\Include\socket.lua'
   no file 'C:\QUIK_2\Include\socket.luac'
   no file 'C:\QUIK_2\LuaIndicators\socket.lua'
   no file 'C:\QUIK_2\LuaIndicators\socket.luac'
   no file 'C:\Program Files (x86)\Lua\5.1\lua\socket.lua'
   no file 'C:\Program Files\Lua\5.1\lua\socket.lua'
   no file '.\socket.dll'
   no file 'C:\QUIK_2\socket.dll'
   no file 'C:\QUIK_2\loadall.dll'
   no file 'C:\QUIK_2\Include\socket.dll'
   no file 'C:\QUIK_2\LuaIndicators\socket.dll'
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Цитата
Nikolay написал:
Речь не про консольную команду, а про консольную программу - читай сервис постоянно работающий и читающий почту.

В примере, что был приведен, видны зависимости:
Код
   local  imap4      =  require  'imap4'  

 local  ssl        =   require ( "ssl" )   

т.е. необходимо иметь библиотеку imap4, ссылка на которую была приведена.
Также, если используется ssl, то необходима ssl.

Если посмотреть на код библиотеки imap, то видно, что для ее работы необходима socket

Код
   local  socket  =  require  'socket'   

Поэтому необходимый минимум - это библиотеки imap и socket, что и было написано выше.
Спасибо за развернутый ответ.
Можно пример с вашей консольной программы.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Цитата
Nikolay написал:
Если не использовать SSL, то достаточно
socket - найдете здесь  https://forum.quik.ru/forum10/topic6902/
imap -  https://github.com/vrld/imap4.lua

Если же использовать SSL, то необходимо иметь luasec. Я стабильно работающую с 5.4 и 5.3 не нашел.

Поэтому, чтобы не зависеть от библиотек lua, уже давно написал себе консольную программку, читающую почту и записывающую в файлы, которые уже скрипт читает и обрабатывает.
1) Очень интересная идея с консольной командой. Можно пример исходник (так понимаю это можно написать через блокнот). Вы ее потом как запускаете - через Quik?
2) Не совсем пойму по вашим ссылкам нужно использовать socket + imap или как?
3) Чем лучше SSL и можно ли без него?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Цитата
Nikolay написал:
даже на этом форуме есть поиск.

socket - это библиотека для lua. Она включает в себя как lua файлы, так и dll. Она должна быть собрана под нужную версию lua.

imap4 - это тоже библиотека. Поиск любой системе выведет на репозитарий проекта.
Если есть знатоки и у кого-то есть возможность (готов за вознаграждение) - помогите пожалуйста реализовать чтение почты на lua в Quik 8-версии.
Нужны исходники Lua-скрипта, который читает почтовый ящик mail.ru и файлы библиотек, которые нужно закинуть в папку quik.
У меня не получило найти библиотки и запустить чтение почты.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Жалко - что никто не может подсказать...
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Цитата
Nikolay написал:
Да. socket найти под x64 lua 5.3 можно. А вот ssl - уже сложнее. Хотя, кажется, на форуме выкладывали собранные, рабочие варианты.
Не совсем понимаю - здесь требуется подключить следующие библиотеки?
local imap4   = require "imap4"
local Message = require "pop3.message"

Зачем сокет?
Где найти эти imap4, pop3?
Искать нужно dll файлы?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Понимаю что нужны библиотеки.
Но где их скачать?
Это должны быть dll-файлы?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Нашел более понятный пример, но не пойму где взять библиотеки для подключения?
Код
local imap4   = require "imap4"
local Message = require "pop3.message"

local connection = imap4('imap.qip.ru', 143)

assert(connection:isCapable('IMAP4rev1'))

connection:login('****', '****')

-- Sel ect INBOX with read only permissions.
local info = connection:examine('INBOX')
print(info.exist, info.recent)

-- List info on the 4 most recent mails.
for _,v in pairs(connection:fetch('(UID BODY.PEEK[HEADER.FIELDS (Subject To From Date)])', (info.exist-4)..':*')) do
    print("-------------------------")
    local msg = Message(v.BODY.value)
    print("ID:         ", msg:id())
    print("subject:    ", msg:subject())
    print("to:         ", msg:to())
    print("from:       ", msg:from())
    print("fr om addr:  ", msg:from_address())
    print("reply:      ", msg:reply_to())
    print("reply addr: ", msg:reply_address())
    print("trunc:      ", msg:is_truncated())
    for i,v in ipairs(msg:full_content()) do
        if v.text then  print("  ", i , "TEXT: ", v.type, #v.text)
        else print("  ", i , "FILE: ", v.type, v.file_name or v.name, #v.data) end
    end
end

-- close connection
connection:logout()
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Цитата
Nikolay написал:
Есть типовой пример.
Код
   local  version      =   getInfoParam ( "VERSION" )
 local  bits         =  version:sub( 1 ,  2 )  =  =   '7.'   and   'x86'   or   'x64' 

 local  gSPath       =   getScriptPath ()
 local  libs_Path  =   getScriptPath () .. '\\clibs_' .. bits
package.cpath      =  libs_Path .. "\\?.dll;" .. libs_Path .. "\\?\\?.dll;" .. package.cpath
package.path       =  gSPath  .. "\\?.lua;" .. gSPath  .. "\\?\\?.lua;" .. gSPath  .. "\\?\\init.lua;" .. package.path

 local  imap4      =  require  'imap4' 
 local  ssl        =   require ( "ssl" )

 local  imapServer     =   'imap.yandex.com' 
 local  serverPort     =   993 
 local  login             =   'login' 
 local  password         =   'pass' 

 -- If in doubt, see RFC 3501: 
 -- https://tools.ietf.org/html/rfc3501#section-6 

 -- Create new imap4 connection. 
 -- Port is optional and defaults to 143. 
 local  connection  =  imap4(imapServer, serverPort, {protocol  =   'tlsv1' })

 -- If you are connecting to gmail, yahoo or any other server that needs a SSL 
 -- connection before accepting commands, uncomment this line: 
 -- 
 -- connection:enabletls{protocol = 'sslv3'} 
 -- 
 -- You can skip this step by creating the connection using 
 -- 
 -- local connection = imap4('imap.gmail.com', 993, {protocol = 'sslv3'}) 

 -- Print the servers capabilities. 
 print ( table.concat (connection:capability(),  ', ' ))

 -- Make sure we can do what we came for. 
assert(connection:isCapable( 'IMAP4rev1' ))

 -- Login. Warning: The credentials are sent in plaintext unless you 
 -- tunnel the connection over ssh, or use SSL (either via the method shown 
 -- above or calling connection:starttls(params) before logging in). 
connection:login(login, password)

 -- connection:lsub() lists all subscribed mailboxes. 
 for  mb, info  in  pairs(connection:lsub())  do 
     -- connection:status(mailbox, items) queries status of a mailbox. 
     -- Note: The mailbox name may contain unescaped whitespace. You are 
     --       responsible to escape it properly - try ("%q"):format(mb). 
     local  stat  =  connection:status(mb, {'MESSAGES',  'RECENT' ,  'UNSEEN' })
     print (mb, stat.MESSAGES, stat.RECENT, stat.UNSEEN)
 end 

 -- Sel ect INBOX with read only permissions. 
 local  info  =  connection:examine( 'INBOX' )
 print (info.exist, info.recent)

 -- List info on the 4 most recent mails. 
 -- See https://tools.ietf.org/html/rfc3501#section-6.4.5 
 for  _,v  in  pairs(connection:fetch( '(UID BODY.PEEK[HEADER.FIELDS (From Date Subject)])' , (info.exist) .. ': * '))  do 
     -- `v' contains the response as mixed (possibly nested) table. 
     -- Keys are stored in the list part. In this example: 
     -- 
     --    v[1] = "UID", v[2] = BODY 
     -- 
     -- `v[key]' holds the value of that part, e.g. 
     -- 
     --    v.UID = 10 
     -- 
     -- `v.BODY' is the only exception and returns a table of the format 
     -- 
     --    {parts = part-table, value = response} 
     -- 
     -- For example: 
     -- 
     --    v.BODY = { 
     --        parts = {"HEADER.FIELDS", {"From", "Date", "Subject"}}, 
     --        value = "Fr om: Foo <foo@bar.baz>\r\nDate:..." 
     --    } 
     print (v.id, v.UID, v.BODY.value)
   local  txt  =  connection:fetch( '(BODY.PEEK[TEXT])' , v.id)
   if   # txt  >   0   then 
     print (txt[ 1 ].BODY.value)
   end 
 end 

 -- close connection 
connection:logout()  
Не пойму какие библиотеки нужно подключить?
Нашел еще на https://github.com/dmj/misc/blob/master/lua/imap.lua/imap.lua
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Quik - чтение почты
 
Можно ли через QUIK с помощью LUA прочитать список email писем (mail.ru)?
Есть ли образец скрипта как это можно сделать?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Цитата
Sergey Gorokhov написал:
TRANS_ID
Правильно ли понимаю если у меня по какой-то причине будет в течении дня сгенерировано два одинаковых TRANS_ID с одинаковыми номерами - максимум чем мне это грозит при снятии стоп-лоса, это то, что будет снят только 1, а второй останется болтаться?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Цитата
Sergey Gorokhov написал:
Цитата
Иван написал:
А UNIX TIME как получить?
UNIX TIME - это просто количество секунд начиная с какой-то даты (1 января 1970г).
можно получить через тот же os.date
Судя по всему, Вам не это нужно.
Просто сами определите для себя какое число Вам требуется и сгенерируйте. тех поддержка в этом месте не причем.
Вопрос только и только на Вашей стороне.
Хотите, считайте тот же UNIX TIME но с 2000 года
или "сожмите" дату до нужного размера (например сложив чила)
Или другие варианты которые Вам понравятся.
Мне нужно как-то сгенерировать TRANS_ID - уникальное число со смыслом. А не просто уникальное число.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Цитата
Sergey Gorokhov написал:
Иван,
Дополним,
судя по всему вопрос не технический, а логический. Нам не важно что вы напишите в TRANS_ID, главное чтобы размер был не больше «2 147 483 647»

Вы сами решите для себя нужна ли Вам вообще os.date("%d%H%M%S"), может ее не надо там указывать и все?
если нужна, сами для себя решите зачем, может там достаточно краткого формата ДДММГГ

Если вопрос в том, как в os.date указать выходной формат, то ответ есть в  документации на Lua
Таким образом я пытаюсь сгенерировать уникальное число для ID-транзакции.
А UNIX TIME как получить?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Цитата
Roman Azarov написал:
TRANS_ID
У меня не принимает TRANS_ID что угодно.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Очень не хочется заводить файл и туда писать ++№ транзакции.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Цитата
Roman Azarov написал:
Иван,

Для корректной работы с 19-значными номерами заявок, терминал потребуется обновить до версии не ниже 8.4 (лучше сразу выполнить обновление до актуальной версии).

Также заметим, что для работы терминала версии 8.0 и выше, требуется  64 -разрядная операционная система.
Если у Вас 32-разрядная ОС, ее также потребуется обновить.
Если бы так просто было обновиться - я бы с удовольствием...
Судя по всему проблема в ограничениях на кол-во символов для поля TRANS_ID
TRANS_ID-Уникальный идентификационный номер заявки, значение от «1» до «2 147 483 647»
Нашел решение в генерации уникального числа следующим образом:

500 служебный код + os.date("%d%H%M%S") + № контракта (++)
Проблема в том что не влажу в число символов.

Можно ли как-то вот это " os.date("%d%H%M%S") " преобразовать в меньшее число символов?
По аналогии как md5() но только нужны числа.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Цитата
Roman Azarov написал:
Иван, добрый день!

Уточните, пожалуйста, какая версия рабочего места используется?
7.27.2.1
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Попробовал сделать еще проще:

local bbb = 1952337642787989182;
message("Hi = " .. bbb);

Выводит Hi = 1.952337642788e+018

А нужно обычное целое число.
Как быть?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
№ номер заявки 1.952337642788e+018 VS 2 952 137 242 587 989 181
 
Добрый день.

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

function OnTrade(trade)
local trade_num = trade.trade_num;
local trans_id = trade.trans_id;

приходит trade_num вместо обычного числа из 18 символов приходит что то типа: 1.952337642788e+018. В результате пишет не возможно создать заявку (стоп-ордер).

Как преобразовать такое число с "e+018" в обычное число сколько бы там не было символов?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Enter Trade 0.1 - Торговый привод для терминала Quik с открытым исходным кодом
 
Цитата
Nikolay написал:
Ну а форма подачи Вашего произведения говорит больше о рекламе, а не о разработке.
Поэтому была озвучена рекомендация о GitHub. Я бы хотел бысто взглянуть на код не продираясь сквозь посторонюю информацию.
Тем более, что код открытый, как никак.
Скачивать с неизвестного сайта архивы... Это было опасно уже в 1994 году.
В этом плане вы правы - да лучше на GitHub выложить и удобнее будет смотреть исходный код. Исходники опубликовал на GitHub-е: https://github.com/iv-litovchenko/Quik-Enter-Trade
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Enter Trade 0.1 - Торговый привод для терминала Quik с открытым исходным кодом
 
Цитата
Nikolay написал:
Такого добра полно на просторах. Такого добра полно на просторах. Кто не писал логгинг и журналы сделок, скринеры, роботы и т.д...
Возможно и полно, возможно есть и платные за небольшую сумму и бесплатные. Возможно есть и очень дорогие. Но мне ни один из них не подошел в рамках того, то что мне повседневно нужно в одном флаконе для рынка Forts (открытие сделок с расчетом позиции, закрытие по частям, автостопы к таким открытым позициям, автозакрытие по параметрам, риск-менеджер с настраиваемыми параметрами, и алерты, которые можно было бы поставить за 1-2 секунды. А самое главное журнал сделок - тот же простой журнал есть в Metatrader. Кроме того я не практикую алготрейдинг (во всяком случае пока и точно для него использовал бы другие готовые инструменты). И мне не было бы необходимым проделывать такую масштабную работу по разработке такого привода и погружении в Lua-скрипт.

Цитата
Nikolay написал:
Только не стоит сюда выносить. На СмартЛабе или любой социальной ... будет самое то...
Здесь же хотелось бы обсуждать технические вопросы, не более.
Я бы очень хотел видеть такой штатный функционал в рамках самого Quik. Как он мог бы выглядеть оформил в виде такого привода. Metatrader я например не использую по психологическим и иным причинам. Пока для меня Quik 7 является основой.

На данный момент, главное  концептуальное неудобство привода пока есть только в том, что он не удобен для тех кто торгует больше 1 инструмента - переключатель не удобный. И чем это не технический вопрос? - вопрос то к поддержке, а не к Вам. Форум насколько полагаю полностью посвящен терминалу.

Цитата
Nikolay написал:

(PS. Заведите аккаунт на GitHub, поменьше используейте dofile, глобальные переменные и функции, ну и callback не место для сложных действий и точно не для совершения транзакций)
Пока не вижу необходимости в аккаунте GitHub. По поводу того, что вы советуете использовать и не использовать - не вижу в ваших словах конструктивных замечаний. Вы бы предложили какую-то часть кода и сказали бы что вот здесь лучше так, а здесь лучше так и было бы что обсудить и улучшить с технической точки зрения.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Enter Trade 0.1 - Торговый привод для терминала Quik с открытым исходным кодом
 
Для поддержки - будет желание зарегистрируйте пожелание на совместный проект по разработке вот такого привода для QUIK с журналом сделок, что бы его включить в коробку терминала по умолчанию. Мне очень не хватало подобного функционала на начальном этапе знакомства с терминалом и после когда уже разобрался в нем. Полагаю для многих частных трейдоров это сделает торговлю более удобной, по крайней мере мне это экономит достаточно большое кол-во времени по выставлению заявок, расчету депозита, и текущих сделанных сделках.

Периодически люди пишут комментарии с идеями на доработку - полагаю у этого есть потенциал. А также просьбы адаптировать привод для Quik 8. Мне пока вполне хватило того, что реализовано уже сейчас и для Quik 7. Единственное что еще бы очень хотел реализовать в приоритетном порядке - это автозакрытие и БУ.

Контактные данные для связи есть на моем сайте.
Иван.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Enter Trade 0.1 - Торговый привод для терминала Quik с открытым исходным кодом
 
Опубликовал сегодня первую версию торгового привода Enter Trade 0.1 для терминала Quik на Smart-Lab.

Привод умеет: открывать длинную позицию, открывать короткую позицию с заданным объемом, закрывать позицию частично либо полностью, автоматически выставлять защитные стоп-ордера (тип стоп и тейк №9).

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

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

Комментарии и замечания по исходному коду приветствуются.

Больше информации на Smart-Lab.ru - https://smart-lab.ru/blog/624023.php


Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Вопрос про демо-счета Quik
 
Просмотрел практически все демо-счета которые есть у брокеров для Quik для срочного рынка и не могу понять почему они так сильно отличаются от реала? а именно по времени сессии. Есть ли демо приближенное к реальным торгам?  
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Звук Lua в фоновом режиме
 
Цитата
swerg написал:
Вот проигрывание в фоновом режиме
https://quik2dde.ru/viewtopic.php?id=79

Всё подробно написано как устанавливать. Надеюсь, у вас не 8.5 версия (где Lua версию изменили)
Пока решил остаться на Quik 7 - поэтому библиотека w32.dll оказалась очень кстати.
Единственный нюакнс который заметил - как полагаю на время запуска звука приостанавливает работу скрипта. Может ошибаюсь - но все же это доли секунд.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Функция getCandlesByIndex() и закрытие свечки
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Иван.

Не вполне понятно, как связаны между собой вопрос о факте закрытия текущей свечи и проверка "простого условия" с пересечением графика МА и графика цены.

Первая задача решается проверкой времени - Вы знаете интервал, время начала/окончания торгов. На основании этих данных знаете какая свеча когда открывается и закрывается. Далее сравниваете текущее время - попадает ли оно в диапазон времени расчёта текущей свечи, или вышла за него.
Касательно проверки "простого условия" - количество выполнения блока программы при выполнении определённого условия зависит от реализации самого условия и программы в целом - надо предусмотреть и/или пересмотреть механизмы от многочисленных малоинформативных срабатываний.

В текущей формулировке Вашей задачи едва ли можем предложить более содержательный ответ. Просьба уточнить суть Вашей задачи, которую пытаетесь решить.
Уже решил. Что бы не срабатывало по много раз когда идет одно и тоже событие, оно просто записывается в общую переменную и как итог срабатываем как и должно 1 раз.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Журнал сделок и расчет результата сделок
 
Цитата
Anton написал:
Цитата
Иван написал:
Но не могу найти внятного пояснения как оно рассчитывается в плане формулы?
Представления не имею, как в экселе формулы устроены. По логике средневзвешенного вот так
Код
-- Функция рассчета средневзвешенного
-- Средневзвешенное значение = (x1*w1 + x2*w2 + x3*w3) / (w1+w2+w3)
-- x1,x2,x3 - это значение (например цена)
-- w1,w2,w3 - вес каждого
-- $a = [10,20,30];
-- $b = [5,6,7];
-- $ar = array_map(function($e1,$e2){ return $e1*e2; }, $a, $b);
-- $result = array_sum($ar)/array_sum($b);
-- }
function _QuikUtilityWeightedAverage(ar1,ar2)

        local ar1_map = {};
        for i=1, #ar1 do
                ar1_map[#ar1_map+1] = ar1[i] * ar2[i];
        end;

        local sumAr1 = 0;
        for i=1, #ar1_map do
                sumAr1 = sumAr1 + ar1_map[i];
        end;

        local sumAr2 = 0;
        for i=1, #ar2 do
                sumAr2 = sumAr2 + ar2[i];
        end;

        return tonumber(sumAr1/sumAr2);
end;
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
OnTrade и стоп-заявка
 
Цитата
swerg написал:
Стоп-заявки - сущность сервера QUIK, не биржи. Так что "отклоняет" их - сервер QUIK,
При отклонении стоп-заявки сервер всегда присылает причину (текстом). Например, "недостаточно средств", т.к. иногда под стоп-заявку требуются средства.
Если бы вы озвучили этот текст причины - была бы возможность ответить более предметно.

И было бы здорово, если бы вы уточнили: как связана тема и содержание вопроса??
У меня в OnTrade выставляется стоп-заявка (купилось 3 контракта - отправиться 3 стоп-заявки по 1 контракту). На длительном промежутке времени иногда возникает такая ситуация, что нет нескольких высталенных стопов.

К примеру бала сделка 10 контрактов. Она исполнилась по 2,3,5 контрактов. Соответственно должно быть выставлено 10 стопов. А по факту получается выставлено только 7. Это не всегда, но бывают единичные случаи. Вот и хотел бы понять с чем может быть связано не доставление 3 стоп-заявок.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
OnTrade и стоп-заявка
 
Есть ли объективные причины почему сервер, биржа могут отклонить правильно оформленную стоп-заявку? В каких случаях это может произойти?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Жизнеспособность идеи - 100 контрактов = 100 стоп-ордеров по 1 контракту каждый
 
Как оказалось жизнеспособно - 10, 20, 30 контрактов. И нет нужны заморачиваться на ORDER_MODIFY().
На очень большое кол-во контрактов пока не тестировал.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Очередность срабатывания OnTransReply, OnOrder, OnTrade
 
Цитата
Цитата
По логике последовательность вызовов должна быть жесткой:  OnTransReply --> OnOrder --> OnTrade (***).
Да, верно. Однако могут приходить  в любом порядке. Заранее нельзя быть уверенным в порядке срабатывания.
Сообщение старое - актуально ли данное по сегодняшний день в плане хаотичности очередности функций OnTransReply (), OnOrder (), OnTrade ()? Или были какие-то исправления в плане жесткой фиксации последовательности, т.к. в моем понимании она должна быть такой как пишет автор? Были ли изменения?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Неправильное значение Totalnet в функции onTrade()
 
Цитата
swerg написал:
Цитата
Иван написал:
Последовательность событий OnTrancReply(), OnOrder(), OnTrade(), имеют всегда жесткую последовательность исполнения, или же могут в разном порядке сработать?
Нет. Фиксированной последовательности нет. Скрипт следует писать так, чтобы он корректно работал при абсолютно любой последовательности вызова этих событий.
Более того, OnOrder() и OnTrade() могут быть вызваны по несколько раз для одной и той же заявки и сделки.

Чисто теоретически OnTrancReply() вовсе может не быть вызван (например, терминал потерял связь после отправки транзакции), но будем считать, что это слишком экзотический случай, хотя и вполне реальный, такие сообщения на форуме были.
Вот допустим прошла сделка, но Total еще не обновился.
Можно ли как-то понять что после сделки и значение Total тоже актуализировалось. У меня бывают такие случаи что сделка прошла, а тотал еще не обновлен, а я уже использую его значение... Как быть?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Журнал сделок и расчет результата сделок
 
Цитата
Anton написал:
Цитата
Иван написал:
пример нескольких строк из таблицы
С этим-то какие сложности
Код
  {
  { direction  =   'B' , value  =   33000.0  },
  { direction  =   'S' , value  =   32000.0  },
}
  
Нашел способ посчитать через средневсзвешенное.
В Excel это формула =СУММПРОИЗВ(E1:E10;F1:F10)/СУММ(F1:F10).
Но не могу найти внятного пояснения как оно рассчитывается в плане формулы?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Функция getCandlesByIndex() и закрытие свечки
 
Цитата
Sergey Gorokhov написал:
Иван,
Для этого нужно понять что сделок больше не будет.
А этого никто не может знать, т.к. в будущее никто смотреть не умеет.

Нужно либо ждать появления новой свечи, либо проверять текущее время.
Либо использовать оба варианта сразу.
А как тогда делать проверку - написал простое условие - если цена пересекла MA - то вылазит сообщение. Но проблема в том сообщение будет вылазить не 1 раз, а бесконечно...
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Вопрос про Сallback-и и их потерю
 
Фух, а то думал это и правда.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Вопрос про Сallback-и и их потерю
 
Сегодня наткнулся на интересный пост на смарт-лабе:
Цитата
https://smart-lab.ru/blog/472380.php
1. Впервые слышу про то, что колбэки в очередь встают. На сколько мне
известно — такого никогда не было. Если Вы выполняете вычисления
непосредственно внутри функции OnTrade, и не успели их завершить до
прихода следующего колбэка, то пришедший колбэк теряется.
Неужели это действительно так?
Что не успел отработать коллбэк и вернуть результат, тут приходит новый и затирает собой предыдущий?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Несколько Lua-роботов на 1 инструменте
 
Цитата
Константин Рейм написал:
ров
Судя по ответам прихожу к выводу что проблематично это нескольких роботов запускать на 1 инструмент в рамках 1 счета.

Но

Если у Вас робот имеет свой внутренний алгортим и не опирается например на то:
- сколько сделок было сегодня
- сколько убыточных сделок было
- интервал между сделками
- кол-во открытых контрактов
- и другие общие данные,

то да наверное это возможно
Пока отказался от этой идеи.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Несколько Lua-роботов на 1 инструменте
 
Цитата
Константин Рейм написал:
Цитата
Иван написал:
идентификатор в поле комментарий при открытии/закрытии позиций
На одном инструменте хоть сто роботов могут торговать и каждый по свой логике. Фильтр по комментарию как раз дает такую возможность - новый бот - новый уникальный комент. У меня имя робота - это комментарий к заявке - если имена ботов разные - торгуем хоть миллиард стратегий на одном инструменте.
Получается Вам что бы понять сколько у Вас открыл контрактов или закрыл нужно постоянно анализировать таблицу сделок?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Функция getCandlesByIndex() и закрытие свечки
 
Как при использовании функции t, n, l = getCandlesByIndex(tag, line, first_candle, getNumCandles(tag)); понять что последняя свеча уже закрылась или последнее значение индикатора уже рассчитано?  
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Несколько Lua-роботов на 1 инструменте
 
На данном форуме вычитал что многие дают роботу идентификатор в поле комментарий при открытии/закрытии позиций.
Не совсем понимаю как несколько роботов могут торговать на 1 инструменте?
Ведь все равно сколько бы роботов не было - они будут опираться на общие данные а не анализ своих операций.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Журнал сделок и расчет результата сделок
 
Цитата
Anton написал:
Пусть у нас есть табличка луа в виде массива со сделками, у каждой сделки есть как минимум поля direction = { 'B' | 'S' } и value (объем в деньгах).
Код
   function   calc_result (tradelist)
   local  result  =   0 
   for  i,t  in  ipairs(tradelist)  do 
     if  t.direction  =  =   'B'   then 
      result  =  result  -  t.value
     elseif  t.direction  =  =   'S'   then 
      result  =  result  +  t.value
     else 
      error( 'WTF' )
     end 
   end 
   return  result
 end 
  
Можно пожалуйста пример нескольких строк из таблицы привести.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Журнал сделок и расчет результата сделок
 
Цитата
Anton написал:
Сделка это один пункт из вашего списка, у нее результат "купились/продались икс контрактов по цене игрек". А результат серии сделок посчитать так: завести переменную, равную 0. Каждый раз, когда что-то купилось, уменьшать переменную на объем покупки. Каждый раз, когда что-то продалось, увеличивать ее на объем продажи. Когда закрылось все, в переменной останется чистая разница по всем проведенным сделкам. Считать можно как в реалтайме, так и задним числом по списку сделок.
Не совсем понял как посчитать - можно пожалуйста пример.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Журнал сделок и расчет результата сделок
 
К примеру было куплено 10 контрактов.

5 купились по цене 103100
3 купились по цене 103101
2 купились по цене 103102

Проходит время мы сделали докупку на 5 контрактов.
4 купились по цене 103250
1 купился по цене 103251

Проходит время мы решили закрыть часть позиций (а именно 10 контрактов).
5 было закрыто по цене 103500
5 было закрыто по цене 103501

Проходит еще время и мы решили закрыть все.
1 был закрыт по цене 103602
1 был закрыт по цене 103603
1 был закрыт по цене 103604
1 был закрыт по цене 103605
1 был закрыт по цене 103606

Как посчитать результат сделки?

Если бы это был открыт 1 контракт, либо было открыто 10 контрактов по одной и той же цене, и аналогично если бы было закрыто все по 1 цене - здесь вопросов нет...
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Идентификатор для метки
 
Цитата
Sergey Gorokhov написал:
Иван,
Зачем?
у метки есть ID по которому Вы можете делать с ней что угодно
1) Создаю 2 метки из Lua-скрипта с помощью
Код
   --   label_params = {
      --   TEXT = "----------------=ТЕСТ=----------------",
         --DATE = 20200430,
         --TIME = 221000,
         --YVALUE = 110900,
      --   R = 200,
      --   G = 200,
      --   B = 200,
      --   -- HINT = "-----------------------"
   --   };
      
   --   label_id = AddLabel("priceTest", label_params);
Как понял из документации можно создать только метку, нельзя добавить горизонтальную линию к пример...?
Получается я создал этим скриптом две метки. Когда я закрываю квик и скрипт по новому запускается - то у меня опять создаются уже еще две новые метки. Как отследить и как их не дублировать?

2) - можно ли в созданном индикаторе добавить две линии на график с возможностью их перетаскивания вверх/вниз как стоп-лосс?,  
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Идентификатор для метки
 
Цитата
Sergey Gorokhov написал:
Цитата
Иван написал:
Возможно ли для добавленной метки задать идентификатор?

Здравствуйте,
Идентификатор задается НЕ на метке, а на графике на котором надо эту метку нарисовать.
задать программно идентификатор к сожалению нельзя
Имею в виду немного другое.
Я бы хотел поставить метку на графике, нарисовать линию, или фигуру и ей задать индетификатор как графику цены например. Это возможно?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Идентификатор для метки
 
Возможно ли для добавленной метки задать идентификатор?
Либо сделать такой индикатор 2 линии которого можно будет двигать на графике? Просто двигать как передвигается стоп-лосс мышкой.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Индикатор с уровнями для 3 таймфреймов
 
Цитата
Andrey Bezrukov написал:
Иван,

Нет, такой возможности нет - MA привязан к текущему интервалу графика, который может быть только один для одного окна графика.

Наиболее вероятно, Вашу задачу можно решить пользовательским индикатором на LUA. Необходимую информацию и примеры для написания собственных индикаторов Вы можете найти по следующей  ссылке .
Вопрос немного в другом.
1) Можно ли на принципах индикатора нарисовать линию и после двигать ее мышкой на графике.
2) Можно ли запомнить ее ID что бы не отрисовывать дважды?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Индикатор с уровнями для 3 таймфреймов
 
Если мы нанесем на график индикатор MA то при переключении между таймфреймами м5, ч1, и д1 он каждый раз перересуетс в зависимости от таймфрейма. Возможно ли сделать так что бы индикатор рисовал различные уровни для трех таймфреймов?
Желтые для м5, синие для ч1, и красные для д1. Т.е. на каком бы таймфрейме мы не были из этих трех все равно бы нарисовались три типа уровней...?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Создание таблицы в Lua
 
Цитата
Sergey Gorokhov написал:
Иван,
Ну вкладки есть, с этим никто не спорит.
А вот функционала работы с ними в QLUA нету.
Т.е. QLUA не умеет заранее определять на какой вкладке ему рисовать окно, поэтому рисует его на всех.
Вот теперь понятно.
Прихожу к выводу тогда что каждый раз надо перезапускать скрипт.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Страницы: 1 2 3 След.
Наверх