А вообще может кто знает, есть ли где на других серверах адекватный демо-Quik, в котором можно торговать акциями на ММВБ и при этом есть информация по большому количеству свечей сразу?
Deserf пишет: Простите, а как мне получать эти данные?
Добрый день.
Если доступ к FORTS есть, то просто строите график и данные будут, при условии, что включены настройки "Данные, отражающие текущее состояние и всю историю изменений» и «Получать пропущенные данные в пункте меню Настройки/Основные/Программа/Сохранение данных/
Также добавим по поводу фондового рынка. Добавлять историю по данному рынку мы к сожалению, не будем. Таковы ограничения тестового доступа. Вы можете выводить графики в сторонние системы технического анализа.
Я так понимаю, при регистрации тестового доступа надо включить галочку "Срочный рынок"?
Добрый день.
Да, либо сообщите Ваш логин, мы предоставим Вам права на рынок FORTS.
Мой логин 93017. Не отходя от кассы вопрос, этот рынок поддерживает подачу "рыночных" заявок?
Deserf пишет: Простите, а как мне получать эти данные?
Добрый день.
Если доступ к FORTS есть, то просто строите график и данные будут, при условии, что включены настройки "Данные, отражающие текущее состояние и всю историю изменений» и «Получать пропущенные данные в пункте меню Настройки/Основные/Программа/Сохранение данных/
Также добавим по поводу фондового рынка. Добавлять историю по данному рынку мы к сожалению, не будем. Таковы ограничения тестового доступа. Вы можете выводить графики в сторонние системы технического анализа.
Я так понимаю, при регистрации тестового доступа надо включить галочку "Срочный рынок"?
Очень хотелось бы, чтобы графики отображали свечи не только за "сегодня", но еще и за "вчера". Конечно, сейчас количество информации полностью удовлетворяет тех, кто хочет просто познакомиться с платформой. Но программистам хотелось бы иметь побольше данных
Не убиваются при выходе из функции только переменные, объявленные в ней как глобальные (то есть просто, без слова local), такие переменные сохраняют свои значения даже после перехода к другой функции, и она может использовать их значения. Но объявление глобальных переменных из функции является дурным тоном. Куда практичнее объявить все "глобальные" переменные в одном месте вне функций, со словом local, так они будут видны только компонентам именно этого скрипта
Я хотел спросить, а имеется ли в Quik возможность сохранить, скажем, минутные графики колебаний цен за день с тем, чтобы воспроизводить их потом без подключения к интернету?
В tri файле который получается сохранением из Кармана транзакций используются другие параметры. в частности режим исполнения заявки кодируется в параметре "Флаги" Поэтому там нет таких параметров.
Deserf пишет: Подытожим: работающего варианта стопов, выставляющих заявки по "рыночной" цене не существует. Если нетрудно, осуществите пожалуйста в будущем
Подытожим, Вы так и не прочитали документацию. Укажите MARKET_STOP_LIMIT или MARKET_TAKE_PROFIT Уберите ["TYPE"] = "M"
Укажите MARKET_STOP_LIMIT или MARKET_TAKE_PROFIT - это где указывать, какому аттрибуту? А по ["TYPE"] - он роли не играет, ошибка выдается и с ним, и без него
Deserf пишет: Поменял на TAKE_PROFIT_AND_STOP_LIMIT_ORDER - все то же. Какие поля для нее обязательны, и как высчитывают их значения?
Рекомендуем к прочтению: -Раздел 6. Совместная работа с другими приложениями --Импорт транзакций ---Формат .tri-файла с параметрами транзакций ----Примеры строк, которые могут содержаться в файле
Да я уже это делал, рассматривал сохраненный .tri-файл от работавшей стоп-заявки, именно его я и вбил, но он не пашет, а пишет... сами знаете что... Неужели никто не ставил такие в lua-скрипте? Складывается ощущение, что я первооткрыватель...
Понимаете в чем дело, я не хочу использовать обычную стоп-заявку с фиксированным значением цены, из-за того, что при большом количестве лотов некоторые из них скорее всего останутся висеть незакрытыми, а цена убежит дальше. Хотелось бы иметь такую стоп-заявку, чтобы она раскидывалась, как в "рыночных" заявках. В противном случае придется применять "нахальное минирование" - то есть выставлять рыночную заявку заявку для преждевременного закрытия убыточных позиций. Но если программа не будет работать, то позиции ведь так и останутся убыточными
Deserf пишет: Ну так что? Мне кажется рыночные стоп-заявки не работают
Добрый день.
В обычных стоп заявка нет признака рыночной, есть только в тейк профит и стоп лимит (STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER)
А можно поподробней (я необыкновенно тупой), что это такое и как работает.Я так понимаю, что "STOP_ORDER_KIND" - это один из аттрибутов новой стоп-заявки и пишется в квадратных скобках, а "TAKE_PROFIT_AND_STOP_LIMIT_ORDER" - это значение аттрибута? И какие значения цен устанавливаются? И вообще, как это работает?
Добрый день.
Все верно. Назначение тейк профита и стоп лимита направлено на фиксацию максимальной прибыли с одновременным ограничением величины убытков, но в вашем случае на это обращать внимание не стоит. Дело в том, что Вам в заявке не нужно будет указывать тейк профит, а просто нужно будет указать стоп, и таким образом вы подадите обычную стоп заявку, а не тейк профит и стоп лимит.
Из терминала это будет выглядеть так:
В функции также нужно будет указать все параметры, тейк профит, отступ, защитный спрэд необходимо тоже указать, но нулевыми. Пример самой функции можно получить через карман транзакции (Торговля/Карман Транзакций/Создать карман). Кладете в карман нужную транзакцию, сохраняете в tri файл и получаете ее исходные данные.
Спасибо большое, так и сделал. Осталось только соотнести это с англоязычными аттрибутами, применяемыми в QLua, и все)))
Данная конструкция будет работать на срочном рынке ?
Прости, но она походу вообще не работает. У меня один раз выставилась всего. Я как мыслил, цена подходит к стоп-прайс и активируется рыночная заявка (тип = М, цена = "0"); Но это не работает, компьютер игнорирует значение типа. Может выставиться только заявка, в которой точно указана цена. У меня выставилась та, которая изображена, но только потому, что значение ["PRICE"] у нее было меньше значения ["STOPPRICE"] (ноль ведь меньше расчетной цены), однако, если бы она сработала, комп наверно написал бы что-то типа "невозможно выставить заявку по слишком низкой цене" т. е по нулевой цене она бы выставилась
Deserf пишет: Ну так что? Мне кажется рыночные стоп-заявки не работают
Добрый день.
В обычных стоп заявка нет признака рыночной, есть только в тейк профит и стоп лимит (STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER)
А можно поподробней (я необыкновенно тупой), что это такое и как работает.Я так понимаю, что "STOP_ORDER_KIND" - это один из аттрибутов новой стоп-заявки и пишется в квадратных скобках, а "TAKE_PROFIT_AND_STOP_LIMIT_ORDER" - это значение аттрибута? И какие значения цен устанавливаются? И вообще, как это работает?
Deserf пишет: Насколько я понимаю, платформа Quik в скрипте QLua не в состоянии отследить ВСЕ выполненные сделки? Если сделка одна по одной цене, тогда еще хорошо, но по двум-трем ценам, то скрипт опускает хобот, поймав только одну цену, ее лоты и цену
Нет, скрипт поднимает заднюю ногу и писает на своего создателя.
Соответственно, если планируете работать только с одним графиком, не замарачиваясь в его названии (у меня как то раз так было, что настройки не сохранялись после закрытия сессии), то просто прописывайте:
N = getNumCandles("") Количество свечей выведется по любому открытому графику. Жаль, что нет возможности программно назначить идентификатор нужному графику, допустим, по названию непосредственно графика, которое можно получить по функции getCandlesByIndex()
Насколько я понимаю, платформа Quik в скрипте QLua не в состоянии отследить ВСЕ выполненные сделки? Если сделка одна по одной цене, тогда еще хорошо, но по двум-трем ценам, то скрипт опускает хобот, поймав только одну цену, ее лоты и цену
Еще вопрос по той же теме, а стоп-заявки рыночные можно выставлять? То есть, чтобы у нее конкретно была указана цена срабатывания, а цена исполнения уже была нулевой при типе стоп заявки "М"?
Deserf пишет: Еще раз пишу: режим "а+" не подойдет: это cfg-файл, мне нужно заменять определенные значения в строго определенном месте, а не дописывать, а потом объяснять при следующем цикле оператором что же им считывать.
Вообще-то режим "a+" как раз предназначен, чтобы заменять "определенные значения в строго определенном месте":
Deserf пишет: Еще раз пишу: режим "а+" не подойдет: это cfg-файл, мне нужно заменять определенные значения в строго определенном месте, а не дописывать, а потом объяснять при следующем цикле оператором что же им считывать.
Вообще-то режим "a+" как раз предназначен, чтобы заменять "определенные значения в строго определенном месте":
Deserf пишет: Прочитайте текст скрипта, который выше - я его ВООБЩЕ НИКУДА НЕ СМЕЩАЛ, а он все равно тупит
Читаю.
Код
local file = io.open(ImyaCFGFaila, "w+") --Открыли файл и стерли в нем все что есть, так как режим w+
file:seek("set", 15) --смефаем курсор на 15 символов в пустоту,, так как файл пустой.
file:write("22") --пишем строку "22" после 15 пустых символов
file:flush() --обновляем файл
file:close() -- закрываем
Еще читаю:
Код
local file = io.open(ImyaCFGFaila, "w+") --Открыли файл и стерли в нем все что есть, так как режим w+
file:flush() --обновляем файл
file:close() -- закрываем
Deserf пишет: Прочитайте текст скрипта, который выше - я его ВООБЩЕ НИКУДА НЕ СМЕЩАЛ, а он все равно тупит
Читаю.
Код
local file = io.open(ImyaCFGFaila, "w+") --Открыли файл и стерли в нем все что есть, так как режим w+
file:seek("set", 15) --смефаем курсор на 15 символов в пустоту,, так как файл пустой.
file:write("22") --пишем строку "22" после 15 пустых символов
file:flush() --обновляем файл
file:close() -- закрываем
Еще читаю:
Код
local file = io.open(ImyaCFGFaila, "w+") --Открыли файл и стерли в нем все что есть, так как режим w+
file:flush() --обновляем файл
file:close() -- закрываем
function main() local ImyaCFGFaila=getScriptPath().."\\" .. "1.txt" local file = io.open(ImyaCFGFaila, "w") file:seek("set", 0) file:write(tostring("11")) file:seek("set", 6) file:write(tostring("....... его рот")) file:flush() file:close() end
Исходная строка в файле "1.txt" такая: "11111111111111111111111111111111111111111111111111111111111111111" (без всяких переносов и без кавычек) После работы скрипта: строка в файле "1.txt" такая: "11<NUL><NUL><NUL><NUL>....... его рот", где <NUL> - то самое. Как видите никакого смещения в пустоту.
Deserf пишет: Можно и не смещать никуда курсор - те же яйца. И смещаю не в пустоту а там, где есть символы, если в пустоту сместить он так то ошибку викидывает сразу
Простите но Вы именно смещаете в пустоту. Так как режим w+ перезаписывает файл. То есть стирает все и пишет по новой.
Прочитайте текст скрипта, который выше - я его ВООБЩЕ НИКУДА НЕ СМЕЩАЛ, а он все равно тупит
Еще раз пишу: режим "а+" не подойдет: это cfg-файл, мне нужно заменять определенные значения в строго определенном месте, а не дописывать, а потом объяснять при следующем цикле оператором что же им считывать. По скрипту скажу - это тоже не работает
Можно и не смещать никуда курсор - те же яйца. И смещаю не в пустоту а там, где есть символы, если в пустоту сместить он так то ошибку викидывает сразу
Еще одно наблюдение: необратимые изменения наступают в любом случае, когда файл открывается в режимах "w", даже если в ходе него не происходит ничего: ни записи информации, ни смещения курсора. Так в таком коде получаем из полного лог-файла тупорыло пустой:
local file = io.open(ImyaCFGFaila, "w+") file:flush() file:close()
Скажите, что это за фигня, а то у меня уже башка кружится. Таким образом, ведь дело не в моем кривом коде, и не в ошибочном хранении информации в буфере обмена (и в 32-битности), дело именно в режимах "w" и "w+", режим "а" работает корректно, но мне то надо именно заменять, а не просто приписывать информацию.