Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 264
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Contatou o suporte em 15 de novembro com esta edição em noreply@metaquotes.net, mas não recebeu resposta.
Você pode me dizer o endereço correto para tal pergunta?
Cumprimentos.
--
Vladislav Shurkin,
Em 20 de novembro de 2013.
Todos os resultados de negócios fechados podem ser visualizados no histórico da conta. Por software. É necessário encher uma matriz com eles o tempo todo? Pode haver muitos deles. É melhor limitar a profundidade necessária da história e preencher a matriz, se você realmente não pode viver sem ela.
"Todos os resultados de negócios fechados podem ser vistos no histórico da conta. Por software" - Como?
Ao término do programa, a memória dinamicamente alocada deve ser liberada para evitar vazamentos de memória. Eu não sei se os desenvolvedores da MKL seguem isto
Eles fazem, é por isso que as matrizes são feitas estáticas, para recolhê-las em um só lugar e livres mais tarde. ArrayResize(a,0) no final do programa não faz muito sentido, nem que seja por autoconfiança.
Obrigado por seus esclarecimentos!
"Todos os resultados de negócios fechados podem ser vistos no histórico da conta. Programmaticamente" - Como?
OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)
ou
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)
ou
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
Obrigado!
O que há de bom no tutorial do Kovalev? Eu acho que é bom porque você aprende a resolver problemas simples usando exemplos simples de código de programa.
Na verdade, eu comecei a aprender programação com o código indicador de Vladislav Goshkov. Eu desenhei esse indicador com os raios de apoio e resistência da De-Mark. Havia as seguintes linhas:ObjectMove(buff_str, 1, UpBT[0], UpP[0]);
ObjectMove(buff_str, 0, UpBT[1], UpP[1]);
Coloquei-o. Olhou para ele no testador e viu como funcionava. Ela desenha raios por fractais, mas olha para o passado em vez de olhar para o futuro... )))). Eu comecei a fazer perguntas e deu certo! Respeito a Vladislav!!!!
Encontrei o livro de Kovalev mais tarde. Gostaria que mais perguntas fossem respondidas neste formato.
E mais uma coisa.
"Você quer escrever seu próprio especialista e não sabe por onde começar? Com o aparecimento dos artigos de Rosh no site da Alpari, os primeiros passos para criar um especialista podem ser facilitados e indolor.
Rosh explica os passos que cada escritor de EA percorre de uma maneira simples e acessível. Muitas das nuances da programação, cujo conhecimento vem com longa experiência, estão agora disponíveis para todos.
Passo a passo, a partir do básico, você aprenderá as complexidades da programação Forex"
Talvez você saiba em que link este artigo pode ser lido?
Porque não é uma matriz, para ser preciso. Se você quiser mais detalhes - veja descrições do C. Estou me referindo a ele, porque os desenvolvedores desde o início disseram que em tudo o que não está claro ou incompletamente apresentado - veja o padrão C.
Quando você declara variável duplo buffer[]; você aloca memória para uma variável, que em termos C é chamada de "ponteiro", tem tipo inteiro e armazena o endereço da célula de memória a partir da qual a matriz começará. Se você verificar a dimensionalidade da variável no MCL, você obtém o valor 0. Isto significa que a matriz em si não tem memória alocada e quando você tenta atribuir um valor, não há onde escrevê-lo: no MCL não há aritmética de endereço e os ponteiros não podem ser manipulados. Em C você pode escrevê-lo, mas com a memória "não alocada" geralmente leva a um colapso do sistema. Quando você aplica AreiResize(array,N), (N>0), isto aloca memória para o array (pelo menos um elemento) e cria espaço para escrever valores. Então, quando verificado, a dimensão da matriz será diferente de 0.
O conceito de matriz estática em termos de C tem vários significados:
1. uma matriz estática (assim como uma variável/tipo estática) são essas variáveis/arrays cuja dimensionalidade é conhecida na fase de compilação (pré-compilação para MKL4) . Por exemplo, quando o buff duplo[10000]; é descrito, o compilador é informado do tamanho da variável e pode imediatamente alocar memória. Em contraste com este conceito, existe o conceito de uma "matriz dinâmica", ou seja, uma matriz cujo tamanho é desconhecido em tempo de compilação e se torna conhecida apenas em tempo de execução; todas estas são matrizes de tamanho variável. Ao acessar tais arrays, a memória deve ser alocada com antecedência. A memória é alocada fora da memória estática do programa.
Em C/C++, se um array é descrito em um bloco, sua visibilidade é limitada pelo bloco - seja ele um array estático ou um array dinâmico. Erros em programas como "vazamentos de memória" estão associados a matrizes dinâmicas definidas localmente, ou seja, quando um ponteiro de memória é destruído porque deixa o escopo, mas a memória alocada a ele permanece ocupada.
2 O conceito de matriz "estática" como uma variável descrita com modificador estático - tais variáveis não são destruídas ao sair do escopo do bloco - elas estão localizadas em uma área de memória separada - daí os valores nelas contidos serem preservados. O risco de vazamentos de memória é reduzido. Um array declarado como dinâmico no sentido da p.1 (ou seja, o tamanho do array não é conhecido no estágio de compilação), também pode ser estático no sentido da p.2, ou seja, declarado com o modificador "estático".
Ao encerrar programas, a memória dinamicamente alocada deve ser liberada para evitar vazamentos de memória. Não sei se os desenvolvedores da MKL seguem isto, mas em meus programas eu sempre libero a memória - hábito da C - ArreyResize(array,0);
Na MKL todas as matrizes são estáticas no sentido do ponto 2.
Agora em relação à sua pergunta: "Por que uma matriz estáticanão pode ser duplamente tampão[]; ser atribuído valores? ".Porque nenhuma memória é alocada para ela (na verdade, é uma matriz dinâmica com um modificador estático). Antes de atribuir valores, a memória deve ser alocada, ou seja, o ArrayResize com tamanho maior que 0 deve ser aplicado a esta matriz. Para arrays, você precisa controlar a sobrecarga de memória (fora da matriz).
SZ Espero ter me feito entender. Tentei tornar isto o mais simples possível.
Obrigado!!!!!!!!
Porque não é uma matriz, para ser preciso. Se você quiser mais detalhes, veja as descrições da linguagem C. Estou me referindo a ela porque os desenvolvedores disseram desde o início que para qualquer coisa que não esteja clara ou incompleta, veja o padrão C.
........
Você conhece, talvez, um link onde este artigo possa ser lido?
https://www.mql5.com/ru/articles/mt4
Ah não, ele não abre mais(((.