Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 939

 
Nikita Chernyshov:

Вопрос чисто эстетики.

Как сделать так, чтобы вот здесь была собственная картинка? MT4



#property icon
 
Artyom Trishkin:

да, знаю это свойство, спасибо. Но оно подразумевает, что иконка должна находиться у пользователя. Можно ли как-то это обойти? Чтобы человек скачал только ex4 и у него отображалась моя картинка?

 
Koldun Zloy:

Если у Вас для каждого типа отведены определённые ячейки массива, то сделайте вместо массива структуру.

Я так и думал сделать но я потерял ссылку где человек поместил в структурный массив элементы из структуры. Он объявил структуру а потом создал массив и под каждым номером хранился тип int string double, но там у него был массив в котором только по одному разному элементу было в ячейке, так вот я думал и здесь это возможно но видимо нет.

 
Igor Makanu:

что хоть урезали, конкретно?

#include "stdafx.h"
#include <conio.h>
#include <iostream>

using std::cout;
using std::endl;
using std::cin;

template<typename T> void Fun(T a[],size_t m=2,size_t n=2, T r=0)
{
        for ( size_t i = 0; i < m; i++ )
    {
        for ( size_t j = 0; j < n; j++ ) 
                        {
                    (a[i * n + j ])=(a[i * n + j ])*5;
                        cout <<(a[i * n + j ])<<" "<<endl;
                    }
        }cout<<endl; 
}

int _tmain(int argc, _TCHAR* argv[])
{
        int     mas[6]={1,2,3,4,5,6};
        double mas1[2][2]={{1.4,4.2},{2.8,6.7}};//int //{{},{}};
        int mas2[2][2][2];

        Fun(*mas1);//Для 2умерного массива передача по ссылке, но в mql4 все массивы передаются по ссылке 
        Fun((mas),6,1);
        for(int i=0;i<2;i++)
        {for(int t=0;t<2;t++)
        {cout<<mas1[i][t]<<" "<<endl;}}
        _getch();
        return 0;
}

В данном примере я передал 2ухмерный и 1мерный массив в функцию, и кстати это мой код.

Вот другой пример что не может mql4

#include <iostream>
#include <variant>
 
using double_bool_int = std::variant<double, bool, int>;
 
int main()
{
    const size_t len = 15u;
    double_bool_int* arr = new double_bool_int[len];
 
    {
        size_t idx = 0u;
        for (; idx < 5u; ++idx)
            arr[idx] = static_cast<double>(0.5 * idx);
        for (; idx < 10u; ++idx)
            arr[idx] = static_cast<bool>(idx & 1u);
        for (; idx < 15u; ++idx)
            arr[idx] = static_cast<int>(2 * idx);
    }
    for (auto it = arr; it != arr + len; ++it)
    {
        if (const auto i = std::get_if<int>(it); i)
            std::cout << "int " << *i << "\n";
        else if (const auto d = std::get_if<double>(it); d)
            std::cout << "double " << *d << "\n";
        else if (const auto b = std::get_if<bool>(it); b)
            std::cout << "bool " << std::boolalpha << *b << "\n";
    }
    
    delete[] arr;
    return 0;
}

Что из этого может mql4 или вот пример

double f(double n, ...)    //--заголовок с переменным числом параметров
{   double *p = &n;        //--установились на начало списка параметров
    double sum = 0, count = 0;    
    while (*p)         //--пока аргумент не равен нулю
    { sum+=(*p);         //--суммируем аргумент
      p++;             //--«перемещаемся на следующий аргумент
      count++;         //--считаем  количество аргументов
    }
    return ((sum)?sum/count:0);    //--вычисляем среднее
}
 
Nikita Chernyshov:

да, знаю это свойство, спасибо. Но оно подразумевает, что иконка должна находиться у пользователя. Можно ли как-то это обойти? Чтобы человек скачал только ex4 и у него отображалась моя картинка?

Прицепите картинку ресурсом.
 
Nikita Chernyshov:

да, знаю это свойство, спасибо. Но оно подразумевает, что иконка должна находиться у пользователя. Можно ли как-то это обойти? Чтобы человек скачал только ex4 и у него отображалась моя картинка?

Не подразумевает.

 
Alexey Viktorov:
Прицепите картинку ресурсом.

Для иконки не выйдет.

#property icon и так пакует иконку в ex

 
Seric29:

и кстати это мой код

ну если это Ваш код, тогда компилируйте в .dll и подключайте к MQL, работы "на 2 клика", непонятного обсуждения на три месяца
 
Artyom Trishkin:

Не подразумевает.

Спасибо, разобрался, открыли глаза.

 
Igor Makanu:
ну если это Ваш код, тогда компилируйте в .dll и подключайте к MQL, работы "на 2 клика", непонятного обсуждения на три месяца

Проблема в том что я применяю шаблоны ко всем функциям которые принимают массивы, а экспорт и импорт шаблонных функций не возможен это придётся дублировать функции под каждый тип, такая же ситуация и с размеренностью mql не хочет их отдавать просто так и опять приходится дублировать их по размеренности получается своего рода перегрузка но добавлять дополнительные аргументы не нужно тем не менее это тоже лишний код, что касается того чтобы наращивать аргументы функции то mql тоже не отдаст просто так данные придётся дублировать функции делать перегрузку, также я не решил проблему со стороны c++ о том как обрабатывать цвета и даты, также в с++ нету автономных функций которые возвращают данные о массивах и другие данные здесь придётся писать свои функции понятно что никуда не денешься и их напишешь но на это уйдёт год, также библиотеки усложнят калибровку когда приходится вызывать функцию принт и вписывать туда 20 параметров и в ручную всё сутками считать, да и само наличие библиотек будет обязывать следить за файлами за корректностью, не говоря о подводных камнях о которых я не знаю в конечном итоге учитывая всё это стоит либо решить проблему использую все полные возможности mql либо тогда делать лишние проверки и записи но код будет простой. Так что я не думаю что это того стоит, я думал написать свой язык но опять же я написал 15% своего робота и потратил более года чтобы всё откалибровать и сделать максимально универсально и обеспечить быструю производительность и 3 года на расчёты. Мне просто жизни не хватит чтобы написать свой язык. Как то так.

Причина обращения: