Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1118

 
Artyom Trishkin:

Não há necessidade de adivinhar. Você precisa pensar e entender o que está sendo feito e com que objetivo. Quando algo precisa ser escrito e quando não precisa ser escrito.

É pensar que a impressão deve conter um cordel e qualquer valor numérico deve ser fundido a um cordel.
Mas este exemplo mostrou que o compilador está ficando lento. E como podemos não adivinhar quando o compilador pula e quando não pula.

 
Roman:

Parece que a impressão deve ser convertida em corda, portanto, qualquer valor numérico deve ser fundido em corda.
Mas este exemplo mostrou que o compilador se torna obtuso. Como não adivinhar quando o compilador pula e quando não pula.

Novamente - o código aqui - o que não está claro?

ZS. Se for sobre isso:

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

... Não o verifiquei - apenas o reescrevi no correio.

Fazer conversão funcional em string:

Print(string((uint)PeriodSeconds(PERIOD_MN1)*1000));
 

Amigos!

Estou lutando com o problema de conectar uma DLL à MQL. Estou descrevendo meu problema:

1. No início eu tentei escrever uma biblioteca .dll em C#. Descobri que a MQL4 não "come" tais bibliotecas, já que todos os métodos dentro da dll estão fechados, se escritos em C#. Comecei a procurar ativamente uma solução para o problema. Encontrei várias variantes na Internet, como a conexão da biblioteca "DLL Export", baixada da NuGet. Tentou de formas diferentes, não funcionou. Eu realmente não quero ter uma solução "frágil" para este problema, pelo princípio "funciona hoje e não amanhã". Tentei desta forma, e na verdade há muito de como funciona de outra forma:

using System.Runtime.InteropServices;
using RGiesecke.DllExport;

[DllExport("Good", CallingConvention.Cdecl)] // + заменял на просто [DllExport] - не помогает
public static string Good() {

   return "GHBBBGGDDDD !!!!! РУССКИЙ! :) " + 5.ToString();
}


2. Descobri que muito provavelmente teria que escrever uma biblioteca C++ de trabalho estável. Conectado desde a primeira vez, as consultas de teste foram realizadas sem nenhum problema. Mas quando comecei a tentar retornar uma mensagem de texto (para MQL) com um método (de DLL), encontrei um novo problema - recebi a resposta"?????‡?-" em MQL. Eu tentei decodificar a mensagem, mas não funcionou! Tentei retornar o valor através de um parâmetro de função - consegui "?". Procurei muitas coisas e ainda não encontrei uma solução. Esta é a variante em que me decidi, mas ela devolve pontos de interrogação:

extern "C" __declspec(dllexport) char* __stdcall ToString(char* &str)
{
        str = " - 889 - dsa - просто!";
        return "--- Привет! ---";
}


Estou obtendo uma resposta sob a forma de:

A decodificação não ajuda...


O que é necessário essencialmente:

1) existe uma solução real para este problema via C#? Preciso de uma solução estável e bonita! Meias-medidas, mesmo que funcionem agora, mas podem cair com uma nova construção, não é uma opção.

2) Se não houver solução C#, passe por C++. Como enviar mensagens adequadamente em ambas as direções sem perder qualidade? (MQL - DLL - MQL). Eu preciso da variante que igualmente funciona para MT4 e MT5.

 
Artyom Trishkin:

Novamente - codifique aqui - o que não está claro?

Não está claro porque são devolvidas constantes de H1 e superiores que não correspondem ao período como antes de H1

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H1=16385
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H4=16388

O mesmo é devolvido pela variável _Periodo.

 
Roman:

Não está claro porque são devolvidas constantes de H1 e superiores que não correspondem ao período como antes de H1

O mesmo é devolvido pela variável _Periodo.

 
Artyom Trishkin:

Artyom não se assusta ))
Por que para M30 são exibidos exatamente os valores de TF
1
5
30

E no H1 começa com 16385
Bem, não é lógico primeiro devolver o valor para minutos e depois para o inferno.
E não se encaixa na descrição da ajuda para _Período como um valor de retorno no tempo.

 
Roman:

Artyom não se assusta ))
Por que para M30 são exibidos exatamente os valores de TF
1
5
30

E no H1 começa com 16385
Bem, não é lógico primeiro devolver o valor para minutos e depois para o inferno.
E não se encaixa na descrição da ajuda para _Período como um valor de retorno no tempo.

Valor do cronograma. Não o número de minutos. Não o número de segundos, não o número de gansos no Baba Nyura's, mas o valor do cronograma.

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

O valor do cronograma. Não o número de minutos. Não o número de segundos, não o número de gansos no Baba Nyura's, mas o valor do cronograma.

É disto que estamos falando, que as constantes devem ser iguais aos valores do tempo!
E trazem o significado lógico e matemático da correspondência.
Porque estes valores são usados nos cálculos.

M1 = 1
M5 = 5
M30 = 30
H1 = 60
H4 = 240
D1
= 1440

Caso contrário, o significado dos valores devolvidos é perdido.
Portanto, na minha opinião, é um erro.

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 
Artyom Trishkin:

Estou surpreso que você tenha paciência para repetir tudo isso por tanto tempo e pela manhã... Embora você já esteja de manhã, depois de outra noite sem dormir)).

Pelo menos, colocá-lo em quarentena por 24 horas para ler cuidadosamente a documentação. É uma pena... Esta é a primeira vez que um tal ás em variedades da língua C diz tal disparate. E esta é a primeira vez que tudo isso foi explicado.

Imagine que isto tenha sido descoberto no Service Desk. Provavelmente eles não têm esse tipo de equilíbrio ali, por isso fecharam-no.

Razão: