Discussão sobre "Como escrever uma DLL para MQL5 e trocar dados em 10 minutos". - página 2

 
Ainda não testei uma coisa com a passagem de cordas para dll em MQL5

Tenho notado este problema com a passagem de cordas em MQL4-DLL. No código MQL4 eu chamo a função em DLL e passo a cadeia:

#import "MyDll.dll"
 void passSymbol(string symb);






void start() {

    passSymbol(Symbol());

}

e em dll recebo esta string com um nome de ferramenta.

_DLLAPI int __stdcall passSymbol(char* symbol) {
   указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.
}


Num determinado momento, num determinado tick (pode correr bem durante meio dia), o dll recebe subitamente uma cadeia à esquerda com caracteres pouco claros em vez do nome do símbolo.
Talvez possa verificar um código semelhante em mql5? O ponteiro de memória parece estar incorrecto na MQL4 ou por vezes existe um conflito de acesso às linhas de fluxo dentro do terminal.

As arrays duplas e variáveis int passam correctamente sem qualquer problema.

Escreverei um teste para MQL5-DLL, mas se também estiver a testar estas coisas, escreva um teste para verificar a estabilidade da passagem de string para dll, repetindo o processo em cada tick durante um longo período de tempo.

 
GarF1eld:

Se é possível exportar citações apenas através da dll, então significa que deve ser colocado um script em cada instrumento a ser exportado? E se houver muitos deles? Por exemplo, 50?

Compreendo que é possível passar citações para muitos instrumentos num único guião, mas não será um verdadeiro substituto do DDE, onde as carraças não se perdem.

Renat:

A questão é que não temos a tarefa de "fornecer a interface para dar citações".

A nossa tarefa é a de criar um ambiente completo e auto-suficiente para o desenvolvimento de sistemas analíticos. Um tal ambiente para que mesmo programas de terceiros não precisassem de ser utilizados.

A resposta é certamente interessante. O tema "Como escrever uma DLL para MQL5 e trocar dados em 10 minutos" vale para ver este artigo "Transferência de dados entre indicadores - uma solução simples de um problema doloroso " e compará-lo com o problema acima mencionado (em itálico).
 
Renat:

A questão é que não estamos incumbidos de "fornecer uma interface para a emissão de orçamentos".

A nossa tarefa é a de criar um ambiente completo e auto-suficiente para o desenvolvimento de sistemas analíticos. Um ambiente deste tipo, de modo que mesmo os programas de terceiros não têm muita necessidade de ser utilizados.


O GUI é muito fraco - foram necessários 2 dias para escrever a lógica, e foi necessário um dia inteiro para exibir a informação calculada de qualquer forma

Como resultado, desabilitei tudo - construí o transporte de dados(https://www.mql5.com/ru/forum/382) e estou feliz agora.

Os programadores não estão a colocar a sua mira demasiado alta?

E porquê reinventar a roda, se tudo já foi feito há muito tempo (C, Delphi, ...)?

 
yu-sha:

O GUI é muito fraco - levei 2 dias a escrever a lógica, e levei um dia inteiro a exibir a informação calculada de qualquer forma

No final desisti de tudo - construí o transporte de dados(https://www.mql5.com/ru/forum/382) e estou a desfrutar da minha vida

Os programadores não estão a colocar a sua mira demasiado alta?

E porquê reinventar a roda quando tudo já foi feito há muito tempo (C, Delphi, ...)?

IMHO o problema com o MT5 começou com o seu início: a falta de uma visão clara do que este produto supostamente vai resolver. Ou é uma plataforma actualizada e baseada no MT4 mas elevada a uma nova versão em termos de velocidade e funções alargadas, ou é uma nova plataforma de negociação moderna com uma estrutura bem pensada e extensiva (isto é, contendo classes de negócio, ou estrutura de negociação, para executar classes específicas de tarefas claramente definidas, e baseada em alguma linguagem de programação/ambiente moderno com a sua funcionalidade geral e ferramentas de suporte de software amplamente disponíveis). Para resolver este dilema através da tentativa de combinar opostos, fabricando uma espécie de compota, por assim dizer, pelo método de "improviso dos solistas mais talentosos", parece que não foi bem sucedido.

Se parecer a alguém puro lixo sem sombra de construtivo, pela segunda vez conduzir a um balneário, ou abatê-lo de vez :)

 

2pisara

Chegar à raiz da questão.

O MQL é mais para comerciantes com pouca capacidade de programação. A la Basic para manequins.

Não tenho nada contra tal posição - obrigado por isso também.

Mas o posicionamento da MQL5 como"um ambiente completo e auto-suficiente para o desenvolvimento de sistemas analíticos".Este é o tipo de ambiente onde mesmo programas de terceiros não precisam de ser aplicados."Este é um pedido sério. Serão necessários anos de trabalho, não só de entusiastas individuais, mas também de uma equipa de programadores profissionais sob a direcção de um bom arquitecto para "atar" o núcleo com algum conjunto de sopa digerível. Não posso dizer nada sobre orçamento e gestão - esse é outro nível do projecto.

Quero apoiar os empregados da empresa no seu trabalho árduo. Quero dizer obrigado pelo seu trabalho árduo. Mas sejamos realistas - a MQL5 é apenas uma etapa para atingir o objectivo.

P.S. Moscovo não foi construída num dia

 
Sim, é assustador pensar ou recordar quantas coisas desnecessárias cada um de nós tem feito, está a fazer e continuará a fazer!
 
Renat:

É muito fácil verificar a velocidade da chamada. Por exemplo, pode calculá-lo aproximadamente desta forma:

Recebi 57.000 chamadas por segundo num Quad Q9400 @2,66Ghz. O mesmo código dá cerca de 20.000.000 de chamadas por segundo no MetaTrader 4, uma vez que não há controlo e tubagem.

Tentaremos definitivamente reduzir a perda nas chamadas DLL no MetaTrader 5.

Seria bom fazer uma directiva especial ao compilador que é activada por defeito e que insere estes invólucros nas chamadas DLL. Quando desactivado, é uma boa ideia não inserir estes invólucros. Como o modo de depuração e de libertação. Ainda assim, por vezes 57K não é suficiente. O mesmo tempo é consumido pelo tempo de execução da dll.
 
HideYourRichess:
É uma boa ideia fazer uma directiva especial de compilação que está ligada por defeito e que insere estes invólucros nas chamadas dll. Quando desactivado, é uma boa ideia não inserir estes invólucros. Como o modo de depuração e de libertação. Ainda assim, por vezes 57K não é suficiente. O mesmo tempo é consumido pelo tempo de execução da dll.
A construção de 240 simplificou as embalagens, agora a taxa de chamadas é de 19.911.000 chamadas por segundo.
 
Sobre a discussão MQL / MQL2 / MQL4 / MQL5: aparentemente, não conhece muito bem a nossa história. Pelo menos vá ao website da empresa e leia-o.


Criámos metodicamente 4 gerações de línguas comerciais desde 2001 com uma enorme comunidade de comerciantes. Os concorrentes estavam a morrer, as suas linguagens de controlo não se desenvolveram, enquanto nós temos trabalhado, estamos a trabalhar e continuaremos a trabalhar.

 

Renat: 

e temos trabalhado, estamos a trabalhar e vamos continuar a trabalhar.

Como legou o Grande Avô Lenine.

;)

Não me lembro, acho que já perguntei antes...
É possível criar dlls simples usando ferramentas mcl5,
basta escrevê-lo em unitor e compilá-lo...?