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

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

Страницы: Пред. 1 2 3 4 След.
Ошибка при создании метки
 
Сюда дополню по этой проблеме. Там подставляются по умолчанию кривые координаты с противоположным знаком по оси Y. Если их исправлять при постановке метки, то она выставляется.
Работа нескольких скриптов с одним файлом, Выдает периодически ошибку при работе нескольких скриптов с одним файлом
 
Цитата
Дмитрий написал:
function mark_Fail (zap, mark) - моя функция записи в файл
FileWrite = io.open('D:\\QLUA\\fails\\mark.txt', zap)
FileWrite:write(mark)
FileWrite:close()
end
а другой скрипт читает этот файл.
Вы бы написали ещё как читаете. У меня записываются данные в файл одним скриптом и читаются другим в 10 раз чаще и не было подобных проблем. Не знаю как вы читаете, могу предположить, что открываете и закрываете файл при каждом чтении. В этом нет необходимости, открывайте файл на чтение в начале работы читающего скрипта и закрывайте файл в конце работы непосредственно перед остановкой. Попробуйте.
Тормоза в отрисовке меток в 10 версии
 
Продолжаю увлекательное тестирование свежих версий. На 10.2 визуально отметил тормоза в отрисовке графики и тормоза в выставлении заявок, о чем здесь писали. Ну, это четко ещё не проверил. Теперь о том, что проверил: Метки в 10 версии отрисовываются в 4-5 раз медленнее. Не поленился и проверил много версий и установил, что фиаско случилось в самом начале: с версии 10.0.1. А в версии 9.7 все замечательно, даже лучше процентов на 20, чем в предыдущих. Возможно, эта заторможенность носит какой-то общий характер, а не касается исключительно меток. Вот скрипт для теста:
Код
local CHART_TAG_PRICE = "Test_speed_lab"

local function sysTime ()
   local t_time = os.sysdate()
   return 10000 * t_time.hour + 100 * t_time.min + t_time.sec + 0.001 * t_time.ms
end

function main ()

   local label = {

     IMAGE_PATH = "C:\\Quik_Pic\\Lines\\500_1_red.bmp",

--[[                                                          -- закомментированно: рисунок, раскомментированно: текст
     TEXT = "________________________",
     IMAGE_PATH = "",
     TRANSPARENT_BACKGROUND = 1,
--]]
     ALIGNMENT = "TOP",
     YVALUE =  84.00,
     DATE = 20230615,
     TIME = 130000,
     R = 0,
     G = 160,
     B = 0, 
     FONT_HEIGHT = 12 
   }

   local sys_time = sysTime()

   for i = 1, 1000 do
       label.YVALUE =  label.YVALUE + 0.001
       AddLabel(CHART_TAG_PRICE, label)
   end

   sys_time = sysTime() - sys_time

   message("sys_time: " .. tostring (sys_time))

   sleep(2000)
   DelAllLabels(CHART_TAG_PRICE)

end
График USDRUB_TOM, дату/время текущие поставите, путь для картинки свой пропишите. Картинка здесь эта простая линия, можно взять любой рисунок. На тексте разницы почти нет, на картинке замедление в 4-5 раза. Рисуется прямоугольник снизу вверх.
10.2.1.12, отображение
 
Сюда напишу по версии 10.2.2.24
Неправильно работает опция "Контролировать цены заявок".
Привязка меток к графику
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Игорь М.

Да, начиная с версии Рабочего места QUIK 9.1 так реализовано.
В данном случае можем предложить зарегистрировать пожелание на доработку функционала.
Уточните, пожалуйста, регистрируем?
Да, зарегистрируйте, пожалуйста. Чтобы метки не пропадали и их можно было выставить, когда график, к которому эти метки привязаны, не находится в области видимости. Чтобы было как раньше.
Шрифты., Вернуть в Quik возможность использования всех доступных шрифтов, как это было в версии 6.17
 
Цитата
Kalmar написал:
Цитата
Игорь М написал:
Уважаемые разработчики, спасибо, что вернули MS Sans Serif в шрифты!
Разве вернули? Или это сарказм?
Не сарказм, вернули. Я тут стал новые версии смотреть, поставил 10.1.2.2 - и там, о чудо, многие шрифты, включая этот, присутствуют. Я все эти годы так решал: ставил в терминале шрифт тоже на 13 символов (Comic Sans MS), сохранял файл настроек (.wnd) и затем в файле настроек уже менял Comic Sans MS на MS Sans Serif и всё работало. Но теперь всё стало нормально, можно без этих огородов обойтись.
Шрифты., Вернуть в Quik возможность использования всех доступных шрифтов, как это было в версии 6.17
 
Уважаемые разработчики, спасибо, что вернули MS Sans Serif в шрифты!
Ошибки в документации (руководстве пользователя)
 
Цитата
Egor Zaytsev написал:
Добрый день.

Игорь, уточните, что Вас смущает в данной формулировке?
Егор, она очень странная. Какие инструменты в лотах? В пункте "4.5 Заявки" у вас нормально написано: "qty NUMBER Количество в лотах". Также и в сделках должно быть.
Привязка меток к графику
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Игорь М.

Да, с версии Рабочего места QUIK 9.1 метки привязываются к графикам.
Такое поведение было реализовано для того, чтобы метки можно было оставлять на графике при смене инструмента по аналогии с трендовыми линиями, фигурами.

Цитата
Если теперь поставить шкалу на графике в ручном режиме от 100 до 200, к примеру, а максимум графика цены будет ниже 100, то метку не будет видно.
Приложите, пожалуйста, скриншоты как именно отображаются метки у Вас на графике сейчас и как по Вашему мнению должно было бы быть.
Я понимаю, что не просто так это нововведение сделали. Но в результате, если график выходит за видимую область в окне, то метка пропадает. До версии 9.1 такого не было, метка оставалась. Хотелось бы, чтобы метка оставалась на месте, даже если графика на данный момент нет в области видимости. Например, метка (картинка из файла), которая используется в качестве уровня экстремума цены, благополучно пропадает, если вы сдвинули график таким образом, что в нем график цены на этот момент не виден.
Как убрать рекламный баннер?, Реально злит!
 
Цитата
Karina Dmitrieva написал:
Добрый день.

К сожалению, мы не можем заставить брокера использовать или, наоборот, не использовать тот или иной функционал.
Каждый брокер самостоятельно принимает решение.
Понятно, что вы не можете "заставить брокера использовать или, наоборот, не использовать тот или иной функционал". Идея была в том, чтобы вы попытались донести до них мысль о более цивилизованном решении трансляции рекламы.
Как убрать рекламный баннер?, Реально злит!
 
Цитата
nikolz написал:
Прикольно, но вставка рекламного банера - это фишка разработчиков QUIK.
---------------------
Ау, Разработчики объясните начинающим Вашу фишку с этим банером.
-----------------------
Можно убить этот банер хуком.
Class: ShowBannerWindow.
Разработчики уже отвечали когда-то, что эта возможность была сделана по просьбе брокеров, от них деньги-то идут. Это паровозик был самостоятельной фишкой разработчиков
Привязка меток к графику
 
Как я понял в версии 9.1 изменили функционал меток на графике и теперь "Привязка меток теперь осуществляется не к шкале, а к графику...". Если теперь поставить шкалу на графике в ручном режиме от 100 до 200, к примеру, а максимум графика цены будет ниже 100, то метку не будет видно. Что скриптом ставить по координатам, что руками тоже по координатам. Это неудобно, обрезает некоторые возможности, до этой версии всё нормально работало, куда хочешь метку поставить - туда и ставишь. Зачем это сделали? Есть какие-то настройки, чтобы можно было сделать, как в 8-х версиях?
Форматирование таблицы сделок
 
Цитата
Roman Azarov написал:
Игорь М, добрый день!

Мы обнаружили причину проблемы и исправим ее в ближайших версиях. Приносим извинения за доставленные неудобства.  
Обновился и не увидел, что проблема решена. Два с лишним года прошло, до этого нормально всё было. Какие перспективы?
Как убрать рекламный баннер?, Реально злит!
 
Эта тема неоднократно поднималась. Это какой-то лютый колхоз иметь на рабочем пространстве слепящий рекламный баннер... Жаль, что не бегущая строка со звуковым сопровождением. Еще можно сделать, чтобы он мигал апериодически.

Уважаемые разработчики, обратитесь, пожалуйста, к брокерам и донесите до них простую мысль, что рекламу, тем более не часто меняющуюся, можно слать на почту или, на худой конец, показывать при загрузке Квика. Еще вариант, показывать её в течение первой минуты после подключения к серверу. Много существует грамотных и удобных для всех решений.
Сделки
 
Цитата
Дмитрий написал:
 Искал но ответа так и не нашел, поэтому решил спросить
Странно, я в поиске по запросу OnTrade сразу нашел: https://forum.quik.ru/forum10/topic1082/
Вас подобное интересовало?
Сделки
 
Цитата
Дмитрий написал:
Добрый день!
Вопрос почему то приходит ответ на сделку 2-3-4 раза в function OnTrade(trade_data)
Много раз здесь объясняли, поиском по форуму воспользуйтесь.
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
Дмитрий написал:
 Так все реализовано уже -  https://forum.quik.ru/forum12/topic7774/
Ошибка создания заявки. [GW][82] "Заявка Book-or-Cancel не может быть выставлена/переставлена, т.к. она приводит к немедленному исполнению.".
Спасибо за ссылку.
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
nikolz написал:
Возможно я не совсем точно выразился.
Я уверен, что теряете Вы не на комиссии , а на убытках при движении рынка против вашей позиции. И эти потери гораздо больше .
Но экономия на комиссии - это не способ получить прибыль на рынке, тем более на фьючерсе.
Фьючерс - это торговля с плечом.
Посчитайте   величину комиссии от стоимости актива и сравните это с убытком при   движении актива против вашей позиции хотя бы на 1%.
--------------------
Если экономить на комиссии, то лучше вообще не ставить заявки. Экономия максимальная.
Я и на комиссии теряю и на убытках при движении рынка против позиции, которые больше. Это да. С удовольствием лупил бы по рынку и платил комиссию, если бы рынок был активный, живой, волатильный, а на дохлом умирающем я сэкономлю и на комиссии и на отклонении цены от средневзвешенной текущей. И да, я полностью согласен, что "экономия на комиссии - это не способ получить прибыль на рынке", но пока я тут ещё торгую обсуждаемая опция поможет сэкономить.
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
nikolz написал:
Цитата
Игорь М написал:
   Антон, убедительная просьба с этим не затягивать. Эта опция актуальна и реально поможет деньги сэкономить.
на самом деле это не так
реально это не поможет экономить деньги.
Поможет.
Цитата
Так как комиссия брокера остается, а она всегда существенно больше биржевой.
На примере RI. Комиссия МБ: 9.14 руб за контракт (тейкер), брокер 0.45 руб. Открыть и закрыть 1 контракт по рынку это 18.28 руб бирже и 0.9 руб брокеру. В 20 раз у МБ комиссия больше получается.
Цитата
Если заявка не пассивная, то она просто отклоняется и правило это лишь к лимитированным заявкам.
При движении рынка в момент отправки заявки "Поставить в очередь" заявка может стать рыночной и я как тейкер заплачу комиссию, хотя мне нужно было просто поставить лимитный ордер близко к рыночной цене. Такое "счастье" мне не нужно, пусть уж лучше заявка будет отклонена. На МБ для этого эту опцию и ввели. Вы же сами цитировали выше: "В рамках действующей тарификация признак BoС гарантирует нулевую комиссию по сделкам". (цитата МБ)
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
Sergey Gorokhov написал:
 
На самом деле это не так
Есть два формата транзакций, первый тот что описан в документации и там действительно нет признака "Только пассивная"
И второй, тот который в документации не описан, но тем не менее допустим.
Для понимания о чем речь, откройте Карман транзакций, положите в него необходимую транзакцию, и сохраните от туда в tri файл. Открыв файл блокнотом Вы увидите транзакцию во втором формате.
Этот формат допустимо использовать во всех способах подачи транзакций, включая sendTransaction
В этом формате, есть признак "только пассивная" и его можно использовать в sendTransaction.
Вообще, в этом формате можно использовать любые параметры любых транзакций, без каких либо доработок.
Ограничения такие, в русском терминале допустимо использовать только русские параметры, в английском только английские.
Перемешивать параметры от разных форматов нельзя.
Сергей, спасибо за информацию. Такая ситуация: при попытке загрузить транзакцию из tri-файла пишет: Неправильно указано значение для поля "Условие исполнения": "Только пассивная". При отправке с помощью sendTransaction тоже. В обоих случаях все нормально , если поле "Условие исполнения": "Поставить в очередь". Версия терминала имеет значение или какие-то ещё есть моменты?
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
Anton Belonogov написал:
Герман, дополнительных действий с Вашей стороны не потребуется.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Антон, убедительная просьба с этим не затягивать. Эта опция актуальна и реально поможет деньги сэкономить.
Метки в индикаторе, При перезапуске Квика получается наслоение меток
 
Цитата
Alexey Danin написал:
Здравствуйте.

 Мы зарегистрировали пожелание на доработку.  Мы постараемся рассмотреть его и  сообщить Вам результаты анализа. Впоследствии, по результатам анализа,  будет приниматься решение о реализации пожелания в будущих версиях ПО.
Алексей, пользуясь случаем оставлю здесь ещё пожелание: Добавьте ещё один параметр в таблице метки, типа user_id или user_hint, используя который пользователь смог бы идентифицировать метку. Kolossi выше написал, что он сохраняет UID метки в файл и затем удаляет при повторном запуске. Я тоже в подобных случаях удаляю старые при повторном запуске терминала. Не знаю, что за UID Kolossi сохраняет, но label_id для этих целей не годятся, и поэтому приходится выдумывать разное экзотическое для идентификации: где-то использую время, где-то цвета, а где-то редкий шрифт, и потом при запуске удаляю все метки с определенным шрифтом, например. Существование дополнительного параметра в таблице существенно бы облегчило данную задачу.
Бесконечный цикл функции с заданным интервалом времени
 
Цитата
shtur2005 написал:
Добрый день, уважаемые языковеды! Прошу не кидать в меня тапками, я только начал изучать язык.
Помогите пожалуйста с созданием бесконечного цикла функции. Двое суток читал и пробовал, ничего не вышло.
Я вам пример набросал: скрипт  в цикле выводит сообщения со значениями даты/времени и high/low последних 5 свечей (CNT_CANDLES = 5). Работает.
Код
local CHART_TAG_PRICE = "SRH15MIN"                         -- идентификатор графика цены
local CNT_CANDLES = 5                                      -- значение количества свечей для обработки

local is_run = true
local processed                                            -- количество обработанных свечей графика

local function timeCandle (hour, min)                      -- функция формирования времени свечи (number)
   return 10000 * hour + 100 * min
end

local function dateCandle (year, month, day)               -- функция формирования даты свечи (number)
   return 10000 * year + 100 * month + day
end

local function singleCandleProcessing (t)                  -- функция обработки одиночной свечи
   local time = timeCandle(t.datetime.hour, t.datetime.min)                        -- вызов функции формирования времени свечи
   local date = dateCandle(t.datetime.year, t.datetime.month, t.datetime.day)      -- вызов функции формирования даты свечи
   message(tostring(date) .. "  " .. tostring(time) .. ". High: " .. tostring(t.high) .. ", low: " .. tostring(t.low))
end

local function candlesProcessing ()                        -- функция обработки последней свечи/свечей
   local number = getNumCandles(CHART_TAG_PRICE)               -- количество свечей графика
   if number > processed then
       local t = getCandlesByIndex(CHART_TAG_PRICE, 0, processed, number - processed)          -- получение таблицы последней свечи/свечей
       if t then
           for i = 0, number - processed - 1 do
               if t[i] then
                   singleCandleProcessing(t[i])                        -- вызов функции обработки одиночной свечи
               end
           end
           processed = number
       end
   end
end

function main ()
   processed = getNumCandles(CHART_TAG_PRICE) - CNT_CANDLES
   while is_run do
       candlesProcessing ()                                        -- вызов функции обработки последней свечи/свечей
       sleep (30000)
   end
end

function OnStop ()
   is_run = false
   return 2000
