MetaTrader 4 Build 529 beta lançado com novo compilador - página 27

 
Barbarian:

Você provavelmente não leu meu post acima onde descrevi o que está sendo escrito agora usando as versões beta do MT4. Em nix todos trabalham completamente em suas próprias caixas de areia, somente o usuário root coloca programas comuns e distribui direitos para seu uso por outros usuários. A ideologia é completamente diferente ali, embora pareça similar à da Microsoft. A propósito, eu não me importo que a versão beta escreva as configurações do usuário em X:\Users\xxx\AppData\Roaming\MetaQuotes\Terminal\Terminal, eu me importo com o seguinte:

1. Que ele cria um subdiretório X:\Users\xxxAppData\Roaming\MetaQuotes\Terminal\B5589D10299052C8D921603EBD1F9752\ que até chegar lá você não saberá seu nome, além disso, ele muda seu nome a cada atualização.

2. Este caminho é usado não apenas para escrever as configurações do usuário, mas também para arquivos executáveis - indicadores, Expert Advisors, scripts, etc., em geral, todas as coisas para as quais você não deixará um estranho em seu PC, mesmo com um nome de usuário diferente. Embora isto, é claro, possa ser evitado mais tarde, mas a que preço.

Tenho mais medo do primeiro item, porque usando a leitura/escrita em arquivos, o código para usar estas operações se tornará mais complicado.


Eu o li. Concordo plenamente com você. O que eu escrevi - não seria uma má idéia configurar o caminho no terminal. Às vezes é útil compartilhar configurações, arquivos, EAs... Às vezes não.
 
Antonsan:

Eu escrevo em espanhol. E eu traduzo com o Google.

A tradução para o inglês é igualmente ruim, que a tradução para o russo.

Este indicador está preparado para a EA e desenha apenas algumas barras.
Alterando o cronograma, observei que às vezes o indicador é freqüentemente repetido na tela.
Às vezes parece correr várias vezes e traçar a linha corretamente, outras vezes parece que são cópias idênticas arranjadas na história.

Isto teve três cópias idênticas na história, mas para reduzir a captura de tela, só viu duas.

Ocorre quando o histórico de downloads de terminais de outras TF.

Você deve limpar todo o buffer após a inicialização do indicador. Ou desenhar todas as barras.

 
ALXIMIKS:


Eu descrevi minha idéia (mudar o gráfico inserindo o presente no passado, ao mesmo tempo inventando o futuro), se não estiver muito claro, então, infelizmente, ........

Eu ficaria feliz se você pudesse sugerir outra maneira de desenhar o que é necessário nas barras de menos com valores adequados nas barras de mais.

O que colocar onde não é importante. O que é importante é o que deve ser desenhado como resultado.

Se você precisa de uma fatia do passado e do futuro, você precisa de um buffer e SetIndexShift para o número necessário de barras no futuro (ele é emprestado do passado).

Se apenas o futuro for necessário - novamente um buffer, SetIndexShift( barras ), e preencher apenas valores de "barras".

E se você precisar do passado completamente (as barras críticas, mesmo as mais esquerdas, devem ser preenchidas) e de uma parte do futuro, então 2 amortecedores, cada um para seu próprio passado.

Em geral, eu não vejo o problema.

 

Agora o bug que os parâmetros externos declarados como string estavam perdendo valores são corrigidos. Obrigado

O próximo problema é com as chamadas iCustom(). Se o indicador chamado contém parâmetros de string, o seguinte erro está acontecendo:


Código para "_master" :

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave","",0,0);
   Comment(firstBuffer[0]);
   return(0);
}

Código para "_escravo" :

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

Erro diferente acontece quando o parâmetro não é um tipo de string

Quando é declarado como inteiro, ele recarrega a instância "_escravo" repetidamente (como no caso em que o tipo de parâmetro está errado)

Código para "_master integer" (usando um parâmetro do tipo integer em iCustom() call :

#property indicator_chart_window
#property indicator_buffers 1

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave integer",(int)0,0,0);
   Comment(firstBuffer[0]);
   return(0);
}

E o código para "_slave integer" :

#property indicator_chart_window
#property indicator_buffers 1

extern int dummy = 0;

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

Quando o parâmetro no indicador chamado é declarado como duplo então ele funciona OK

 

Acho que deve haver algum problema com o terminal, que não apaga a memória de dados corretamente, ou qualquer outro problema que você não conheça.

Se estas situações podem acontecer a um especialista, certamente receberão dados errôneos.

Isto é mais como um programa de desenho para árvores de Natal.

 
mladen:

Quando o parâmetro no indicador chamado é declarado como duplo então ele funciona OK


Vamos verificar o quanto antes. Obrigado
 
Antonsan:

Eu escrevo em espanhol. E eu traduzo com o Google.

A tradução para o inglês é igualmente ruim, que a tradução para o russo.

Este indicador está preparado para a EA e desenha apenas algumas barras.
Alterando o cronograma, observei que às vezes o indicador é freqüentemente repetido na tela.
Às vezes parece correr várias vezes e traçar a linha corretamente, outras vezes parece que são cópias idênticas arranjadas na história.

Isto teve três cópias idênticas na história, mas para reduzir a captura de tela, só viu duas.

Hola! Escriba en el español! Se lo traduciré al ruso! Suerte!
 
Antonsan:

Acho que deve haver algum problema com o terminal, que não apaga a memória de dados corretamente, ou qualquer outro problema que você não conheça.

Se estas situações podem acontecer a um especialista, certamente receberão dados errôneos.

Isto é mais como um programa de desenho para árvores de Natal.

O terminal não deve limpar seus amortecedores. Basta inicializá-los uma vez após o lançamento do indicador.
 
stringo:

Correção

Também corrigiu os itens 1 e 2

Ponto 3, estamos trabalhando no depurador.

Para os pontos 4 e 5, precisamos saber como reproduzir. Passo a passo. Não é reprodutível na mosca.

Obrigado pelo feedback. Código enviado para Servicedesk, #880536.
 

Erro de documentação:

data/hora iVolume

deve ser

duplo iVolume