1 (2015-01-30 12:33:04 отредактировано slkumax)

Тема: Пробую писать привод.

Итак, пишу свой собственный привод.  (пользуясь библиотекой QVCLua)


Это пока что только начало привода.

Ниже будут выкладываться актуальные версии

2

Re: Пробую писать привод.

Апдейт. Версия улучшена
ВАЖНО! Почему то если выходить кнопкой выход или закрытием окна, Квик после этого выдаст ошибку и больше скрипты LUA не даст запускать.
Поэтому выходить из приложения только через "остановить" в Quik.
http://rghost.ru/8LDjKyzRF

3

Re: Пробую писать привод.

Апдейт. Теперь умеет снимать заявки по одной, кроме того ведет лог работы.
ВАЖНО! Почему то если выходить кнопкой выход или закрытием окна, Квик после этого выдаст ошибку и больше скрипты LUA не даст запускать.
Поэтому выходить из приложения только через "остановить" в Quik.
http://rghost.ru/7gHGGR7QX

4 (2015-01-31 19:15:31 отредактировано swerg)

Re: Пробую писать привод.

1. Не стоит вкладывать в архив файл qlua.dll, это часть терминала QUIK, т.е. этот файл зависит от версии терминала.

2. У меня при запуске сразу развалился скрипт с диагностикой
AxMaxTradeV_1_3_3\AXMaxTradeV_1_3_3.lua:88: attempt to index global 'p_file2' (a nil value)
т.е. файлы на самом деле не открыты. Смотрим, как открываются файлы:

p_file=io.open("Lua\\logMaxTradeTradess.txt", "w") 
p_file2=io.open("Lua\\logMaxTradeLogFull.txt", "a+") 
p_file3=io.open("Lua\\logMaxTradeLogDay.txt", "w")

Беда в том, что

  • нет нужной директории;

  • директория, где создаются файлы – даже если их удастся создать -– будет постоянно меняться в зависимости от директории, где в последний раз открывались файлы. Это типичный глюк QUIK’а. Его желательно в скриптах побеждать, причем я так понимаю, что Lua – это каиалог, где в данном случае лежит скрипт, так что уберем это Lua и получим:

p_file=io.open(getScriptPath() .. "\\logMaxTradeTradess.txt", "w") 
p_file2=io.open(getScriptPath() .. "\\logMaxTradeLogFull.txt", "a+") 
p_file3=io.open(getScriptPath() .. "\\logMaxTradeLogDay.txt", "w")

3. Чтобы скрипт всё же не падал на логировании в любом случае – хорошо бы перед собственно записью лога (т.е. перед строкой p_file2:write()) добавить проверку

if p_file2 ~= nil then

ну и end в конце добавить

4. Есть вот такая строчка в программе, но не приложен файл project1.ico

myForm:Icon(imgdir.."project1.ico")

5 (2015-01-31 19:16:26 отредактировано swerg)

Re: Пробую писать привод.

Но это всё ерунда.
Беда в том, что при любой остановке скрипта (кнопкой "остановить", например) терминал QUIK у меня наглухо зависает. Причем всегда.

Понять причину никак не могу. У вас остановка скрипта хоть как-то работает?

Запускаю файл с именем AXMaxTradeV_1_3_3.lua

6

Re: Пробую писать привод.

swerg пишет:

Но это всё ерунда.
Беда в том, что при любой остановке скрипта (кнопкой "остановить", например) терминал QUIK у меня наглухо зависает. Причем всегда.

Понять причину никак не могу. У вас остановка скрипта хоть как-то работает?

Запускаю файл с именем AXMaxTradeV_1_3_3.lua

Странно. Я проверил на пяти компьютерах и везде работает. Уже несколько дней торговал с него.

7

Re: Пробую писать привод.

Спасибо за комментарии. Привод продолжает находиться в стадии доработок. Опыт у меня программирования имеется, правда качественный опыт был лет 8 назад. Было бы очень хорошо, если бы кто-либо смог мне грамотно пояснить как написать данный привод более качественно, и более грамотно с точки зрения программирования.
Сейчас занимаюсь тем, что пытаюсь вставить в привод обработку и отслеживание состояния портфеля. Думаю на неделе будет более полный релиз.
Самый большой вопрос это- а на что же заменить хэндлер? Я взял изначально базу из примера и уже по аналогии делал свое.

Но главное достоинство привода для меня на текущий момент это то, что я перестал платить за qscalp и мне для торгов достаточно своего привода. Хотя он будет очень глобально улучшаться и дорабатываться, был бы очень рад, если бы мне помогали и поясняли как улучшать.

8

Re: Пробую писать привод.

Основная проблема в том, что я не помню или не знаю как работают многие функции - как их вызывать, что они делают , какие параметры принимают и отдают. В итоге приходится писать основываясь только на примерах или тех "урывков" литературы, которые удается найти. Оттого то например и идет такая работа с логами и прочим.
А вообще самая главная цель этого привода, это в дальнейшем прописать робота, который будет сам торговать. Перепробовав ТСлаб (который оказался слишком ограничен в возможностях) роботлабы, кучу другого софта для написания роботов (везде сталикивался с невозможностью каких либо действий) кроме того параллельно с этим на Си велась разработка робота другого, но в основном не мной, а "подконтрольным" мне программистом. В какой то момент я уже перестал сам разбираться в проекте и дорабатывать его мог только программист.... Сейчас у этого программиста стало очень тяжело со временем и возможностью работать (он из Украины из Донецка... Я думаю понятно всё...) и теперь рассчитывать на то, что он все таки доведет робота, почти бесполезно....
Потому решил писать с нуля и своего... Lua был выбран так как судя по описанию возможностей, на этом языке нет глобальных ограничений, он хорошо взаимодействует с квик (на сколько это возможно ((текущие роботы у меня вообще по dde работают))) и вот для того чтобы написать робота, я решил начать с "простого"- написанию торгового привода. В дальнейшем буду писать робота... И вот тут мне понадобится еще больше помощи... Очень надеюсь что смогу её получить от вас )))

9

Re: Пробую писать привод.

Swerg, большое спасибо за подробное пояснение того, как работать с файлами в данном случае.