end
Как получить значение Лимита открытых позиций по фьючерсам или как получить элемент из таблицы?
 
Цитата
Денис написал:
Код
  Мне приходится решать эту задачку так:
Table_ getFuturesLimit   =  {}  -- создается переменная таблица для получения значения, возвращаемого функцией getFuturesLimit 

Table_ getFuturesLimit   =   getFuturesLimit  (  "SPBFUT"  ,  "SPBFUT *  *  *  *  * " ,   0  ,  "SUR" )  -- результат работы функции getFuturesLimit помещается в созданную таблицу  


 if  Table_ getFuturesLimit   and  next(Table_ getFuturesLimit )  then   -- если результат работы функции не nil и не пустая таблица, то можно обратиться к соответствующему полю. 

    FutLimit  =   Table_ getFuturesLimit .cbplimit  -- получается значение интересующего поля 

 end   -- end if   
Прокомментирую: Первая строка не нужна, Table_getFuturesLimit лучше залокалить, а next(Table_getFuturesLimit) заменить на проверку Table_getFuturesLimit.cbplimit. Если таблица пустая, то Table_getFuturesLimit.cbplimit будет nil без ошибки и условие не выполнится, но может быть так: Table_getFuturesLimit.cbplimit = nil, а next(Table_getFuturesLimit) будет true (другие поля существуют) - условие выполнится и вы присвоите переменной FutLimit этот nil.
Как считать данные из таблицы текущих торгов?
 
Цитата
Вася написал:
Владимир, потому что я, начинающий программист, выполняю заказ клиента. Таково его желание. Ему нужно выводить в эксель те данные, которые он сам выберет в ТТТ. И он, естественно, не сможет залезть в код и добавить новую колонку когда решит это сделать. Он сможет только добавить новую колонку в ТТТ и она должна быть выведена. Сложность в том, что выводить данные нужно не только из ТТТ, а еще из одной самодельной таблицы. Вот я и хотел объединить их сперва как-то, а потом сборную таблицу вывести.
Пусть ваш клиент работает с вашей пользовательской таблицей напрямую, а не с ТТТ. Сделайте в этой таблице возможность добавлять новые колонки, а все данные будете получать через getParamEx.
Агрегировать объемы по ценам
 
Цитата
Nikolay написал:
Да, но округление не нужно в данной операции.
Да это понятно, я так написал для информации, без применения к описанной задаче.
Агрегировать объемы по ценам
 
Еще решил написать, мало ли кто не в курсе, что работает целочисленное деление "//": "Целочисленное деление ('//') всегда преобразует свои операнды в integer и дает в результате integer. Преобразование происходит посредством округления операндов в меньшую сторону, как это делает функция math.floor".
Агрегировать объемы по ценам
 
math.tointeger (x) - если значение x можно преобразовать в целое, возвращает целое. Иначе, возвращает nil.
Работа с метками, ошибки при закрытии/открытии программы Quik., Свои уровни на графике из файла.
 
Кто-то из поддержки вроде писал, что удалить метки не получится, так как графика уже нет, то есть при завершении работы терминала вы их не удалите, поэтому удаляйте старые метки при запуске.
Объясните, пожалуйста, один момент в коде.
 
Цитата
Владимир написал:
Да, она пока что "охватывает далеко не все случаи" - новая версия должна охватить всё недостающее.
Не охватит. Вы забываете, что народ занимается не только реализацией роботов, но и разработкой разных полуавтоматов с риск- мани-менеджментом, решений для проп-трейдинга, поддержкой групп клиентов и т.д. Вы же не собираетесь все это в свой скрипт запихивать.
Стоп лосс с задержкой
 
Цитата
NoneB написал:
Цитата
Игорь М написал:
Тут я вас не понял
Первая производная графика цены = скорость изменения цены, а ее единицей измерения могут  быть   USD/сек, Руб/сек или др.
Например, средние скользящие линии являются первыми производными  Производная (математическое понятие)
Я не про производные не понял, я не понял к чему они у вас там в ответе на мой посыл про порочность самой идеи использования описанного стопа с задержкой без постоянного контроля на конкретном примере. Там никакие функции уже не помогут, хоть лапласиан считайте.
Объясните, пожалуйста, один момент в коде.
 
