Всем привет!
В этом выпуске я хотел бы подробнее поговорить о команде message(). Хотя казалось бы – с ней все понятно. Мы ранее, когда писали первый скрипт, ее рассмотрели, и она выводит сообщение в отдельное окошко.
Как-то так:
А что если в процессе выполнения скрипта нужно выводить не одно сообщение, а несколько? Конечно, можно в данном окошке пролистывать эти сообщения и анализировать. Но, это если таких сообщений будет 5-10. А, если будет работать несколько скриптов, и каждый будет генерировать сотни сообщений. Что тогда делать?
Все сообщения, выдаваемые в данном окне можно просмотреть списком.
Для этого делаем следующее:
Нажимаем на иконку «Создать новое окно».
В открывшемся окне выбираем внизу позицию «Таблица сообщений».
Откроется окно в котором будут выводиться все сообщения, которые Ваши скрипты выдавали через команду message().
Однако, что если у Вас работает несколько скриптов и каждый выдает разные сообщения. Давайте смоделируем такую ситуацию. Создадим три скрипта.
Скрипт № 1 (message1.lua)
function main()
for i=1,50 do -- Цикл повторяет действия 50 раз.
perem1 = summ(i,8); -- запускает функцию сложения чисел. Каждый раз переменная i будет увеличиваться на 1.
message(" Cумма чисел равна: "..perem1);
sleep(1000); --делаем задержку на 1 секунду.
end
end
function summ(znachenie1, znachenie2)
peremennaya = znachenie1 + znachenie2;
return peremennaya
end
Первый скрипт выводит с задержкой в одну секунду сумму пятерки и переменной i, которая меняется от 1 до 50.
В результате выполнения получим такое:
Второй скрипт будет похожий, но числа будут не складываться, а перемножаться.
Скрипт № 2 (message2.lua)
function main()
for i=1,50 do -- Цикл повторяет действия 50 раз.
perem1 = multiplication(i,8); -- запускает функцию умножения чисел. Каждый раз переменная i будет увеличиваться на 1.
message(" Произведение чисел равно: "..perem1);
sleep(1000); --делаем задержку на 1 секунду.
end
end
function multiplication(znachenie1, znachenie2)
peremennaya = znachenie1 * znachenie2;
return peremennaya
end
А в третьем скрипте пусть выдается разность.
Скрипт № 3 (message3.lua)
function main()
for i=1,50 do -- Цикл повторяет действия 50 раз.
perem1 = division(i,8); -- запускает функцию вычитания чисел. Каждый раз переменная i будет увеличиваться на 1.
message(" Разность чисел равна: "..perem1);
sleep(1000); --делаем задержку на 1 секунду.
end
end
function division(znachenie1, znachenie2)
peremennaya = znachenie1 - znachenie2;
return peremennaya
end
А теперь давайте загрузим все три скрипта в QUIK и последовательно быстро запустим их.
В результате в окне сообщений можно увидеть такую кашу:
Очень сложно воспринимать эту информацию. А если скрипты выдают Вам информацию в духе: «Спред по SBER составляет 0,004»
«Средняя цена сделок по VTBR по последним 14 свечам составляет 0,015544»
И т.д.
То тут голова кругом пойдет. Как же отделять сообщения друг от друга и потом анализировать информацию.
В этих случаях я использую такой принцип: Все сообщения, которые генерирует скрипт должны начинаться с какого-то текста, отображающего суть работы данного скрипта. И этот текст должен быть на латинице (Возможно, что про латиницу не обязательно).
К примеру в первом скрипте я буду писать в начале каждого сообщения «Summ». Во втором скрипте – «Multi», в третьем – «Division»
Что бы не путаться и не писать в одном скрипте эти текстовые добавки с ошибками, я помещу этот текст в переменную и буду добавлять переменную в каждый вывод message.
Тогда текст скрипта № 1 будет таким:
function main()
dobavka = "Summ: "; -- текстовая добавка для сообщений.
for i=1,50 do -- Цикл повторяет действия 50 раз.
perem1 = summ(i,8); -- запускает функцию сложения чисел. Каждый раз переменная i будет увеличиваться на 1.
message(dobavka.." Cумма чисел равна: "..perem1); -- вывод с текстовой добавкой
sleep(1000); --делаем задержку на 1 секунду.
end
end
function summ(znachenie1, znachenie2)
peremennaya = znachenie1 + znachenie2;
return peremennaya
end
Скрипт № 2 станет таким:
function main()
dobavka = "Multi: "; -- текстовая добавка для сообщений.
for i=1,50 do -- Цикл повторяет действия 50 раз.
perem1 = multiplication(i,8); -- запускает функцию умножения чисел. Каждый раз переменная i будет увеличиваться на 1.
message(dobavka.." Произведение чисел равно: "..perem1); -- вывод с текстовой добавкой
sleep(1000); --делаем задержку на 1 секунду.
end
end
function multiplication(znachenie1, znachenie2)
peremennaya = znachenie1 * znachenie2;
return peremennaya
end
Скрипт № 3 станет таким:
function main()
dobavka = "Division: "; -- текстовая добавка для сообщений.
for i=1,50 do -- Цикл повторяет действия 50 раз.
perem1 = division(i,8); -- запускает функцию вычитания чисел. Каждый раз переменная i будет увеличиваться на 1.
message(dobavka.." Разность чисел равна: "..perem1); -- вывод с текстовой добавкой
sleep(1000); --делаем задержку на 1 секунду.
end
end
function division(znachenie1, znachenie2)
peremennaya = znachenie1 - znachenie2;
return peremennaya
end
Теперь, если мы запустим одновременно все три скрипта, то получим в окне сообщений примерно такое:
Немного порядка прибавилось. Но для полноценной работы нужно эти данные перенести в Эксель.
Для этого в окне сообщений нажимаем правую кнопку мыши и выбираем «Копировать всё». А в Экселе вставляем. У меня получилось так:
Теперь выделяем колонки A-E, и во вкладке «данные» нажимаем «фильтр».
На фильтре на колонке с сообщениями нажимаем кнопку фильтра.
Жмем «Текстовые фильтры», далее «Начинается с…»
И пишем текстовую добавку того скрипта, по которому хотим увидеть все сообщения. Например, от первого скрипта – «Summ».
После этого Вы увидите только те сообщений, которые генерировал первый скрипт.
Таким образом можно выделять сообщения от каждого скрипта. Но, это еще не все.
В следующей выпуске я изложу еще один свой подход к порядку получения данных, выдаваемых скриптами.
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
📃 Краткое содержание данного канала.
➖➖➖➖➖➖➖➖➖➖➖➖➖
Landingcentr.ru - разработка сайтов для малого и среднего бизнеса.
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆
Если Вы хотели бы получить программную реализацию своей торговой идеи, но понимаете, что сами не готовы облачить идею в код, то можете обратиться ко мне. Мой адрес в телеграм: https://t.me/Nikolai_Antonov
Моя электронная почта: nantonov@mail.ru