10. MQL5: Adicionado suporte nativo para bibliotecas .NET com função de importação "inteligente". Agora você pode usar bibliotecas .NET sem escrever embalagens especiais - MetaEditor se encarrega disso.
Não ligar para escrever em C#. Apenas que os benefícios da conversão implícita são questionáveis (imho, açúcar, não mais), ela não aumenta a rentabilidade das estratégias. Se alguém puder explicar por que isso ajuda tanto ao codificar estratégias, eu ficaria feliz em aprender algo novo.
Vasiliy Sokolov: Isso não aumenta a rentabilidade das estratégias.
Referir-se à rentabilidade das estratégias ao discutir técnicas de programação é bastante deprimente.
Vasiliy Sokolov: Se alguém puder explicar por que isso ajuda tanto na codificação - eu ficarei feliz em aprender algo novo.
Você não pode nem mesmo fazer sua própria matriz multidimensional corretamente. Muito menos uma matriz com diferentes tipos de valores. Você não pode nem mesmo fazê-lo com apenas um, porque tal código não caberia no mql:
É claro, você pode escrever d=array[5].to_double(), fingir que deve ser assim e ficar feliz com seu código feio. Mas se a sobrecarga de operações de conversão de tipo fosse permitida, quase ninguém preferiria esta forma de escrever d=arranjo[5].
é claro que você pode escrever d=array[5].to_double(), fingir que isto está correto e ficar feliz com seu código de buggy. Mas se a sobrecarga de operações de conversão de tipo fosse permitida, quase ninguém preferiria esta forma de escrever d=arranjo[5].
Simples. d=array[5] poderia:
template <typename T>
class MainArray
{
private:
T m_items[];
int m_curr;
public:
MainArray()
{
ArrayResize(m_items, 16);
m_curr = 0;
}
void Add(T item)
{
m_items[m_curr++] = item;
}
T operator[](int index)
{
return m_items[index];
}
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
MainArray<double> array;
array.Add(123.456);
double v = array[0];printf((string)v);
}
Se você ficar nerd, ainda há dificuldades com o array[3] = 4,00123; mas é legível e fino como é.
Se você ficar entediante, então há dificuldades com o array[3] = 4,00123; Mas é legível e bom o suficiente.
Sim, d=array[5] está ok. mas então você não pode fazer array[5]=d. Mas você pode fazer %= ao invés de =. sem problema, ao mesmo tempo o ícone nos lembrará o lugar por onde tudo é feito))
Sim, d=array[5] pode. mas então você não pode fazer array[5]=d. Mas você pode fazer %= ao invés de =. Sem problema, e o ícone lembrará qual o lugar a ser utilizado))
Se você realmente quer fazer isso, você pode fazer assim
#property strict#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280#define PRINT(A) ::Print(#A + " = " + (string)(A));
voidOnStart( void )
{
// Работа со стандартными типамиcolor Color = C'241,248,255';
PRINT(_R(Color)[(uchar)1]) // Green-составляющая цвета - 248_W(Color)[2] = (uchar)230; // Записали по смещению 2 значение (uchar)230.
PRINT(Color) // Убедились, что Color теперь C'241,248,230'// Работа со строкамиstring Str = "abcd";
_W(Str)[2] = "98765"; // Побайтовая запись строки в строку со смещением 2
PRINT(Str)
string StrArray[] = {"123", "45", "6789"};
_W(Str) = StrArray; // Записали в строку строковый массив
PRINT(Str)
_W(Str)[3] = (uchar)0; // В байт со смещением 3 записали ноль, тем самым отбрезав строку (длина - 3 ANSI-символа (4 байта))
PRINT(Str);
}
é claro que você pode escrever d=array[5].to_double(), fingir que é assim que deve ser e ficar feliz com seu código de buggy. Mas se a sobrecarga de operações de conversão de tipo fosse permitida, quase ninguém preferiria esta forma de escrever d=arranjo[5].
Que problemas as pessoas têm)))) Oh, abençoada seja a minha vida!
A propósito, escreverd=array[5].to_double() é muito mais fácil do qued=(double)array[5] Basta pressionar um ponto. Mas não estamos à procura de maneiras fáceis...
Até onde me lembro, C# não é bom amigo do mql
https://www.mql5.com/ru/forum/285631
10. MQL5: Adicionado suporte nativo para bibliotecas .NET com função de importação "inteligente". Agora você pode usar bibliotecas .NET sem escrever embalagens especiais - MetaEditor se encarrega disso.
Isso não aumenta a rentabilidade das estratégias.
Referir-se à rentabilidade das estratégias ao discutir técnicas de programação é bastante deprimente.
Se alguém puder explicar por que isso ajuda tanto na codificação - eu ficarei feliz em aprender algo novo.
Você não pode nem mesmo fazer sua própria matriz multidimensional corretamente. Muito menos uma matriz com diferentes tipos de valores. Você não pode nem mesmo fazê-lo com apenas um, porque tal código não caberia no mql:
É claro, você pode escrever d=array[5].to_double(), fingir que deve ser assim e ficar feliz com seu código feio. Mas se a sobrecarga de operações de conversão de tipo fosse permitida, quase ninguém preferiria esta forma de escrever d=arranjo[5].
...
é claro que você pode escrever d=array[5].to_double(), fingir que isto está correto e ficar feliz com seu código de buggy. Mas se a sobrecarga de operações de conversão de tipo fosse permitida, quase ninguém preferiria esta forma de escrever d=arranjo[5].
Simples. d=array[5] poderia:
Se você ficar nerd, ainda há dificuldades com o array[3] = 4,00123; mas é legível e fino como é.
Certo. d=array[5] está bem:
Se você ficar entediante, então há dificuldades com o array[3] = 4,00123; Mas é legível e bom o suficiente.
Sim, d=array[5] está ok. mas então você não pode fazer array[5]=d. Mas você pode fazer %= ao invés de =. sem problema, ao mesmo tempo o ícone nos lembrará o lugar por onde tudo é feito))
Sim, d=array[5] pode. mas então você não pode fazer array[5]=d. Mas você pode fazer %= ao invés de =. Sem problema, e o ícone lembrará qual o lugar a ser utilizado))
Se você realmente quer fazer isso, você pode fazer assim
etc.
No início eu também era crítico, mas depois pensei - eu mesmo encontraria um uso para isso:
Pedi um operador de parênteses e um operador de uva quente cerca de três ou quatro anos atrás.
você pergunta, talvez você possa fazer melhor.
...
é claro que você pode escrever d=array[5].to_double(), fingir que é assim que deve ser e ficar feliz com seu código de buggy. Mas se a sobrecarga de operações de conversão de tipo fosse permitida, quase ninguém preferiria esta forma de escrever d=arranjo[5].
Que problemas as pessoas têm)))) Oh, abençoada seja a minha vida!
A propósito, escreverd=array[5].to_double() é muito mais fácil do qued=(double)array[5] Basta pressionar um ponto. Mas não estamos à procura de maneiras fáceis...