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

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

Страницы: 1
не закрывает вовремя позицию!
 
вроде как сделал такой код, теперь нужно интегрировать его в мой код ^_^
Код
local is_run = true -- переменная, контролирующая выполнение основного цикла

function main()
    while is_run do
        local current_time = os.date("*t") -- получаем текущее время как таблицу

        -- проверка, превысили ли секунды значение 58
        if current_time.sec > 58 then
            message("Секунды превысили значение 58!")
        end

        sleep(1000) -- пауза в 1 секунду
    end
end

function OnStop()
    is_run = false
end
не закрывает вовремя позицию!
 
Цитата
nikolz написал:
1) колбек onРaram().2) таймер и синхронизацию ПК от сервера времени.
если не трудно, приведите пожалуйста код пример, спасибо
не закрывает вовремя позицию!
 
Цитата
Владимир написал:
Что за бред? Закрыть позицию в любой удобный для меня момент можно ТОЛЬКО по рыночной цене. В любом другом случае нужно найти того идиота, который станет "соучастником" сделки, и вовсе не факт, что такой идиот найдётся. И при чём тут вообще свечи?
не, типо мне норм по рыночной цене, главное закрыться в нужное для меня время, а то сейчас приходится ждать долбаного тика...
не закрывает вовремя позицию!
 
Цитата
Nikolay написал:
Судя по всему Вы в алгоритме используете индекс, как факт прихода нового бара. А он увеличивается не по времени, а при совершении первой сделки в новом временном интервале.
Поэтому новый бар может появится когда угодно, может даже не прийти вовсе, если сделок не будет.

Закрытие же бара - это цена последней сделки в временном интервале бара из таблицы обезличенных сделок. Можете отслеживать время сделки из ТОС, можете просто, при факте наступления нового интервала, принимать, что бар закрылся.
Т.е. надо переходить на контроль времени, а не появления нового индекса бара.
о великий, прошу озарите меня как сие вообще реализовывается?
не закрывает вовремя позицию!
 
Здравствуйте, вопрос в следующем, если торговать руками, то я могу закрыть позицию в любой удобный для меня момент, т.е. даже тогда когда тиков нет.
а вот lua почему то так не может, бывает мне нужно закрыться на close свечи, и тупо с 57 до 01 секунды вообще нет тиков, соответственно закрытие происходит на другой свече, подскажите как закрываться тогда когда мне нужно и не быть зависимым от тиков?
кривой вывод index
 
DEL
долбаный язык кривой, даже не показал что в одной переменной в начале ds: была одна не та буква....
кривой вывод index
 
Здравствуйте, запускаю скрипт фьюч сбер а он мне выводи Index: 12, O(index-1): 24400.0     ...... wtf?
поигрался с настройками приёма данных, пробовал локально и с сервера, перезапускал каждый раз квик, 0 реакций...
как пофиксить?
m0 парализация quik
 
и ещё вопрос, выдаёт ttempt to concatenate a boolean value (local 'res'), не могу найти решение проблемы.
Код
function main()
  local res = Subscribe_Level_II_Quotes("QJSIM", "SBER")
  if res ~= false then
    message("Ошибка при подписке на котировки: " .. res)
  end
end
m0 парализация quik
 
Цитата
Anzhelika Belokur написал:
Sergey, добрый день.

При работе с тиковыми графиками рекомендуем выполнить следующие настройки:  
В настройках графика отключить автомасштаб («Редактирование настроек графика» - галочки «Авто» в соответствующих областях диаграммы).
По возможности ограничить вывод на графике последних свечей («Редактирование настроек графика» - поле «Последние ... интервалов»).
Если это не помогает, рекомендации следующие:  
Выполнить рекомендации по оптимизации трафика, описанные здесь:  https://forum.quik.ru/forum1/topic1539/
Открыть пункт меню «Система» / «Настройки» / «Основные настройки» / «Сохранение данных» и поставить точку «Только данные, отражающие текущее состояние». При этом клиентским местом QUIK будут сохраняться только последние значения параметров.
либо не помогло либо я плохо настроил, у вас случайно нет файла настроек при которых сбер m0 работал бы без зависаний всего quik?
m0 парализация quik
 
