[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 236

 
solnce600:
Não tenho bem a certeza do que significa a busca binária. É uma busca em uma matriz bidimensional? Mas eu tenho uma unidimensional.

Classifique a matriz, se você ainda não o fez até agora, e para controle da preparação correta no init() desimprima seu conteúdo, não todos, exceto os primeiros 20-50 elementos.

P.S. Você vê a identidade de binário e bidimensional? O terminal vê seus dígitos em código "binário" e para o trabalho correto da função ArrayBsearch(), requer uma ordenação preliminar da matriz.

 
TarasBY:

Você não vê nada lá????

Vejo que o ArrayBsearch() retorna 0 (como um índice de elementos) em TODO LADO. Na 0ª célula de sua matriz está o número 1.0408. Voltemos ao código:

Agora substitua os valores variáveis obtidos nesta condição (na proposta da carita Bid está na faixa de 0,8-0,9, vamos tomar o máximo desta faixa - 0,9): se (0,9000 - 1,0408 <= 0) OrderSend(). A condição é cumprida CORRETO!!! Procure por erros ao completar sua matriz. Você presumivelmente não prestou atenção a esta cláusula na função ArrayBsearch():

Nota: A pesquisa binária trata apenas de matrizes classificadas. A função ArraySort() é usada para ordenar uma matriz numérica.

P.S. Print não deve ser fornecido como imagem, mas por seleção simultânea de várias linhas (usando SHIFT - se você não souber como fazê-lo) desta mesma impressão (10-20 linhas é suficiente) na janela do terminal, então copie e cole as linhas selecionadas em seu posto como código com o botão SRC.

Eu entendi que o problema está na função ArrayBsearch()

Mas ainda não entendo porque esta função não deve retornar imediatamente o único item N da matriz com o valor mais próximo por valor

Por que mais deveriam participar dos cálculos o massiv[S-1] e o massiv[S+1]?

 
solnce600:

Eu entendo que o problema está na função ArrayBsearch()

Mas ainda não entendo porque esta função não deve retornar imediatamente o único item N da matriz com o valor mais próximo por valor

Por que mais o massiv[S-1] e o massiv[S+1]participam dos cálculos ?

O problema não está na função ArrayBsearch(), mas na preparação do array passado para esta função!!!

E depois é apenas um "vôo de fantasia"... Sua imaginação...

A função ArrayBsearch() retorna o UM valor, e para encontrar a causa da tortuosidade do código, eu imprimi os valores: (em ordem) o valor da célula de array com índice S (foi retornado pela função ArrayBsearch()), o valor mais próximo à esquerda no array dado (massivo[]) com índice S-1, o valor mais próximo à direita com índice S+1, preço no momento da abertura do pedido.

Você chegou à 1ª série e está tentando espreitar uma turma de formandos... Volte para sua classe!! - analogia. :))

 
TarasBY:

O problema não está na função ArrayBsearch(), mas na preparação da matriz passada para esta função!!!

E depois foi apenas um "vôo de fantasia"... Sua imaginação...

A função ArrayBsearch() retorna o UM valor, e para encontrar a causa da tortuosidade do código, eu imprimi os valores: (em ordem) o valor da célula de array com índice S (foi retornado pela função ArrayBsearch()), o valor mais próximo à esquerda no array dado (massivo[]) com índice S-1, o valor mais próximo à direita com índice S+1, e o preço no momento da abertura do pedido.

Você chegou à 1ª série e está tentando espreitar uma turma de formandos... Volte para sua classe!! - analogia. :))

Muito obrigado por sua ajuda.... Estou sempre com um pouco de pressa e me adiantando.... Acho que há mais prós do que contras a isso em geral.

A única coisa que eu ainda não entendo....

Aqui eu preciso inicializar um array com 3000 valores. E eu o fiz usando EXCEL.

Parecia-me este longo, multifásico e tedioso processo.

Existe algum algoritmo melhor para este processo?

Obrigado.

 
solnce600:

Eu o fiz usando o EXCEL.


Através do DDE ou através da Lazybones?

Escreva uma macro e automatize-a, se você tiver um histórico. Você o abre no Word com a macro escrita habilitada, o converte lá, depois o salva em csv com macro e usa DDE. Não conheço o formato dos arquivos de dados metatrader e metastock, não tenho tempo para entendê-lo eu mesmo. E se a matriz dupla[3000] com zeros, então use para, mas eles são inicializados com zeros, se não estou enganado.

 
solnce600:
Muito obrigado por sua ajuda.... Estou sempre com um pouco de pressa e me adiantando.... Acho que há mais prós do que contras para isto em geral.

A única coisa que eu não entendo é....

Preciso rubricar um conjunto de 3000 valores e o fiz usando o EXCEL.

Descobri que era um processo longo, multifásico e tedioso.

Existe algum algoritmo melhor para este processo?

Obrigado.


Favor postar o arquivo onde estão escritos os valores de inicialização...
 
gyfto:


Através do DDE ou através do Loafer?

Escreva uma macro e automatize-a, se você tiver um histórico. Abra-o em Word com a macro escrita habilitada, converta-o para Excel, salve-o como uma macro csv e use DDE. O formato dos arquivos de dados metatrader e metastock não depende de mim, não tenho tempo para descobrir. Se por zeros, então por zeros, mas os zeros são inicializados, se não estou enganado.

Obrigado, vou estudar. Acabei de ir ao Serviço - salvei o histórico de um par no arquivo EXCEL.

Divido uma única coluna com todos os dados por colunas, coloco uma vírgula após cada valor na coluna com preços de abertura - transponho-a para uma linha - ordenei - e colei no editor, ou seja

incluiu arquivo mqh.

Se você tiver referências a DDE ou Lazybear, por favor, me avise.

Obrigado.

 
solnce600:

Eu simplesmente entrei em Serviço - salvei o histórico de um casal em um arquivo EXCEL.

Divido uma única coluna com todos os dados em colunas. Na coluna com os preços de abertura, coloco uma vírgula após cada valor - transponho-a para uma linha - classifico-a - e colo-a no editor, ou seja, no

incluiu arquivo mqh.

Se houver referências a informações DDE ou Lazybear, favor dar.

Obrigado.



Você não precisa de DDE ou preguiçosos. Você só precisa de uma função (10 linhas de código). Jogue o arquivo no diretório do terminal e a matriz será inicializada... Dê-me o arquivo.
 
Dima.A.:

Você não precisa de um DDE ou de um Lazybones. Você só precisa de uma função (10 linhas de código). Jogue o arquivo no diretório do terminal e a matriz será inicializada... Dê-me o arquivo.

Preciso rubricar 2 matrizes

1,duplo

2.data/hora

No primeiro array, alguns valores após a linha 1120 por alguma razão - eles converteram para um formato diferente depois que eu mudei o sinal de separação de vírgula para ponto (eu tinha uma vírgula lá)

Se não for difícil, envie-me também estas 10 linhas de código ...... Vou estudá-las.... Quero aprender a fazer isso eu mesmo no futuro.

Muito obrigado por sua ajuda.

 
solnce600:
Estranho, o arquivo tem 140 quilos, eu o arquivei e o anexei ao post..... e ele não está lá.


Encurte o arquivo, só preciso de um par de linhas nele.