Цитата
Владимир написал:
Игорь М, То и имею в виду: статус заявки практически однозначно определяется информацией от сделки. Если я заказал 10 лотов, и у меня сделка на 10, то заявка исполнена. А если там, допустим, 8, то она активна, и будет исполнена, если уже в следующей сделке придут остальные 2 или две сделки по единичке. Или вообще больше ничего не придёт, заявка останется частично исполненной.
Я так и понял, но решил уточнить. Вы просто сквозь призму своей задачи смотрите, которая охватывает далеко не все случаи. Не всегда известен первоначальный объем выставленной заявки, её же и руками могут выставить, поэтому x-8=? Для этого случая я и писал.
Стоп лосс с задержкой
 
Цитата
NoneB написал: "бенефициаром" будет техподдержка брокера с ошпаренными вопросами о работе функции
Отвечать на вопросы - это их работа, они за это деньги получают. Какие  вы там "ошпаренные вопросы" собираетесь задавать - не важно, они  попытаются вам всё объяснить. Я повторюсь: кому надо, тот пользуется,  кому не надо - не пользуется.
Цитата
Игорь М написал: А если она на 20% уедет резко и не вернется, то что?
NoneB написал: то  добавлять в заявку другие функции, пока пользователи не запутаются в  них для "упрощения" работы можно добавить ограничения первой  и второй  производных (скорости и ускорения) цены  
Тут я вас не понял, я про бессмысленность размещения подобной стоп-заявки на сервере писал.
Объясните, пожалуйста, один момент в коде.
 
Цитата
Владимир написал: Никак. А зачем они нужны?
Для определения статуса заявки. Эти флаги для этого и сделаны.
Цитата
Владимир написал: Если число лотов обнулилось
Что вы имеете в виду?
Ошибки в документации (руководстве пользователя)
 
Не нашел поиском тему про ошибки, опечатки, неточности и недочеты в документации.
4.4 Сделки. Описание параметров Таблицы сделок: qty NUMBER Количество инструментов в лотах

Стоп лосс с задержкой
 
Цитата
NoneB написал:
Статья видимо частично "копипаст не глядя", но продуктивнее обсуждать по-существу  "пользу"  новой функции,
А почему слово польза в кавычках? Пусть будет такая возможность: кому надо, тот пользуется, кому не надо - не пользуется. Понятно, что для большинства она не нужна, но  расширение функционала никому не вредит.

пс. О, посмотрел, что там люди понаписали: "отсчитывает 30 секунд", "цена может пойти на 3-5-7% вниз, при этом после такого пролива через 20-40 секунд цена возвращается". А если она на 20% уедет резко и не вернется, то что? Пусть график от 03.03.2014 глянут, например. Они такую стоп-заявку собираются поставить и гулять пойти? Хм... А зачем тогда её, вообще, ставить? Проще уведомление в смартфон получить и самому руками закрывать, если поедет в одну сторону без отката. А если комп включен, то напишите/закажите скрипт на Lua и он вам, что угодно с какой угодно задержкой и без неё выставлять будет.
Стоп лосс с задержкой
 
Цитата
NoneB написал:
Казалось бы, замышляется полезная функция.
Но выбранное в ней время  и все параметры заявки  будут известны маркетмейкеру и для малых задержек времени  он так же легко собьет стоп-лосс
https://vk.com/@trader.logvinenko-rol-i-vozmozhnosti-marketmeikera
Откуда вот это всё? Из этих нетленок? Первое предложение по ссылке: "Маркетмейкер является авторизованным участником рынка, которому  разрешено выставлять двухсторонние заявки, как на покупку, так и на  продажу (в то время как все остальные участники рынка могут открываться  только в одну сторону - однонаправленно)". Чё?
Объясните, пожалуйста, один момент в коде.
 
Цитата
Владимир написал:
Игорь М, Нет, я тоже именно из OnTrade получаю информацию и о сделке, и о заявке, и о транзакции, никаких дополнительных телодвижений для этого не требуется.
Как вы получаете флаги для заявки из OnTrade?
Объясните, пожалуйста, один момент в коде.
 
