Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 939

 
Nikita Chernyshov:

La cuestión es puramente estética.

¿Cómo hago para que haya una imagen propia aquí? MT4



#property icon
 
Artyom Trishkin:

Sí, conozco esa propiedad, gracias. Pero implica que el icono tiene que estar en el usuario. ¿Hay alguna forma de evitarlo? ¿Para que la persona sólo descargue ex4 y se le muestre mi imagen?

 
Koldun Zloy:

Si tienes celdas de array específicas asignadas a cada tipo, entonces haz una estructura en lugar de un array.

Pensé en hacer eso, pero perdí el enlace donde la persona ponía los elementos de la estructura en el array estructurado. Declaró una estructura y luego creó un array y debajo de cada número se almacenaba el tipo int string double, pero ahí tenía un array con un solo elemento diferente en cada celda, así que pensé que aquí también era posible, pero al parecer no.

 
Igor Makanu:

¿Qué se ha recortado exactamente?

#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;
}

En este ejemplo he pasado un array de 2 dimensiones y otro de 1 dimensión a la función, y por cierto este es mi código.

Este es otro ejemplo de lo que mql4 no puede hacer.

#include <iostream>
#include <variant>
 
using double_bool_int = std::variant<double, bool, int>;
 
int main()
{
    const size_t len = 15 u;
    double_bool_int* arr = new double_bool_int[len];
 
    {
        size_t idx = 0 u;
        for (; idx < 5 u; ++idx)
            arr[idx] = static_cast<double>(0.5 * idx);
        for (; idx < 10 u; ++idx)
            arr[idx] = static_cast<bool>(idx & 1 u);
        for (; idx < 15 u; ++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;
}

Cuál de estos puede mql4 o aquí hay un ejemplo

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:

Sí, conozco esa propiedad, gracias. Pero implica que el icono debe estar en el usuario. ¿Hay alguna forma de evitarlo? ¿Para que la persona sólo descargue ex4 y se le muestre mi imagen?

Adjunta la imagen con un recurso.
 
Nikita Chernyshov:

Sí, conozco esa propiedad, gracias. Pero implica que el icono tiene que estar en el usuario. ¿Hay alguna forma de evitarlo? ¿Para que la persona sólo descargue ex4 y se le muestre mi imagen?

No es así.

 
Alexey Viktorov:
Adjunta una imagen con un recurso.

Para un icono, no funcionará.

#Icono de la propiedad ya empaqueta el icono en ex

 
Seric29:

y por cierto, ese es mi código.

Bueno, si es tu código, entonces compílalo en un .dll y conéctalo a MQL, dos clics de trabajo, tres meses de discusión incomprensible
 
Artyom Trishkin:

No implica.

Gracias, lo he descubierto, ha sido una revelación.

 
Igor Makanu:
Si este es tu código, compílalo en un .dll y conéctalo a MQL, los "dos clics" y la discusión incomprensible te llevarán tres meses.

El problema es que aplico plantillas a todas las funciones que toman arrays, y la exportación e importación de funciones de plantillas no es posible habrá que duplicar las funciones para cada tipo, la misma situación con la dimensionalidad mql no quiere darlas sin más y de nuevo tengo que duplicarlas por dimensionalidad resulta una especie de sobrecarga pero añadir argumentos adicionales no es necesario sin embargo esto también es código excesivo, en cuanto a aumentar los argumentos de las funciones mql tampoco dará sólo los datos tengo que duplicar las funciones hacer sobrecarga Así que no creo que merezca la pena, pensé en escribir mi propio lenguaje pero entonces escribí el 15% de mi robot y pasé más de un año para calibrar todo y hacerlo lo más universal posible y proporcionar un rendimiento rápido y 3 años para los cálculos. No tengo suficiente vida para escribir mi propio lenguaje. Así que ahí tienes.