IT Блог

Документации и переводы

Статьи на технические темы

Классы mql взаимодействие

Приведу простой пример взаимодействия классов в mql4, их атрибутов, конструкторов и копи-конструкторов copy constructor. Особенно пример будет полезен тем, кто никогда не сталкивался с C-подобными языками программирования (C++, C#, java).

Сразу сообщу, что в этой статье не будут расписаны все моменты работы с классами. Только простой пример для того, чтобы быстро начать использовать классы для более гибкого написания кода. Полный текст программы в конце статьи.
Также я не придерживался принятого стиля написания кода mql, так как я привык оформлять код как в python и считаю принятое оформление кода менее читабельным. Да простят меня mql-разработчики!

Допустим, в некоторые переменные нужно сохранить...


Передать параметры при создании экземпляра дочернего класса mql

Если в базовом классе есть конструктор с параметрами, то при создании дочернего класса нужно добавить конструктор с передачей параметров в базовый класс.

Для наглядности сначала покажу пример без использования параметров в конструкторе:

class Base {
   public:
      void Base(){
         Print("Base: constructor is called");
      };
};

class Child : public Base {
   public:
      void Child(){
         Print("Child: constructor is called");
      };
};

В терминале во вкладке "Терминал \ Эксперты" мы видим результат выполнения кода:

2021.01.22 13:07:04.756    TestBot EURCHF,H1: Child: constructor is called
2021.01.22 13:07:04.756    TestBot EURCHF,H1: Base: constructor is called

Видно, что сначала выполнился код базового конструктора...


Динамический тег в компоненте vue 3

Для наглядности покажу на конкретном примере.

В SEO есть такое понятие, как циклические ссылки. Например, в меню обычно всегда размещают ссылки на разделы сайта вне зависимости, на какой странице мы находимся. Но если мы находимся на некоторой странице и url текущей страниц совпадает с url кого-то пункта меню, то такая ссылка становится циклической и для SEO это плохо (по крайней мере раньше так точно было).

Таким образом, при совпадении url лучше пункт меню не ссылкой делать тегом a, а использовать другой тег, например, span.

Во Vue есть специальная директива :is, значение которой и будет тегом при рендере:

<component :is="tag...

Uncaught SyntaxError: Must be called at the top of a `setup` function vue 3

Если в кратце: проблема в том, что ваша функция должна быть вызвана вверху функции setup(), а не быть вложенной в другую функцию (вызов которой происходит из setup()). 

Проще понять наглядно, почему может возникнуть ошибка Uncaught SyntaxError: Must be called at the top of a `setup` function, на примере моего случая, когда для тестов я решил обернуть axios.get() в setTimeout:

<script>
    import { ref } from 'vue'
    import ui_state from "../state";
    import axios from "axios";

    export default {
        name: 'Component',

        setup() {
            const { locale_url } = ui_state

            const data = ref('')

            setTimeout(() => {
                axios.get(locale_url('/apps/'))
                    .then(response => {
                        data.value = response.data;
                    })
            }, 1000);

            return {
                data...

Где поменять тариф на продукты atlassian confluence jira

Когда только знакомишься с продуктами Atlassian, а точнее хочешь изменить настройки этих продуктов, может возникнуть ощущение, что настроек очень много и где найти нужную настройку.

Например, я сначала долго искал, где поменять тарифный план Confluence со стандартный на бесплатный. Оказалось меняется это на отдельном сайте  во вкладке Продукты. Затем нужно выбрать в левом боковом меню нужный сайт и на открывшейся странице в том же боковом меню выбрать Управление подписками:


AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready

В общем случае ошибка:

django.core.exceptions.AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.

говорит о том, что где-то происходит вызов неленивых функций перевода во время импорта пакетов. Другими словами, во время импорта перевод должен быть ленивым, то есть использоваться функция ugettext_lazy (или pgettext_lazy).

Например, в моделях нужно использовать ugettext_lazy (вместо простого ugettext):

from django.db import models
from django.utils.translation import gettext_lazy as _


class MyModel(models.Model):
    title = models.CahrField(_('Title'))

Бывает по трейсбеку не понятно, где нужно...


Добавить иконку в меню и на панель задач в Linux

Для добавления значка (иконки) на панель задач в Linux Mint, нужно сначала добавить иконку в меню, а затем уже можно будет её добавить на панель задач.

Более подробно, как добавить иконку в Linux Mint, смотрите ниже (в других версиях Linux должны быть похожие инструкции).

1. Нажать правой кнопкой мыши на кнопку “Меню” и нажать “Настройки”:

2. Нажать на кнопку “Открыть редактор меню”:

3. Выбрать необходимый раздел, куда нужно добавить иконку, и щёлкнуть "Новый элемент":

4. Прописать путь до скрипта (файла, который запускает программу) и добавить иконку щёлкнув по изображению "Ракеты" рядом с полями:

 Для примера можно добавить в меню программу...


Автоматическое добавление якорей к заголовкам

Технически в html якорь для заголовков может выглядеть так:

<h2 id="my-title">Мой заголовок <a href="#my-title">¶</a></h2>
<p>Произвольный текст</p>

Результат выполнения такого кода:

Автоматически добавлять якорь к заголовкам можно как на стороне сервера, так и на стороне клиента. На стороне сервера придётся хранить дополнительный html-код, который будет загружаться из базы данных для отображения страницы, поэтому мне больше нравится посредством javascript добавлять якоря к заголовкам.

Постановка задачи

В зависимости от важных нужд вы можете изменить предлагаемый код. Я поставил перед собой следующие задачи.

С технической стороны

При наведении на заголовок должен появляться знак ссылки на якорь...


Подключиться к интернету через кабель linux mint

Когда в Linux Mint подключаешь кабель напрямую к компьютеру (не через роутер), то Linux может автоматически создать Ethernet-подключение, которое на первый взгляд должно быть верным:

Но, как ни странно, оно не работает. И я к тому же думал, что во вкладке Защита 802.1x нужно ввести логин и пароль от провайдера. Но оказалось, это не работает.

Нужно создать DSL подключение. Для этого нажимаем "Пуск \ Параметры \ Сетевые соединения" и в открывшимся окне нажимаем "Добавить":

Теперь можно ввести имя пользователя (логин) и пароль, выданный провайдером (в поле служба можно писать, что угодно):

Теперь должно работать:

Подключение через роутер

Через роутер как раз-таки...


Типы ордеров в mql

OrderType() возвращает тип ордера в числовом виде:

Константа Значение Описание
OP_BUY 0 Ордер на покупку
OP_SELL 1 Ордер на продажу
OP_BUYLIMIT 2 Отложенный ордер на покупку по достижении заданного уровня, текущая цена выше уровня
OP_BUYSTOP 3 Отложенный ордер на покупку по достижении заданного уровня, текущая цена ниже уровня
OP_SELLLIMIT 4 Отложенный ордер на продажу по достижении заданного уровня, текущая цена ниже уровня
OP_SELLSTOP 5 Отложенный ордер на продажу по достижении заданного уровня, текущая цена выше уровня
OP_BALANCE 6 Пополнение или вывод со счёта
OP_CREDIT 7 Использование кредита
  8 Оплата брокером партнёрского вознаграждения рибейт-партнёрам, являющееся частью спреда с каждой сделки клиента

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц