Ну что, похвально и такой робот-игрушка имеет место быть. --------------------------- Почему игрушка? Потому, что он не может самостоятельно торговать. -------------------------------------- Поэтому повторю вновь - робота на опционах написать сложно любителю игры на бирже. --------------------------------------- Вот пример робота, который не игрушка http://lowrisk.ru/option_blog/robot_panda-v-dejstvii/ -----------------------------------
IndiQUIX является также и конструктором торговых роботов, так как используя встроенный математический и логический аппарат Excel можно создавать любые торговые алгоритмы и запускать их в торговлю через Quik. Программа может работать вместе с торговым роботом SuperADX и терминалом Quik или с другим роботом, читающим текстовые файлы.
Можно купить там же робота, который считывает значения 1, -1, 0 из ячеек Excel и открывает позиции в квик. Опций там много, управление капиталом, автостоп, частичные выходы из позиций по тейк-профиту, оповещения и др. В общем, кому надо, тот поймет. Другие пусть пилят велосипеды...
В том то и дело, что Вы предлагаете купить одно потом из этого что-то попадет в другое потом купить еще одно которое из файлов читает сигналы потом освоить первое второе и третье и еще написать на excel (сомневаюсь что бмногие умеют программировать в ехсель. Потом все это запустить получить ошибку и послать все это дальше. Чтобы не быть голословным, напишите последовательность действий для приведенного выше примера и покажите картинку робота. Примеры роботов на моей платформе можно посмотреть на моем сайте. www.kamynin.ru При этом, ничего кроме qUIK его индикаторов и платформы на луа я не использую, а пример программы я написал выше.
знаю QLUA и MQL5 Особых тонкостей в QLUA нет. скорее есть особенности LUA и QUIK (относительно MT5) Вы быстро сами их пройдете, так как разрабатывали любой сложности задачи на MQL5 А вот делать робота на опционы, если это не робот-игрушка, - это сложная задача За "так" никто не сделает.
можно , написав скрипт, который выполнит действия по запуску квика, открытию таблицы со скриптами луа и запуску скрипта. для этого можно использовать AvtoIt (когда то так делал управление параметрами графиков и перебор инструментов)
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Gridmer пишет: На упомянутой странице IndiQUIX есть видео с примерами, там и пересечение индикаторов, и пробои уровней, и торговля по нескольким таймфреймам, и пирамида, и слежение за крупными заявками. Я не понимаю зачем городить велосипед, когда есть все готовое, удобное и стоит копейки. В этих тактиках нет макросов, все можно написать формулами.
Пока Вы на своей платформе будете создавать все требуемое вручную, пройдет много времени, еще и тестировать надо будет. Доля скоростных роботов невелика, и, поверьте, лучше тогда изучить луа или C++.
Полагаю, что Вы согласитесь со мною в том, что если кто-то чего-то не понимает, то это его проблема. Поэтому я все же попробую Вам объяснить 1) Читаем про IndiQUIX -Утилита для импорта графиков из QUIK в Excel - IndiQUIX – это программа, позволяющая экспортировать любые графики, в том числе индикаторы и осцилляторы из Quik в Excel. Как Вы это понимаете? Я -так - это программа, которая позволяет скопировать графики из QUIK в Excel. После такого копирования Вы можете что-то считать в экселе используя числовые данные этих графиков. И ВСЕ Вопрос при чем здесь роботы? Робот - это программа которая может автоматически совершать торговые и вспомогательные действия на рынке. Вопрос Какие действия торговые совершает IndiQUIX или Excel Ответ - никакие ---------------------------------------- Возьмем пример из предыдущего ответа BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and r[1]<50 and r[0]>50 SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and r[1]>50 and r[0]<50
Здесь используются три графика для автоматической отправки на биржу(через брокера) торговых заявок для покупки и продажи активов при наступлении указанных условий. Они никуда из QUIK не копируются, т е время тратить не надо. Да и смотреть на них тоже смысла нет, так как заявки отправляются автоматом. --------------------------------------- А в Вашем вариант: Будите руками тыкать в квик глядя в excel? флаг Вам в руки. Но роботы здесь не причем.
Фёдор Сухов пишет: а вот, если надо вот такой немножко посложней: ------------------------------------------------------------------
Код
PLOT: fastMA=EMA(5,close)
PLOT: slowMA=EMA(21,close)
PLOT: r=RSI(14,close)
BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and while ( r[1]<50 and r[0]>50 )
SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and while ( r[1]>50 and r[0]<50 )
http://strategy4you.ru/prostaya-strategiya-foreks/strategy-forex-metod-bagovino.html Если можно так как я описал, то, возможно я Вам клиента нашёл
первая часть формул будет почти такой же: ------------------------------------ 1) fastMA(1)< slowMA(1) & fastMA(0) > slowMA(0) --------------------------------------------------------------- 2) fastMA(1) > slowMA(1) & fastMA(0) < slowMA(0) -------------------------------------------------------------------- только формулы для BUY и для SELL помещаются в отдельные файлы. Т е Вы создаете библиотеки сигналов BUY и sELL и STOP и TAKE и SHORT и COVER а потом просто указываете в роботе какие сигналы вы хотите использовать. ----------------------------------- Вообще-то я не понял на каком Вы языке написали. могу лишь догадываться, что это дедушка метасток. ------------------------------- Откровенно сказать я его уже забыл основательно . ---------------------------- поэтому поясните , что Вы хотите сделать этой записью: ------------------------------- and while (r[1]<50 and r[0]>50 ) -------------------------------------------
Я знал, что вы об этом спросите, но дело не в языке Метасток или Омега Ресёрч. Я просто хотел реализовать ожидание пересечения уровня "50" индикатором RSI? после пересечения средних, т.е. пересекли и ждём сигнала от RSI, хотя, может быть и одновременное пересечение со средними.
Ожидание пересечения уровня запишется так же как и индикаторов т е в итоге получим запись: BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and r[1]<50 and r[0]>50 SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and r[1]>50 and r[0]<50 скобки можно и квадратные.
Фёдор Сухов пишет: а вот, если надо вот такой немножко посложней: ------------------------------------------------------------------
Код
PLOT: fastMA=EMA(5,close)
PLOT: slowMA=EMA(21,close)
PLOT: r=RSI(14,close)
BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and while ( r[1]<50 and r[0]>50 )
SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and while ( r[1]>50 and r[0]<50 )
http://strategy4you.ru/prostaya-strategiya-foreks/strategy-forex-metod-bagovino.html Если можно так как я описал, то, возможно я Вам клиента нашёл
еще хотел заметить. А каким образом Вы заявки отправляете на биржу в Вашем случае. В моей системе это делается автоматом . Ничего не надо программировать. Надо лишь указать сколько денег тратить. А как в вашем случае?
Gridmer пишет: Ну, сравнение с лыжами и вертолетом несколько лукавое. Для большинства индикаторных роботов задержка в несколько секунд не критична, а вот мощь и простота Excel - это хорошая помощь. В Вашей технологии, что будет еще для написания формул, кроме операций сравнения чисел?
Excel - хорошая вещь но не для реальной работы Чтобы предметно обсудить проблему, назовите конкретно какие формулы вы используете в роботе из Excel и я их создам в платформе. Могу даже сделать доступ в R систему. -------------------------------------------- Так какие же формулы Вы используете в роботах?
Фёдор Сухов пишет: а вот, если надо вот такой немножко посложней: ------------------------------------------------------------------
Код
PLOT: fastMA=EMA(5,close)
PLOT: slowMA=EMA(21,close)
PLOT: r=RSI(14,close)
BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and while ( r[1]<50 and r[0]>50 )
SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and while ( r[1]>50 and r[0]<50 )
http://strategy4you.ru/prostaya-strategiya-foreks/strategy-forex-metod-bagovino.html Если можно так как я описал, то, возможно я Вам клиента нашёл
первая часть формул будет почти такой же: ------------------------------------ 1) fastMA(1)< slowMA(1) & fastMA(0) > slowMA(0) --------------------------------------------------------------- 2) fastMA(1) > slowMA(1) & fastMA(0) < slowMA(0) -------------------------------------------------------------------- только формулы для BUY и для SELL помещаются в отдельные файлы. Т е Вы создаете библиотеки сигналов BUY и sELL и STOP и TAKE и SHORT и COVER а потом просто указываете в роботе какие сигналы вы хотите использовать. ----------------------------------- Вообще-то я не понял на каком Вы языке написали. могу лишь догадываться, что это дедушка метасток. ------------------------------- Откровенно сказать я его уже забыл основательно . ---------------------------- поэтому поясните , что Вы хотите сделать этой записью: ------------------------------- and while (r[1]<50 and r[0]>50 ) -------------------------------------------
ну, если образно сравнить, то это как бежать в гору на лыжах ( IndiQUIX) или на вертолете (моя платформа - KAMNIK) ---------------------------------------------------------------- если конкретно, то в KAMNIK нет никакого экспорта, работаем в QUIK. ---------------------------- скорость QLUA+CИ (Excel - скорость желает быть) не надо знать языки программирования и кучи особенностей обращения к функциям транзакций хранилищ колбеков и прочих премудростей программистов. (в Excel - надо знать как минимум бейсик) -------------------------------------------- Надо знать рынок и свою мечту.
Добрый день, изучаю потребность в следующей разработанной мною платформе для создания роботов для qUIK ---------------------------------- Достоинство - не надо изучать премудрости LUA,QLUA,QPILE,C,C# и т д. Просто пишем свой любимый алгоритм на привычном и понятном языке. ----------------------- Пример: хотим купить, когда индикатор X пересекает индикатор Y снизу вверх. пишем:
BUY: X>Y
хотим продать , когда обратно Y>X пишем
SELL: Y>X
т е робот будет состоять из 2 строк. Вы запускаете его как скрипт луа и он торгует. Роботов можно печь как пирожки по десятку в день. --------------------------------------------------- Желающие приобрести подобную платформу просьба обращаться на мою почту, которую можно найти на моем сайте www.kamynin.ru, либо на форуме.
OnCalculate вызывается на каждую обезличенную сделку, а getParamEx читает из срезов ТТП , ТТП обновляется илшь при изменении и если данные еще не устарели в пришедшем срезе Т е расчет по OnCalculate и по getParamEx скорее будут не совпадать, а иногда совпадать.
Пардон, действительно, нет надобности обновлять историю которая уже есть в терминале. Было бы хорошо, если бы история в терминале в начале сессии не обновлялась, а добавлялась.
попробую добавить свою ложку в вашу бочку. ------------------------------------- Полагаю, что речь идет о реальном времени. Т е рассмотрим реальную торговлю, а иначе нет смысла вообще в этой дискуссии. ---------------------------------------------------- Обмен сообщениями сервера и терминалов осуществляется асинхронно. Свечи идут от сервера синхронно с неопределенность в одну сделку и один тайм. Свечи формирует сервер на основе двух условий - тайма и события(сделки внутри тайма). Следовательно какая очередная свеча должна быть, мы знаем и без сервера (если время у нас точное) ------------------------------------------------ Если свечи нет, то либо время не то, либо нет событий. Свечи - это нелинейное сжатие данных задним числом. Т е свеча всегда есть , когда пройдут все события включаемые в нее и завершиться тайм. ------------------------- Поэтому на стороне терминала невозможно знать точно текущее состояние на сервере(т е на бирже) Запрашивать сервер о количестве свечей не имеет смысла, так как мы это знаем с точностью до последней свечи (последнего тайма и последней сделки)
Николай Камынин пишет: Если надо работать с очередями с 5000 элементов, то надо просто написать спец модуль такой очереди для луа на СИ. ------------------------------------------------- Я делаю именно так для обработки больших массивов, очередей, списков, пулов, ну и т д --------------------------------- Полагаю, что если чел смело берется за потоки с очередями в 5000 элементов, то создать спец модуль очереди для него - раз плюнуть.
Мне кажется что различные очереди в скрипте как раз проще делать на Lua.
Если важно ПРОЩЕ, то, безусловно, Луа, но если важно БЫСТРО то , безусловно, СИ Но для очередей в 5000 элементов - важно быстро, так как иначе - нет смысла .
Deserf пишет: Насколько я понимаю, платформа Quik в скрипте QLua не в состоянии отследить ВСЕ выполненные сделки? Если сделка одна по одной цене, тогда еще хорошо, но по двум-трем ценам, то скрипт опускает хобот, поймав только одну цену, ее лоты и цену
Нет, скрипт поднимает заднюю ногу и писает на своего создателя.
стакан - это отображение очереди заявок. очередь заявок формирует сервер биржи. Он же производит исполнение сделок. Так вот, когда приходит заявка на покупку по цене выше лучшей цены продажи, то она в стакане должна встать выше лучшей цены продажи. Но она туда не ставится а производится совершение сделок и удаление из очереди заявок на продажу которые удовлетворяют данную заявку на покупку. Вот эти состояния очереди и не передает брокерам сервер биржи. т е такие не уравновешенные стаканы клиенты брокеров не видят. ----------------------------------- Как правило, сервер брокера транслирует клиентам не стакан а лишь изменения в стакане (про квик не знаю, но так делает транзак). Т е в терминале клиента тоже возникают момент удаления, перемещения и замещения записей. Если состояние изменяющегося На терминале стакана доступно клиенту, то будем видеть переменное число записей в стакане. Таким образом, те состояния стакана, которые видим в терминале - могут содержать переходные состояния с переменным числом элементов. Такой вид стакана - это не реальное состояние очереди, а техническое состояние таблицы на стороне терминала. Т е на сленге можно назвать это мусором. Показ такого мусора никто не регламентирует.
еще раз повторю для любителей справочника: float -действительное 4 байта. точность 7 значащих цифр. double -действительное число с двойной точностью 8байт точность 15 значащих цифр, так как мантисса хранится в нормализованном виде long double- длинное действительное 10 байт. точность 19 значащих цифр. ---------------------------------- Дополню. проблема скорее всего у Вас будет не с точностью(погрешностью), а с тем что перевод из десятичной формы в двоичную и обратно очень часто не может быть выполнен точно. Поэтому давным давно для финансовых операций фирма IBM предложила и долго использовали двоично-десятичную математику в которой финансовые операции ( а на бирже лишь такие) всегда вычисляются точно. Но это в прошлом.
user пишет: Ту информацию, что ближе к спреду надо бы обновлять более приоритетно.
При чём тут приоритетное обновление?! Есть правила торгов, согласно которым исполняются ордера. Согласно этим правилам, ордера всегда исполняются последовательно (пусть даже по несколько штук в единицу времени) в порядке очереди. Исполнение ордеров приводит к изменению стакана таким же образом в строгой последовательности. Если соблюдать эту последовательность изменений при отображении "стакана", то никогда даже при частичном обновлении "ценовых уровней" не возникнет пересечения котировок. Отсюда вытекает вывод, что в QUIK эта последовательность изменений строк в "стаканах" нарушается.
Предположу, что не совсем так. Просто сервер биржи не транслирует стакана, пока не урегулирует очередь. Но обновление очереди на сервере QUIK или в терминале может проходить без запрета и мы видим промежуточное состояние стакана. Но это состояние уже прошло, как и много других до того как мы это увидели. Кроме того, право разработчика сделать так как он считает нужным, поскольку нигде не регламентируется работа КВИК с очередями.
Попробуйте так: ------------------------------ local t=getSecurityInfo('',left.name) if t~=nil then local ClassCode=t.class_code if ClassCode~=nil and type(ClassCode~="table") and ClassCode~="" then Subscribe_Level_II_Quotes (ClssCode, left.name) end end
Рекомендую 1) поставить на комп луа со SciTE. 2) без квика на луа сделать простые примеры с таблицами, с циклами, с печатью c фалами. 3)После того, как будет все понятно и просто, переходите к чтению документации по QLua и делайте простые примеры но на квике с таблицами циклами файлами. 4) После того, как будет все понятно и просто, переходите без луа и без квика к написанию своего алгоритма. 5) После того, как будет все понятно и просто с алгоритмом, переходите в QUIK и пишите на луа то о чем мечтаете. Успехов в обучении
Deserf пишет: А как же тогда замену информации провернуть, тем более я раньше это делал?
Проще это делать так: ----------------------------- 1) создаете таблицу 2) читает в нее все из файла 3) меняете в таблице все, что хотите 4) пишите таблицу в файл (режим "w") ----------------------------- и будет Вам счастье
можно и так local file = io.open(ImyaCFGFaila, "w+") file:write("22") file:flush() file:close() ------------------ file:seek("set", 15) - смещает на 15 байт - вот эти байты вы и видите в редакторе.
В данном случае следует учитывать не погрешность вычислений а дискретность (шаг дискретизации) значений(цены). Он указывается биржей для каждого инструмента свой. Например, сербанк 0.01. при цене 100 имеем шаг дискретизации 1/10000 т е не более пяти значащих цифр. Тип float - 7 значащих цифр. double -15 цифр. Получаем, погрешность вычисления даже с типом float меньше шага дискретности в 100 раз. ---------------------------------------------------------------------------- Резюме, точность вычисления (величина обратная погрешности ) для биржевых цен идеальная. Погрешность вычислений практически не влияет на величину прогнозируемых цен.
Возьмите sciTE он к тому же написан на луа и в него модно добавить различные примочки и более того в него встроен компилятор и даже есть с отладчиком луа ---------------------------- И будет Вам счастье
Если надо работать с очередями с 5000 элементов, то надо просто написать спец модуль такой очереди для луа на СИ. ------------------------------------------------- Я делаю именно так для обработки больших массивов, очередей, списков, пулов, ну и т д --------------------------------- Полагаю, что если чел смело берется за потоки с очередями в 5000 элементов, то создать спец модуль очереди для него - раз плюнуть.
Проблема (возможно кто-то уже решил): ------------------------------ Метки на графиках всегда привязываются к левой оси Y. Причем, их нельзя привязать к правой. А индикатор по умолчанию - к правой. Т е метки можно применить лишь к индикатору, который привязан к левой оси. А если графика два - цена и объем, то метки липнут к графику, который на левой оси (т е метки по цене, а слева - объем) в результате на экране меток нет. ------------------------------------------- Предложение (делал давно, наверное забыли) 1) сделать возможность перепривязывать метки по осям 2) сделать автоматическое привязывание меток и индикатора той оси, к которой привязан график с указанным тегом.
Deserf пишет: Здравствуйте, можно сделать по тикам, но тогда графики с идентификаторами tag1 и tag2 должны всего лишь быть тиковыми (во вкладке период графика указать "tick")
В реале, в текущей свече индикатор рассчитываться по тикам,но отображается лишь текущее значение.
Это не тарабарщина а символ нулевого кода в тестовой строке. Попробуйте отключить отображение управляющих символов в редакторе текста, на котором смотрите сообщение или убрать их из выводимой строки.
DronGO пишет: Кстати table. s insert table. s remove, работают очень медленно, в сотни раз медленнее, чем lock-free системы. И в своей работе их использовать не стал.
Самый быстрый способ удалить элемент таблицы - присвоить ему nil.
Попробуйте так: ------------------------------ local ClassCode=getSecurityInfo('',left[i].name).class_code if ClassCode~=nil and type(ClassCode~="table") and ClassCode~="" then Subscribe_Level_II_Quotes (ClssCode, left[i].name) end
В некоторых индикаторах в квике есть заморочки с периодом вместо используется удвоенное значение. Сравнивал AMA,SMA,EMA, RSI соответствуют и совпадают.
Михаил, Вы заблуждаетесь. Есть ограничение на чиcло локальных переменных Я уже писал об этом на форуме, а читал в документации ссылку дать не могу, так как не фиксировал. Более того, это ограничение я уже наблюдал в скриптах индикаторах. Пришлось повозиться, пока дошло что это оно самое.
Если изучать Луа по несколько минут в день, то работающий скрипт, от которого будет реальная помощь а не сообщение "Хелло луа" получится в следующем году. ------------------------------------------- процесс познания увлекателен, но утомителен, особенно когда никому не доверяешь.