версия quik 10.2.1.12
m0 парализация quik
 
Здравствуйте, при переключении активного графика сбера на m0 для просмотра тиков, остальная часть кроме графика перестаёт банально работать так как он сильно загружает сам quik, даже если правой кнопкой по графику нажать всё равно грузится меню мега долго, при всём этом цп загрузка 60%, оперативки ещё туча свободной, подскажите что сделать что бы работало норм?, открытый второй график m1 перестаёт вообще обновляться.
Как настроить отметки покупки-продажи
 
Цитата
Andrey Bezrukov написал:
Можем зарегистрировать пожелание на реализацию функционала, который бы позволил накапливать в рабочем месте историю сделок за предыдущие сессии и отображать их на исторических графиках. Регистрируем?
да пожалуйста
Как настроить отметки покупки-продажи
 
Здравствуйте, после покупки-продажи, на графике появляются очень удобные отметки где купил и по сколько купил и тд.
Вопрос, как и где настроить что бы данные отметки оставались на графике длительное время? т.е. когда конец сесии и в след день я захожу в квик, то отметки исчезают, а я бы хотел что бы они остались.(хотя бы на неделю)
Как расшифровывается формула?
 
Цитата
Anton написал:
Это рекуррентная формула, т.е. каждое следующее значение рассчитывается на основе предыдущего. Самое первое значение там просто как в SMA, т.е. сумма первых пяти цен (первой - пятой), деленная на 5. Второе - сумма вторых пяти цен (второй - шестой) минус предыдущее значение SMMA плюс последняя в группе (шестая) цена, все деленное на 5. Третье - сумма третьих пяти цен (третьей - шестой) минус предыдущее... и т.д.
я дико извиняюсь, можете расписать как Дыбилу?
как sma вычисляется я знаю, суммируем все числа и делим на период.
дальнейшие действия я не понял, что за шестое число? у меня всего их 5, или 6 это сумма предыдущих?
Как расшифровывается формула?
 
Здравствуйте, хочу переписать формулу ссылка на формулу SMMA
честно, пытался сам разобрать, но вошел в тупик при последовательности действий
SMMAi = (sum(Pi) - SMMAi-1 + Pi) / n,
вот числа,  должно выйти 123 879 (взял с )  Период 5
{
123900   10:00
123960   10:01
123600   10:02
123730   10:03
123680   10:04
}
я бы очень хотел понять последовательность действий, по формуле пишут sum(Pi) / n
т.е. 123680  / 5?  - 123730 + 123680 / 5  ? или как?
Объясните пожалуйста
lua 5.3 не открывает заявки...
 
вот функция
function priceForMarketOrder( vol )
if ( vol > 0 ) then
return tostring( tonumber( getParam( "SPBFUT" , "RIM0" , "PRICEMAX" ) ) )
else
return tostring( tonumber( getParam( "SPBFUT" , "RIM0" , "PRICEMIN" ) ) )
end
end
lua 5.3 не открывает заявки...
 
Здравствуйте, перешли знач на Lua 5.3 и данный код перестал фурычить, как исправить то?
t = {
  ["CLASSCODE"] = "SPBFUT",
  ["SECCODE"] = "RIM0",
  ["ACTION"] = "NEW_ORDER",
  ["ACCOUNT"] = "счёт" ,
  ["TYPE"] = "M",
  ["TRANS_ID"] = "25"
}
t["QUANTITY"] = "1"
t["OPERATION"] = "B"
if vol < 0 then
t["OPERATION"] = "S"
end

t["PRICE"] = priceForMarketOrder( vol )

local transResult = sendTransaction( t )

-- Проверка на ошибку
if ( transResult and transResult ~= "" ) then

