新人对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;
}

在这个例子中,我把一个二维数组和一个一维数组传入函数,顺便说一下,这是我的代码。

这是另一个例子,说明mql4不能做什么。

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

其中有哪些可以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,两下子的工作,三个月的不可理解的讨论
 
Artyom Trishkin:

并不意味着。

谢谢,想明白了,真是大开眼界。

 
Igor Makanu:
好吧,如果这是你的代码,然后把它编译成一个.dll,并把它连接到MQL,"两次点击 "的工作,不可理解的讨论了三个月

问题是,我把模板应用于所有接受数组的函数,模板函数的导出和导入是不可能的,它将不得不为每个类型的函数进行复制,同样的情况,对于维度,Mql不想给它们就像这样,我不得不再次按维度进行复制,结果是一种重载,但添加额外的参数是不必要的,然而这也是过度的代码,至于增加函数参数,Mql也不会只给数据,我必须重复函数做重载。所以我认为这不值得,我想过写自己的语言,但我又写了15%的机器人,并花了一年多的时间来校准一切,使其尽可能的通用,并提供快速的性能,并花了3年时间来计算。我只是没有足够的生命来写我自己的语言。所以,你去那里。