Цитата
Айдар написал:
Из функции OnTrade() я хочу узнать, активна ли заявка, для этого использую эту пользовательскую функцию:
if bit_set(TABLE_trade.flags, 0)==true then
--то есть, если в бите 0 флаг установлен, значит заявка активна
end
Мне кажется, что вы путаете сделку и заявку. Из OnTrade(trade) вы получаете информацию о сделке. Если вы хотите узнать что-то о заявке, которая эту сделку породила, то в общем как-то так можно:  
Код
 local order = getOrderByNumber (CLASS_CODE, trade.order_num)    -- получение таблицы данных из строки таблицы заявок с указанным номером заявки из таблицы сделок
   if order then
       if order.flags & 1 == 1 then                                    -- соответствующая заявка активна (исполнена частично)

         elseif order.flags & 2 == 0 then                              -- соответствующая заявка исполнена полностью

         else                                                          -- соответствующая заявка исполнена частично и снята

       end
   end
Трейлинг- стоп. Как протестировать на quik?
 
Цитата
Egor Denisov написал: * пример
Так какой тут пример, реализаций же много можно придумать. Если вам просто для короткого теста, сделайте так:
Код
local T_PRICE = {150210, 150230, 150240, 150230, 150250, 150280, 150350, 150570, 150850, 150980, 150320, 150580, 151020, 151640, 150680, 150450, 150270, 150260, 150280}
local cnt = -10

local function getMyLastPrice ()                      --  функция получения цены последней сделки
   cnt = cnt + 1
   if cnt < 1 or cnt > #T_PRICE then
       return getParamEx (CLASS_CODE, SEC_CODE, "LAST").param_value       -- получение таблицы из ТТТ (цена последней сделки)
     else
       return T_PRICE[cnt]
   end
end
Таблица T_PRICE - это ваш рукописный вынос вверх примерно на 1% . Функция getMyLastPrice возвращает первые 10 циклов основной программы реальную цену, затем цену этого выноса, потом снова реальную цену (цену для sendTransaction преобразовать не забудьте). Забивайте в таблицу T_PRICE любые значения, которые нужны для теста. В вашей основной программе циклически идет определение последней цены, согласно которой и двигается стоп-заявка, например:
Код
   while is_run do
       if isConnected () == 1  then
           last_price = getMyLastPrice ()
           -- здесь будет реализация вашего алгоритма манипулирования стоп-заявкой с использованием смоделированной цены (last_price)
       end
       sleep (200)
   end
Трейлинг- стоп. Как протестировать на quik?
 
Цитата
Egor Denisov написал: а дальше подменить реальные данные - искуственными?
Можно и без файла, а просто модуль дополнительный написать или функцию в основной программе.
Трейлинг- стоп. Как протестировать на quik?
 
Цитата
Egor Denisov написал:
Цитата
Игорь М написал:
 
Цитата
Egor Denisov  написал: Вот как ложный прокол этот получить непосредственно для теста.
 Создайте файл, в который будет записываться текущая цена. В основной программе на время теста вы будете читать текущую цену из файла. Затем напишите скрипт, который будет записывать в созданный файл текущую цену (реальную и не очень). В этом скрипте вы сможете создавать ситуацию с проколом в определенный момент времени: записали в файл текущую цену, затем цену на 2% выше, sleep (1000), затем опять текущую (реальную) цену записали.
а дальше подменить реальные данные - искуственными?
Вы напишите дополнительный скрипт, который будет записывать цену в файл. Основная программа будет читать эту цену из этого файла вместо реальной цены, которую она получает сейчас из функции getLastPrice, например (или откуда вы её получаете). Дополнительный скрипт тоже будет записывать в файл текущую цену из функции getLastPrice, но дополнительно вы сможете сделать так, чтобы в какое-то время или с какой-либо периодичностью вместо текущей цены из функции getLastPrice в файл записывалась цена функции getLastPrice * 1.02 в течение 1-2 секунд. Это и будет ваш запрограммированный пробой. Можете делать его с началом каждой минуты, одномоментно или быстро, но плавно. Как запрограммируете, так и будет. Можете в нерабочее время, подключившись к серверу, в реальном режиме реакцию основного скрипта тестировать с выставлением/перемещением/срабатыванием реальных стопов.
Трейлинг- стоп. Как протестировать на quik?
 