return
end
Lua 5.3.5 connect Dll (Crash)
 
подскажите только, почему у меня Память которую Lua жрёт, постоянно увеличивается? там сейчас только вызов Dll и Return
Lua 5.3.5 connect Dll (Crash)
 
эмм... пересобрал ещё раз либу, и переименовал свои функции из static int в int и заработало -_-..... ну ок
Lua 5.3.5 connect Dll (Crash)
 
Здравствуйте, в общем был на Lua 5.1 всё ок, работало, появилась нужда перейти на Quik 8.5.2.11  lua53.dll (lua 5.3)
Ну и в общем, при запуске Dll, она тут же: крашит Quik, загружает ЦП 100%, просто выдаёт ошибку. (Critical error ACCESS_VIOLATION in script)
Lib файл был собран 5.3.0
Код
static int forLua_TestFunc(lua_State* L)// Возвращает заданный текст
{


   //закоментил что бы проверить работу без него MainЕ();  // моя функция

   if (check == 1)
   {
      lua_pushstring(L, "1");

   }
   if (check == 2)
   {
      lua_pushstring(L, "2");
   }
   if (check == 0)
   {
      lua_pushstring(L, "0");
   }

      //lua_pushstring(L, "0");

    return(1);
}


//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================//
static struct luaL_Reg ls_lib[] = {
   { "TestFunc", forLua_TestFunc },
   { NULL, NULL }
};

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_HydraConnector(lua_State * L) {
   lua_newtable(L);
   luaL_setfuncs(L, ls_lib, 0);
   lua_setglobal(L, "MyConnector");
    return 0;
}
Игровые сервера которые работают в выходные
 
Здравствуйте, подскажите где скачать Quik с игровыми серверами что бы можно было потестировать различные вещи в выходные?
Получить только текущие данные
 
Цитата
Николай Камынин написал:
если не сложно то выложите историю
мне как раз надо большую
Спасибо, в след открытие рынка попробую, вот что есть, dropmefiles.com
Получить только текущие данные
 
Отредачил код, if(tostring(t.day) >= "07") then  сделал if(tostring(t.day) >= "7") then
но сути не меняет, 200 с чем то сообщений всё равно приходят, т.е. все сегодняшние данные.
Получить только текущие данные
 
  • Здравствуйте подскажите пожалуйста., использую простой тестовый скрипт, как сделать что бы я получал только текущую информацию после запуска скрипта?

    суть, если я пишу в Quik Lua , то эта психованная, загружает мне данные все которые только может, т.е. если у неё есть в истории 350000 записей свечей, то она при запуске этого скрипта мне *иганёт 350000 msg Ухты....
    Код
    function eventCb( index )
    
    
    message("Ухты")
    
    end
    
    function main()
    
    local errorStr
    ds , errorStr =CreateDataSource(p_classcode, p_seccode, p_timeframe )
    if ( ds == nil ) then
    
    end
    
    ds:SetUpdateCallback(eventCb)
    
    — Загрузка информации о позиции
    
    
    — Цикл таймера
    while isRun do
    sleep( 10 )
    end
    
    end


  • я думаю что где то в quik нужно что то выключить, галочка стоит,  Система -> Настройки -> Программа -> Сохранение данных -> Только данные, отражающие текущее состояние.
вот что странно пытался даже обойти так , О_О всё равно дала мне 2500 О_О
Код
local t = ds:T(index)
if(tostring(t.month) == "5") then

if(tostring(t.day) >= "07") then
message("Ухты")
end
end
do return end

Ema lua
 
ну вот пример в Wealth-Lab закинул данные и поставил ema close 3 данные ema свечи я получил сразу же через 3 свечи
Ema lua
 
