Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos
Сообщений: 37
•
1, 2, 3, 4
Консультации по программированию на LUA
ВЯЧЕСЛАВПЕТРОВ » 11 май 2019, 15:00
Рэндом писал(а):Самый простой способ прописать глобальные переменные в коде и в нем же их менять. Для этого нужно в начале советника создать переменную. С другими способами я пока не разобрался, но в примерах видел что делают так как я написал.
Да не самый хороший способ но на первом этапе придется так и сделать. Когда код сам написал делать это легче. Первое впечатление от создания советника не очень. Квик это таблицы и еще раз таблицы. Данные для советников получаются из таблиц большей частью. Можно получать с графиков. Можно создавать пользовательские таблицы и выводить на экран что позволяет сделать работу советников видимой.
-

ВЯЧЕСЛАВПЕТРОВ
-
- Сообщений: 1522
- Зарегистрирован: 06 сен 2016, 21:28
- Средств на руках: 90.40

- Награды: 2
-
- Группа: Базовая
- Благодарил (а): 3574 раз.
- Поблагодарили: 434 раз.
-
Консультации по программированию на LUA
Рэндом » 13 май 2019, 05:32
Вот таблицы мне не очень нравятся. Сделать работу советника видимой это хорошо. Но в таблицах нельзя править данные руками. Поэтому для настройки советника они не подходят. Хотя я ещё не до конца с ними разобрался. Может быть ошибаюсь. В любом случае это сложный метод управления советником. Такого как в MQL нет. Как там просто задать параметры для советника. Главное что в Квик история сделок всего за один день сохраняется. Адаптировать мой советник будет сложно. Я его хотел сделать в качестве примера. Хотя торговать им не получиться нормально. Он нуждается в оптимизации. А в Квик нет тестера и оптимизатора.

-

Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45

- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Консультации по программированию на LUA
ВЯЧЕСЛАВПЕТРОВ » 13 май 2019, 08:18
В квике нет истории сделок. Показывают 1 день . Они не разделяются на исполненные и активные все находятся одной таблице. Вот только я не разобрал что за биты возвращает flags ?
- Код: выделить все
local zayvkigetNumber = getNumberOf('orders')
local zayvki={}
for i = 0, zayvkigetNumber-1 do
local zayvki = getItem('orders', i )
-- Если значение получено выведем все поля строки
if zayvki ~= nil then
message(" Флаг = " .. tostring(zayvki.flags))
message(" Код бумаги = " .. tostring(zayvki.sec_code))
message(" = " .. tostring(zayvki.brokerref))
else
message("Не удалось получить строку таблицы!")
end
end
А тестирование на истории су шествует нужно скачивать файлы у брокера и через ехсель. Поверхностно понял.
Последний раз редактировалось
ВЯЧЕСЛАВПЕТРОВ 13 май 2019, 08:32, всего редактировалось 5 раз(а).
-

ВЯЧЕСЛАВПЕТРОВ
-
- Сообщений: 1522
- Зарегистрирован: 06 сен 2016, 21:28
- Средств на руках: 90.40

- Награды: 2
-
- Группа: Базовая
- Благодарил (а): 3574 раз.
- Поблагодарили: 434 раз.
-
Консультации по программированию на LUA
Рэндом » 13 май 2019, 09:21
Флаги многое значат. В справке есть целый раздел описывающий их. Я не могу сюда его перенести. Да и смысла нет. Но вот что такое битовый флаг объясню. Исторически сложилось, что память компьютера делиться на байта. Каждый байт это 8 бит. Компьютер оперирует нулями и единицами. Один бит как раз может записать ноль и единицу. Каждый бит в флаге отвечает за свое значение. Для проверки флага используется логическая операция "И" между флагом и числом. В числе должен быть установлен нужный бит. Тогда если операция "И" дает не 0, то флаг установлен. А смысл флага, как я уже говорил, в справке.
-

Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45

- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Консультации по программированию на LUA
Консультации по программированию на LUA
Shepherd » 15 май 2019, 17:18
ВЯЧЕСЛАВПЕТРОВ писал(а):Второй день сижу и думаю что и как возвращает flags .
• бит 0 (0x1) Заявка активна, иначе – не активна
• бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена
• бит 2 (0x4) Заявка на продажу, иначе – на покупку. Данный флаг для сделок и сделок для исполнения определяет направление сделки (BUY/SELL)
• бит 3 (0x8) Заявка лимитированная, иначе – рыночная
• бит 4 (0x10) Возможно исполнение заявки несколькими сделками
• бит 5 (0x20) Исполнить заявку немедленно или снять (FILL OR KILL)
• бит 6 (0x40) Заявка маркет-мейкера. Для адресных заявок – заявка отправлена контрагенту
• бит 7 (0x80) Для адресных заявок – заявка получена от контрагента
• бит 8 (0x100) Снять остаток
• бит 9 (0x200) Айсберг-заявка
погуглил LUA очень специфический язык, довольно не удобный, в особенности при работе с битами,то что делается в одну строчку в 99% языках, в LUA это что то с чем то
гуглом "lua quik битовые операции" - первый ответ поисковика будет пример по Вашему вопросу
-

Shepherd
- Специалист MQL
-
- Сообщений: 383
- Зарегистрирован: 13 июн 2018, 19:22
- Средств на руках: 30.25

- Откуда: Волгоград
- Группа: Базовая
- Благодарил (а): 114 раз.
- Поблагодарили: 208 раз.
Консультации по программированию на LUA
Рэндом » 17 май 2019, 05:47
0x1 - это шестнадцатеричное. Вам надо понять как соотносятся шестнадцатеричные и двоичные числа. Во в скобках указано число шестнадцатеричное которым можно проверить бит.
Код для проверки будет следующий:
- Код: выделить все
res=bit.band(flag,0x1) // для первого флага
if res~=0 then
// флаг установлен
else
// флаг не установлен
end
-

Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45

- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Консультации по программированию на LUA
Консультации по программированию на LUA
Рэндом » 20 май 2019, 04:38
А что не понятно с битовыми флагами? Я думаю без них не получится нормально работать с ордерами. Задавайте вопросы, я отвечу.
-

Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45

- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Консультации по программированию на LUA
ВЯЧЕСЛАВПЕТРОВ » 20 май 2019, 18:16
Рэндом писал(а):А что не понятно с битовыми флагами? Я думаю без них не получится нормально работать с ордерами. Задавайте вопросы, я отвечу.
В теории понятно. На практике код как я понял десятичный и из битов набирается. Тоесть в конечном виде легче с десятичным работать.
Оставим пока этот вопрос у меня возник совсем другой это как разобраться с заявками в квике. Нужно для того чтобы установить трелинг стоп который движется за ценой. Как устанавливать рыночные и лимитные частично понял. А вот заявки тейк профит и стоп лос так и не разобрал.
выставление и удаление заявок выполняется как я понял одной функцией sendTransaction
- Код: выделить все
local LimitOrderBuy={ ["ACTION"]="NEW_ORDER" ,["ACCOUNT"]=TRADE_ACC,["OPERATION"]="B" ,["CLASSCODE"]=CLASS ,
["SECCODE"]=SEC ,["PRICE"]=tostring(Bid_Prise) ,["QUANTITY"]=tostring(1) ,["TRANS_ID"]=tostring(MAGIKNUMER) ,["CLIENT_CODE"]=tostring(MAGIKNUMER)
}
local Err_Order=sendTransaction(LimitOrderBuy)
message(Err_Order);
Нужно понять из каких заявок формируется трелинг стоп.
-

ВЯЧЕСЛАВПЕТРОВ
-
- Сообщений: 1522
- Зарегистрирован: 06 сен 2016, 21:28
- Средств на руках: 90.40

- Награды: 2
-
- Группа: Базовая
- Благодарил (а): 3574 раз.
- Поблагодарили: 434 раз.
-
Кто сейчас на форуме?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Права доступа к форуму
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения