Estou completamente perdido - página 2

 
zortharg: Eu não estava pedindo a ninguém para produzir algo de valor comercial para mim. Não estava pedindo para alguém "codificar meu método para mim", WHRoeder. Eu só preciso de um ponto de partida.
  1. Parecia mesmo que você estava.
    zortharg: Eu estava perguntando se alguém iria escrever um.
  2. Eu lhe dei três links para começar: aprenda a codificar muitos pontos de partida.
 
zortharg:

Eu não estava pedindo a ninguém para produzir algo de valor comercial para mim. Eu não estava pedindo para alguém "codificar meu método para mim", WHRoeder. Eu só preciso de um ponto de partida. Talvez eu consiga descobrir algo a partir do link que você coloca em "procurar", embora eu realmente gostaria de ter um "osso nu" "isto é o que é necessário". Eu não sei como o programa deveria realmente ser. Eu não sei o que é estritamente necessário para estar nele. Se eu mesmo tentar fazer isso do nada, sem nenhum ponto de referência, só vou receber erros de compilação porque não vou nem mesmo saber o que está faltando.


Veja aqui
 

Estou no limiar de colocar as peças juntas. Mas eu não estou bem lá. Há coisas que não fazem nenhum sentido. Por exemplo, as coisas que não fazem sentido:

https://docs.mql4.com/array/ArrayCopySeries

Isto não faz sentido. E se o conjunto que eu declarei não for do mesmo tamanho? É basicamente garantido que NÃO será. Eu não quero sair do final da matriz para poder declarar que a matriz é maior do que eu PENSO que alguma vez será, mas e se ela for maior? E se for menor? Se o "array" tiver mais entradas do que os dados de moeda, então os restantes serão preenchidos com 0? E o que acontece com as matrizes duplamente indexadas? Por exemplo, suponha que eu declare o array como sendo do tamanho [16384][6] e os dados que eu quero copiar para [0:16383,0] sejam de comprimento 3000. Como eu faria isso? Eu precisaria de outra variável de array para definir os dados da moeda, que seria uma variável indexada individualmente (do tamanho 16384, não do tamanho 16384 x 6) e então suas primeiras 3000 entradas seriam escritas com os dados da moeda e as entradas 3000 até 16383 seriam escritas com 0, e então caberia a mim mover o conteúdo da variável temporária para o array de tamanho [16384][6]? Esse é o enigma em que estou neste momento.

 
zortharg:

Estou no limiar de colocar as peças juntas. Mas eu não estou bem lá. Há coisas que não fazem nenhum sentido. Por exemplo, as coisas que não fazem sentido:

https://docs.mql4.com/array/ArrayCopySeries

Isto não faz sentido. E se a matriz que declarei não tiver o mesmo tamanho? É basicamente garantido NÃO ser. Eu não quero sair do final da matriz para poder declarar que a matriz é maior do que eu PENSO que alguma vez será, mas e se ela for maior? E se for menor? Se o "array" tiver mais entradas do que os dados de moeda, então os restantes serão preenchidos com 0? E o que acontece com as matrizes duplamente indexadas? Por exemplo, suponha que eu declare o array como sendo do tamanho [16384][6] e os dados que eu quero copiar para [0:16383,0] sejam de comprimento 3000. Como eu faria isso? Eu precisaria de outra variável de array para definir os dados da moeda, que seria uma variável indexada individualmente (do tamanho 16384, não do tamanho 16384 x 6) e então suas primeiras 3000 entradas seriam escritas com os dados da moeda e as entradas 3000 até 16383 seriam escritas com 0, e então caberia a mim mover o conteúdo da variável temporária para o array de tamanho [16384][6]? Esse é o enigma em que estou neste momento.

Acho que você deveria ler os Docs novamente. Ele diz e eu cito "Não há alocação real de memória para a matriz de dados e nada é copiado".

Ele apenas estabelece uma Referência para que você não defina o tamanho no Array de destino. Você apenas a declara. Dê uma olhada novamente no exemplo dos documentos. Não há tamanho na declaração.

datetime daytimes[];
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 

Então tenho que baixar os preços históricos uma vez de cada vez com o iclose? https://docs.mql4.com/series/iClose O problema com isso, a meu ver, é que os dados podem ser atualizados enquanto eu estou no meio do download. Seria muito bom baixar tudo isso como um bloco. Eu acho que posso baixar o tempo com o iTime e ENTÃO usar iclose e ENTÃO usar o iTime novamente no mesmo índice e se ele mudou, então ele começou um novo intervalo de tempo de barra e eu tenho que voltar um número de índice. Estou raciocinando corretamente ou há algo que eu não entendo?

 

Não creio que estejamos falando a mesma língua. Primeiro você pergunta sobre a função ArrayCopySeries, agora você quer baixar todos os dados via iClose.

Não é necessário baixar todos os dados - eles estão sempre disponíveis a qualquer momento que você precisar.

O que você está tentando fazer?

Por que você precisa copiar todos os dados de um Array para outro array, se você já pode acessá-los totalmente a partir do primeiro?

Você está tentando passar as informações para uma DLL externa para processamento? Se sim, você deve usar a função "CopyRates" - https://www.mql5.com/en/docs/series/copyrates

Para qualquer outro caso, você não precisa fazer o download de todos os dados. Ele já está acessível através dos métodos normais.

 

Decidi reler seu primeiro post em detalhes para ver o que você está tentando realizar e percebi que você está indo TUDO ERRADO.

Você não precisa baixar todos esses dados para a RAM, como você explicou. Isso já foi feito para você pelo ambiente MetaTrader. Tudo o que você tem que fazer é acessá-lo da maneira normal.

Sugiro dar uma olhada nos muitos exemplos de EA aqui no site na base de código ou no livro introdutório sobre programação MQL4, aqui também neste site.

Leia também os vários artigos que explicam como se pode abordar a escrita de uma EA:

Assim, você pode aprender como se faz em vez de tentar "reinventar a roda".

 

Ninguém me deu um CLUE como fazer nada, eles me dizem para descobrir por mim mesmo ou pagar alguém para fazê-lo, leia os primeiros posts deste tópico e você verá isso. A audácia das pessoas neste fórum! Eles se recusam a me dizer qualquer coisa e depois zombam de mim por não saber já sobre os "métodos normais". Oh, Diga! Mas isso, suspeitosamente, não soa ideal de qualquer maneira. O que estou tentando fazer é baixar os dados do mercado de moedas na RAM do meu computador, fazer cálculos sobre isso e depois fazer com que meu computador carregue as ordens de compra e venda para negociar no mercado de moedas. Isso é o que eu quero fazer. Se não é meu computador que está fazendo os cálculos, então o que estaria fazendo os cálculos de qualquer maneira? Algum computador remoto? Não posso enviar e receber dados pela Internet toda vez que quero acessar um preço histórico, se quiser acessar esse preço 1000 vezes diferentes no processo dos cálculos, o tempo que levaria para acessar isso atrasaria os cálculos por um fator de milhares ou milhões. Esta é uma razão pela qual existe RAM na arquitetura de computadores, as leituras e gravações no disco rígido demoram muito mais tempo. É o mesmo princípio aqui, preciso armazenar os dados em uma matriz em meu computador porque fazer um pedido através da Internet toda vez que eu quero acessar uma determinada informação é ruim.

Que idéia você tem sobre o que um robô comercial deve fazer?

 
zortharg:

Ninguém me deu um CLUE como fazer nada, eles me dizem para descobrir por mim mesmo ou pagar alguém para fazê-lo, leia os primeiros posts deste tópico e você verá isso. A audácia das pessoas neste fórum! Eles se recusam a me dizer qualquer coisa e depois zombam de mim por não saber já sobre os "métodos normais". Oh, Diga! Mas isso, suspeitosamente, não soa ideal de qualquer maneira. O que estou tentando fazer é baixar os dados do mercado de moedas na RAM do meu computador, fazer cálculos sobre isso e depois fazer com que meu computador carregue as ordens de compra e venda para negociar no mercado de moedas. Isso é o que eu quero fazer. Se não é meu computador que está realizando os cálculos, então o que estaria realizando os cálculos de qualquer maneira? Algum computador remoto? Não posso enviar e receber dados pela Internet toda vez que quero acessar um preço histórico, se quiser acessar esse preço 1000 vezes diferentes no processo dos cálculos, o tempo que levaria para acessar isso atrasaria os cálculos por um fator de milhares ou milhões. Esta é uma razão pela qual existe RAM na arquitetura de computadores, as leituras e gravações no disco rígido demoram muito mais tempo. É o mesmo princípio aqui, preciso armazenar os dados em uma matriz em meu computador porque fazer um pedido através da Internet toda vez que eu quero acessar uma determinada informação é ruim.

Que idéia você tem sobre o que um robô comercial deve fazer?

Não é assim que o ambiente MetaTrader e MQL funciona! Como eu disse! NÃO descarregue novamente os dados na RAM porque isso já foi feito para você. Pare de tentar nos ensinar como codificar em MQL4. Você é quem precisa colocar de lado suas idéias preconcebidas sobre como escrever o código e primeiro aprender quais ferramentas e ambiente você tem em mãos.

Se você não quer que as pessoas SCOFF lhe façam, então não seja preguiçoso e LEIA A DOCUMENTAÇÃO (do início ao fim). Este site tem muitos links para documentação e exemplos de código.

Quando comecei, não pedi nenhuma ajuda sem antes me familiarizar com o meio ambiente. Tive tempo para ler o livro, a documentação, e os muitos, muitos, muitos exemplos neste site e aprendi como fazê-lo.

Você não é um bebê e não precisa ser alimentado com uma colher. Aprenda lendo a documentação completamente GRATUITA aqui e em muitos outros sites. Você pode até sair e comprar livros sobre como escrever um EA em MQL4 ou MQL5 (por exemplo, Expert Advisor Programming de Andrew R. Young).

Se, no entanto, você estiver procurando um professor, então isso é diferente. Você geralmente paga pelos serviços de ter um "personal trainer". Você está disposto a pagar? Estou certo de que muitos aceitariam tal pedido na seção de empregos(https://www.mql5.com/en/job).

Além disso, a primeira pessoa a comentar aqui para você foi "ubzen" e a primeira coisa que ele fez foi recomendar que você começasse lendo o "Livro de Introdução" e a "Documentação de Referência", já que você afirmou que já era um bom programador em outros idiomas. UM CONSELHO MUITO BOM!

Mais uma coisa - se você tivesse usado suas pequenas células cinza e feito uma busca aqui na seção Artigos, você teria encontrado este artigo muito antigo, mas ainda válido:

Portanto, pare de reclamar e seja preguiçoso e faça sua parte de "Pesquisa" em P&D. Você está familiarizado com isso, não está?

 
zortharg:

Ninguém me deu um CLUE como fazer nada, eles me dizem para descobrir por mim mesmo ou pagar alguém para fazê-lo, leia os primeiros posts deste tópico e você verá isso. A audácia das pessoas neste fórum! Eles se recusam a me dizer qualquer coisa e depois zombam de mim por não saber já sobre os "métodos normais". Oh, Diga! Mas isso, suspeitosamente, não soa ideal de qualquer maneira.

Por que eles deveriam ajudá-lo ? o que o faz pensar que eles têm alguma obrigação para com você ? eles são apenas Usuários iguais a você . . quem você ajudou neste Fórum ?