Цитата
Imersio Arrigo написал:
Цитата
Sergey написал:
хоть они и разные и во всех их не могу одного понять! EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))EM=Price(t)×k+EMA(y×(−k)откуда мне знать чему будет равен EMA (t-1) и
Эти алгоритмы считаются итеративно. E(t-1) - это результат предыдущего расчета, а не предыдущий элемент например массива.
На первой (на самом деле нулевой :) ) итерации E(t-1) можно принять равным нулю либо цене расчета. По сути оба варианта равноправны, т.к. пользоваться значением индикатора имеет смысл после того только после (period+1) отсчета.

т.е. EMA (0) = 0 + 2 *(P(0) – 0) или EMA (0) = P(0) + 2 *(P(0) – P(0)).
следующая EMA (1) = EMA(0) + 2 *(P(1) – EMA (0))
каждая последующая EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

Таким образом, чтобы исключить влияние переходного процесса БИХ-фильтра, значения можно считать корректными, с момента когда через фильтр прошло число отсчетов не менее длины периода расчета фильтра.

Чисто графически имеет смысл начинать с Р(0), так будет лучше выглядеть на графике, хотя сути это не меняет.

Николай подсказывает абсолютно верно: -хорошо бы хотя бы краем глаза взглянуть на теорию :)
Imersio Arrigo,
ну вот у меня есть EMA из 3 свечей и он равен 66731; ниже те самые 3 свечи.
int candle[3];
candle[0] = 66730;
candle[1] = 66719;
candle[2] = 66744;
опишите алгоритм пожалуйста.
Ema lua
 
Здравствуйте, подскажите пожалуйста код функции EMA, или подробный алгоритм, в нэте туча подобных алгоритмов
EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

EM=Price(t)×k+EMA(y×(−k)

хоть они и разные и во всех их не могу одного понять!
EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

EM=Price(t)×k+EMA(y×(−k)

откуда мне знать чему будет равен EMA (t-1) и тд, если я его только хочу вычислить, просто для меня это звучит так, подходит ко мне человек с потерей памяти и спрашивает меня, сколько ему лет, а я ему говорю, ЛЕТ=(Лет-1) + 1 О_о так он же не знает сколько ему было лет, и сколько есть.
Как выставить TAKE_PROFIT_AND_STOP_LIMIT_ORDER на моих условиях?
 
Цитата
Stanislav Tvorogov написал:
Добрый день,

Для этого необходимо установить отступ от цены последней сделки (OFFSET), этот параметр указывает, насколько цена последней сделки должна стать ниже локального максимума цены, чтобы тэйк-профит сработал.
Направление условной стоп заявки при этом должно быть "Продажа" (если лимитная выставлена на покупку).
Т.е. если я поставлю t["OFFSET"] = tostring(5)
то мною описанной ситуации не будет?
Как выставить TAKE_PROFIT_AND_STOP_LIMIT_ORDER на моих условиях?
 
Здравствуйте, в общем столкнулся с проблемой, а звучит так "Long по 16000", как выставить take профит, по цене которой я хочу, или выше "take 16300", но при этом, что бы сквизы меня не убивали, сейчас вот с таким кодом, если цена 16250, затем за секунду сквизанёт на 16301, и вернётся на 16250, то меня закроет по take по цене 16250, А я хочу по моей цене или выше)))

Код
   t = {
      ["CLASSCODE"]    = p_classcode,
      ["SECCODE"]       = p_seccode,
      ["ACTION"]      = "NEW_STOP_ORDER",
      ["ACCOUNT"]      = "AKK" ,
      ["TRANS_ID"]      = tostring( p_robot_id )
   }
   

   t["OPERATION"] = "S"

   t["MARKET_TAKE_PROFIT"] = "YES"
t["MARKET_STOP_LIMIT"] = "YES"

   t["PRICE"] = "0" -- Цена, по которой выставится заявка при срабатывании Стоп-Лосса (для рыночной заявки по акциям должна быть 0) 
t["STOPPRICE"] = tostring(openprice + 300) -- Цена Тэйк-Профита 
t["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER" -- Тип стоп-заявки 
t["EXPIRY_DATE"] = "GTC" 
t["IS_ACTIVE_IN_TIME"] = "NO"
t["STOPPRICE2"] = tostring(openprice - 150) -- Цена Стоп-Лосса 
t["OFFSET"] = tostring(0)
t["QUANTITY"] = "1"
t["OFFSET_UNITS"] = "PRICE_UNITS"
t["SPREAD"] = tostring(0)
t["SPREAD_UNITS"] = "PRICE_UNITS"
   local transResult = sendTransaction( t )
   
   -- Проверка на ошибку
   if ( transResult and transResult ~= "" ) then
      
      return
   end   

тупят стопы?
 
Здравствуйте, в общем решил протестить одну стратегию, сделал код, всё ок, покупает, выставляет TAKE_PROFIT_AND_STOP_LIMIT_ORDER
НО вот в чём трабл, по окончанию дня, я заметил что, что то стопы не так работают, начал приглядываться, и действительно они не срабатывают ПРЯМ вот часто, и я собственно хотел узнать, это дело в том что я на демо(finam) тестирую? или всё же тупят стопы-код?
получить текущую эффективную цену позиции
 
Цитата
Sergey Gorokhov написал:
Цитата
Sergey написал:
так что это не то что нужно =(( мне нужна текущая цена текущей позиции.

Что Вы понимаете под "текущая цена текущей позиции"?
биржа транслирует то что Вам нужно, если да в каком параметре?
Следует понимать что на срочном рынке (в отличии от фондового и валютного рынков), позиции ведет и транслирует биржа, а не QUIK.
Следовательно если биржа не транслирует нужную Вам цифру то и в QUIK ее нет.
Окей тогда я проще опишу)
фьюч, я допустим, покупаю по 105, затем через минуту я покупаю по 107, средняя цена у меня будет 106, а перед этим я делал ещё 100 сделок, так вот в чём вопрос, как мне получить цифру 106, моей текущей позиции.
смысл в том, что я покупаю по маркету, и сразу же выставляю стоп, ну а стоп мне нужно выставить ОТ цены моей позиции +- прибыль - убыток
получить текущую эффективную цену позиции
 
Цитата
Sergey Gorokhov написал:
Sergey,
Этот параметр считает и транслирует биржа, можете поинтересоваться у нее какая формула расчета.
В биржевом потоке это параметр waprice из таблицы position потока FORTS_POS_REPL
И снова я к вам вернулся)) в общем протестил что да как, и вот что выходит
перед покупкой с прошлой сделки в "эффект.цена позиции" осталась цена 65212 (позиций нет)
short по маркету. в "Таблица заявок" цена 65103 а  в "эффект.цена позиции" цена стала 65209(это средняя цена всех предыдущих сделок как я понял), такой цены в стакане в Bid Ask нет.
так что это не то что нужно =(( мне нужна текущая цена текущей позиции.
получить текущую эффективную цену позиции
 
Цитата
Sergey Gorokhov написал:
Пример:
T=getFuturesHolding("SPBFUT","SPBFUT0001", "SiM9", 0)
message(tostring(T.avrposnprice))
Благодарю вас! так заработало.
только я до сих пор не понимаю, почему в "Таблица моих сделок" цена одна купли, а по эффект.цена позиции другая.
я уже не понимаю на какую мне смотреть)))
получить текущую эффективную цену позиции
 
Цитата
Egor Zaytsev написал:
avrposnprice
простите вот тут не понял, можете пожалуйста целиком написать как будет?
получить текущую эффективную цену позиции
 
Цитата
Egor Zaytsev написал:
Цитата
Sergey написал:
 
Цитата
Egor Zaytsev  написал:
 
Цитата
 Sergey   написал:
Здравствуйте, подскажите пожалуйста, как через Lua 100% получить Эффективную цену позиции? (фьюч)
  Добрый день.

Для получения параметра Эффективная цена позиции необходимо использовать функцию
getFuturesHolding и параметр avrposnpric

