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

 
mas é assim que parece. Se o tamanho da matriz não for pré-definido, então definitivamente precisa ser ArrayResize. E no final do ArrayResize(array,0); sim, isso é inédito, nunca pensei nisso...........Uchtu....... Obrigado))))
 
Você não pode fazer um ArrayResize em todos os tick!!!!!!! Caso contrário, você ficará atolado em cálculos................... E nenhum processador multi-core salvará você........
 
O artigo "ShowCandleSize" publicado em 11.11.2013 07:54 não está sendo exibido corretamente e não pode ser editado por alguma razão desconhecida.
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.
 
artmedia70:
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.

Obrigado pelo esclarecimento!

"Todos os resultados de negócios fechados podem ser vistos no histórico da conta. Por software" - Como?
 
VladislavVG:


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.
 
Leo59:
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)

 
alsu:

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?
 
VladislavVG:


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.

"Você não pode perder sua destreza"!
Obrigado!!!!!!!!
 
VladislavVG:

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.
........

Muito obrigado. Acordei com os olhos presos, mas tão contente por ter lido tudo, obrigado novamente.
 
Leo59:


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(((.