Цитата
Egor Denisov написал: Вот как ложный прокол этот получить непосредственно для теста.
Создайте файл, в который будет записываться текущая цена. В основной программе на время теста вы будете читать текущую цену из файла. Затем напишите скрипт, который будет записывать в созданный файл текущую цену (реальную и не очень). В этом скрипте вы сможете создавать ситуацию с проколом в определенный момент времени: записали в файл текущую цену, затем цену на 2% выше, sleep (1000), затем опять текущую (реальную) цену записали.
Таблица сделок, номер заявки превращается в число e+
 
Цитата
Иван написал:
Цитата
_sk_ написал:
tostring
 У меня это не дает результата - все равно на конце:  e+018
Вместо tostring используйте:
Код
local function toStringInt (value)
   return tostring (math.tointeger (value) or value)
end
Почему не работает математическая функция math.frexp?
 
Цитата
Вася написал:
Пишу в редакторе:

m, n = math.frexp(1.23456e24)
print(m)

Вроде как эта функция есть в Lua и она должна привести экспоненциальное число в нормальный вид. Но она почему то не работает, если я пишу это в редакторе кода. Кто-нибудь знает почему не работает?
Lua 5.3 Руководство.
8.2 – Изменения в библиотеках: Следующие функции стали нежелательными в математической библиотеке: atan2, cosh, sinh, tanh, pow, frexp и ldexp. Вы можете заменить math.pow(x,y) на x^y; вы можете заменить math.atan2 на math.atan, который теперь принимает один или два параметра; вы можете заменить math.ldexp(x,exp) на x * 2.0^exp. Для других операций вы можете также использовать внешнюю библиотеку или реализовать их в Lua.
как за AddLabel() отметку цены
 
Цитата
Daniil Pozdnyakov написал:
Добрый день,

К сожалению, на данный момент функции добавления "Отметки цены" при помощи QLUA нет. Можем зарегистрировать пожелание на добавление данного функционала, регистрируем ?
Да, зарегистрируйте, пожалуйста.
Ошибка запуска скомпилированного файла
 
Цитата
nikolz написал:
 Роботы продаваемые в интернете  за смешные деньги - это полный развод буратин т.е. лохотрон.
--------------------------------------
Все роботы, которые Вы  можете купить - это просто одноразовый  лотерейный билет,
но перебором коэффициентов можно занять пустую голову работой по угадыванию чисел.  
----------------------------
Поэтому покупайте билеты   Спортлото -   меньше проиграете.  
Это вы мне написали?
Ошибка запуска скомпилированного файла
 
Цитата
Nikolay написал: Но покупать алгоритм - то еще занятие.
Так в основном продают программы с возможностью менять параметры, которые пользователь и должен подобрать таким образом, чтобы выйти в плюс. Пользователь подобрал - молодец, нет - пусть подбирает дальше.
Ошибка запуска скомпилированного файла
 
Можно без скачиваний обойтись: запустите данный скрипт и появится скомпилированный файл
Код
local FILE = "MyScript"                                        -- название компилируемого файла без расширения
local PATH = "C:\\Quik-Robot\\"                                -- путь компилируемого файла
local STRIP = false                                            -- если STRIP = true, то бинарное представление может не включать всю отладочную информацию о функции, для уменьшения размера

local f = io.open (PATH .. FILE .. ".luac", "wb")
f:write (string.dump (loadfile (PATH .. FILE .. ".lua"), STRIP))
f:close ()
[ Закрыто] Ищу спеца по ЛуаКвик, для долгосрочного сотрудничества по созданию робота и его доработкам или для консультаций и наставничества.
 
Цитата
Anton написал:
2) onMainInit как раз чтобы вынести бизнес-код из мейна, заодно весь мусор, созданный в процессе инициализации, попадет к коллектору сразу после нее, а не после того, как мейн закончится (т.е. никогда).
От себя добавлю: у меня очень часто в подобных конструкциях мусор к коллектору не попадал, поэтому в конце подобных функций инициализации ставил collectgarbage ().
Страницы: Пред. 1 2 3 4 След.
Наверх