Формат вызова:    TABLE getFuturesHolding(STRING firmid, STRING trdaccid, STRING  sec_code, NUMBER type)
 Так на всякий случай спрошу, если я куплю фьюч по рынку, затем через 2 минуты, ещё раз докуплю фьюч, я увижу среднюю цену позиции в эффект.цена.поз? или в другом месте нужно смотреть?
Да, верно, это и есть Средневзвешенная цена открытия.
погуглил что да как вродь всё правильно написал, но пишет nil
позиция открыта, в лонг.
tas=TABLE getFuturesHolding("SPBFUT","70180ZB", "SiM9",4)
message (tostring(tas))
получить текущую эффективную цену позиции
 
Цитата
Egor Zaytsev написал:
Цитата
Sergey написал:
Здравствуйте, подскажите пожалуйста, как через Lua 100% получить Эффективную цену позиции? (фьюч)
Добрый день.

Для получения параметра Эффективная цена позиции необходимо использовать функцию
getFuturesHolding и параметр avrposnpric

Формат вызова:    TABLE getFuturesHolding(STRING firmid, STRING trdaccid, STRING  sec_code, NUMBER type)
Так на всякий случай спрошу, если я куплю фьюч по рынку, затем через 2 минуты, ещё раз докуплю фьюч, я увижу среднюю цену позиции в эффект.цена.поз? или в другом месте нужно смотреть?
получить текущую эффективную цену позиции
 
Здравствуйте, подскажите пожалуйста, как через Lua 100% получить Эффективную цену позиции? (фьюч)
Остановка и запуск Lua через Lua
 
Понял Спасибо большое, уже решил проблему и внедрил код в 1 файл, но всё же было интересно можно так или нет =)
Остановка и запуск Lua через Lua
 
ну вот в разделе quik -> Доступные Скрипты -> Загруженные скрипты
Есть 2 lua файла
1.lua основной запускается и работает, нужно через него запустить 2.lua.
Остановка и запуск Lua через Lua
 
Здравствуйте, подскажите как через 1.lua, запустить в quik 2.lua(они оба добавлены)
и как остановить?
Кто сможет поправить скрипт?, не за бесплатно
 
Здравствуйте, кто может подправить скрипт Lua, за выполнение работы 1к руб, скрипт работает всё ок, но в каких то моментах тупит адски...
Активная Тэйк-профит и стоп-лимит заявка
 
И ещё вопросик, почему когда стоит "тэйк-профит, если цена >= 64338" а меня в итоге закрывает по 64325?
как это устранить? я хочу что б закрывало больше или равно по цене.
Активная Тэйк-профит и стоп-лимит заявка
 
В общем потыкал в гугле) и сделал пока что такую вот рабочую версию, если можно сделать более практичной, буду благодарен за помощь.
Код
local t = ds:T(index)

  for i = getNumberOf("stop_orders")-1,0,-1 do
      T = getItem("stop_orders",i);

    message(bit.test(T.flags,0))     
       if(bit.test(T.flags,0) == true) then 
       message('DA')
       end

end
Активная Тэйк-профит и стоп-лимит заявка
 
Цитата
Sergey Gorokhov написал:

Пример для проверки стоп заявки:
if bit.test(zalyavka.flags, 0) then
message ("заявка активная")
end
Я прошу прощения, я недавно с lua работаю, стоп заявкой считается "Тэйк-профит и стоп-лимит"?
и что нужно мне знать для работы данной проверки? может быть идентификатор заявки какой то или ещё что то?
if bit.test(zalyavka.flags, 0) then
message ("заявка активная")
end
Активная Тэйк-профит и стоп-лимит заявка
 
Здравствуйте, кратко опишу ситуацию, покупаю фьюч, далее выставляю через lua "Тэйк-профит и стоп-лимит", вопрос вот в чём, как мне через lua проверить исполнена заявка или активная?
Как сделать что бы скрипт её видел? в виде переменной, типо
if(zalyavka == true) then
message ("заявка активная)
end
Большое спасибо
Страницы: 1
Наверх