Estou completamente perdido - página 3

 
FMIC, há COISAS nessa documentação que não fazem sentido. Quem quer que tenha escrito isso claramente estava escrevendo para um público que nunca tinha sequer escrito um programa em gwbasic ou pseudocódigo e muito menos exposto a conceitos de programação de nível superior. Ou pelo menos a intenção do autor era que fosse compreensível para tais pessoas, não necessariamente que fosse dirigido exclusivamente a tais pessoas. Estou inclinado a saltar as partes sobre declarações de se/else e para loops e o que é uma variável, pelo amor de Deus, então não, não a leio começando a terminar. YET quando eu pulo essas partes, nas próximas seções, o autor não conseguiu ver com sucesso da perspectiva de um iniciante relativo porque aparece alguém como eu que tem alguma experiência limitada de programação e as peças ainda não se encaixam quando chega a um certo ponto na literatura. Aqui está outro exemplo. O tipo de dados de data e hora. Eu vou aqui: http://msdn.microsoft.com/en-us/library/system.datetime_members%28v=VS.90%29.aspx e vejo que as variáveis de data/hora são, por padrão, muito mais complicadas do que o que diz esta documentação. Por exemplo, ela contém informações sobre o MILLISECONDS. Pode ser em qualquer ano até AD 9999. No entanto, esta documentação SUGERE que ela é diferente, mas não entra em detalhes suficientes. Talvez não seja a variável de data padrão C++, mas algo específico da MQL4 então? O número de segundos desde o início de 1970, válido até o final de 2037. Agora, acontece que há quase 2^31 segundos nesse intervalo de tempo. Isso sugere que é um número inteiro longo assinado - já que um número inteiro longo não assinado chegaria de fato ao século 22 a partir de 1970. Posso realmente utilizá-lo em operações aritméticas como se fosse um inteiro longo e assinado? Não diz. É ambíguo. É uma variável glorificada como uma corda, apenas com certas restrições sobre o que a corda pode ser. Também mostra algumas maneiras incompletas de utilizá-la. Mas não é suficientemente explícita sobre todas as formas em que pode ser acessada ou manipulada. Posso simplesmente usá-la em aritmética inteira junto com a ints? Se eu ler o índice de tempo de uma amostra, posso apenas subtrair um de um gráfico de 1 minuto de outro gráfico de 1 minuto e, se forem minutos consecutivos, esperar que difiram em 60 (possivelmente mais ou menos 1)?

Havia aquela outra coisa com a qual eu já tinha um problema - a descrição do ArrayCopySeries é ambígua. Ela sugere em partes que a array[] está escrita em algumas partes, mas em outras, sugere que não está. E eu olho para ela e não entendo absolutamente o propósito da função se ela NÃO copia os dados da moeda para o array.

Aqui está outra coisa que eu gostaria de saber. Ele diz que um EA pode ter 3 funções principais. init, deinit e start. init é executado uma vez quando é executado pela primeira vez, start é executado sempre que há um novo tick, e não diz nada sobre o deinit. O exemplo aqui https://book.mql4.com/samples/expert não tem nem mesmo um init. Ele tem um init. Tem algumas coisas complicadas para aparentemente lidar com erros como Fun_Error seja lá o que for que isso faz. Não tem init. E quanto às variáveis. As variáveis definidas dentro do init ainda são válidas quando ele é feito e quando "start" é executado? Ou elas devem ser declaradas fora de ambas as variáveis? As variáveis são declaradas dentro do start sempre que o start é executado novamente? As variáveis são declaradas fora dela? Espero que não! Não tenho nem mesmo certeza se estou autorizado a ALTERAR as variáveis que são declaradas fora de qualquer função. Elas parecem ser todas variáveis estáticas globais, pelo que vi.

A propósito, são símbolos de moeda usados em funções como o iTime, supostamente entre aspas simples ou duplas. "USDCHF" ou "USDCHF". Mil pequenas coisas como esta. Qualquer uma delas com certeza não será compilada quando eu chegar ao fim. E com milhares de pequenas coisas diferentes e erradas, haverá debugging.

RaptorUK oh de COURSE você não tem nenhuma obrigação de me ajudar. E se a sua idéia de um bom momento é andar à caça de pessoas nos fóruns, zombando delas por estarem em um fórum pedindo ajuda quando o objetivo de ir a qualquer fórum é, LIMPENTE, em primeiro lugar, andar à caça de pessoas, então eu vejo que você está realmente se divertindo e cumprindo o que você acredita ser o papel correto de um usuário do fórum. Quanto a mim, se eu fosse QUALIFICADO para ajudar qualquer pessoa, respondendo a uma pergunta que eu pudesse responder, eu hipoteticamente poderia estar disposto a fazer isso. Sei muito sobre matemática arcana, não tanto sobre programação. Por exemplo, se você tivesse uma dúzia de indicadores que não fossem estatisticamente independentes, sei como combiná-los de forma otimizada em um indicador composto de forma a compensar o fato de que eles são estatisticamente dependentes. É claro que eu certamente não vou ajudar VOCÊ com nada agora. Por Deus, se eu o visse com o pé preso nos trilhos da ferrovia, eu diria: "Eu deveria ajudá-lo, mas o que eu ganho com isso?".

 
zortharg:
FMIC, há COISAS nessa documentação que não QUITAM que fazem sentido. ...

Não tive dificuldade para ler todo o livro do começo ao fim, apesar de ser bem versado em idiomas de Alto Nível e de Baixo Nível.

Tenho 45 anos de idade e sou desenvolvedor de software por profissão desde 1986, tendo também um B.Sc em Engenharia (Eletrônica de Baixa Corrente). Sou proficiente em C, C++, C#, Pascal, Cobol, Fortran, Perl e muitos outros que já desapareceram há muito tempo. Também sou bem versado em programação Assembler para x86, Z-80, Pics e muitas outras arquiteturas. Mais uma vez, digo, que não tive dificuldade para ler e aprender MQL4.

Portanto, tudo o que posso concluir é que sua atitude de alto e poderoso criticar a documentação, ao invés de se concentrar no objetivo real de aprender MQL, só pode significar uma coisa - você é na verdade mais estúpido do que os não-programadores para os quais a documentação foi escrita.

Se você acha que MetaTrader e MQL são tão inferiores a você, então por que você está aqui? Sério! Por quê?

Existem muitas outras aplicações comerciais e sistemas algorítmicos por aí. Escolha um e vá incomodá-los!

A propósito, o "RaptorUK" é um MODERADOR no fórum. VOCÊ É O TROLL aqui!

Este é o meu último post neste tópico! Você não vale a pena o esforço.

 
zortharg:

RaptorUK oh de COURSE você não tem nenhuma obrigação de me ajudar. E se a sua idéia de um bom momento é andar à caça de pessoas nos fóruns, zombando delas por estarem em um fórum pedindo ajuda quando o propósito de ir a qualquer fórum é, em primeiro lugar, enganar as pessoas, então vejo que você está realmente se divertindo e cumprindo o que você acredita ser o papel correto de um usuário do fórum. Quanto a mim, se eu fosse QUALIFICADO para ajudar qualquer pessoa, respondendo a uma pergunta que eu pudesse responder, eu hipoteticamente poderia estar disposto a fazer isso. Sei muito sobre matemática arcana, não tanto sobre programação. Por exemplo, se você tivesse uma dúzia de indicadores que não fossem estatisticamente independentes, sei como combiná-los de forma otimizada em um indicador composto de forma a compensar o fato de que eles são estatisticamente dependentes. É claro que eu certamente não vou ajudar VOCÊ com nada agora. Por Deus, se eu o visse com o pé preso nos trilhos da ferrovia, eu diria: "Eu deveria ajudá-lo, mas o que eu ganho com isso?".

Talvez você devesse explicar este seu comentário?

A audácia do povo neste fórum!


Muitas pessoas neste fórum desistem de seu tempo livre para tentar ajudar. . e você vem junto e espera ser ajudado como se fosse um direito! Eu acho que todos ficariam felizes em ajudá-lo até que você demonstre sua atitude . . . você deve mostrar um pouco de humildade ao pedir ajuda.

Você pode me rotular como quiser, eu realmente não me importo, eu sei porque estou aqui e algumas pessoas até me agradecem por tentar ajudar... . . Acho que isso está além de você.

 
zortharg:

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?


Por que uma função chamada ArrayCopySeries() exigiria que você mesmo copiasse a série?

Você declara a matriz, mas não precisa especificar o tamanho.

Quando você acessa o array, o mql faz "mágica" e (esperançosamente) o valor correto aparece no lugar certo.

Há um exemplo na página.

Dito isto, a documentação on-line está fora de sincronia no momento, portanto use a Ajuda no metaeditor como sua referência principal.

Olhe para o exemplo até que faça sentido!

 
zortharg:
O tipo de dados de data e hora. Eu vou aqui: http://msdn.microsoft.com/en-us/library/system.datetime_members%28v=VS.90%29.aspx e vejo que as variáveis de data/hora são, por padrão, muito mais complicadas do que o que diz esta documentação. Por exemplo, ela contém informações sobre o MILLISECONDS. Pode ser em qualquer ano até AD 9999. No entanto, esta documentação SUGERE que ela é diferente, mas não entra em detalhes suficientes. Talvez não seja a variável de data padrão C++, mas algo específico da MQL4 então? O número de segundos desde o início de 1970, válido até o final de 2037. Agora, acontece que há quase 2^31 segundos nesse intervalo de tempo. Isso sugere que é um número inteiro longo assinado - já que um número inteiro longo não assinado chegaria de fato ao século 22 a partir de 1970. Posso realmente utilizá-lo em operações aritméticas como se fosse um inteiro longo e assinado? Não diz. É ambíguo. É uma variável glorificada como uma corda, apenas com certas restrições sobre o que a corda pode ser. Também mostra algumas maneiras incompletas de utilizá-la. Mas não é suficientemente explícita sobre todas as formas em que pode ser acessada ou manipulada. Posso simplesmente usá-la em aritmética inteira junto com a ints? Se eu ler o índice de tempo de uma amostra, posso apenas subtrair um de um gráfico de 1 minuto de outro gráfico de 1 minuto e, se forem minutos consecutivos, esperar que difiram em 60 (possivelmente mais ou menos 1)?

Por que tantas palavras para pedir uma coisa simples :)

Antiga MQL: https://docs.mql4.com/dateandtime Um grupo de funções que fornece os dados de trabalho do tipo data/hora(número inteiro representando a quantidade de segundos decorridos a partir da meia-noite de 1 de janeiro de 1970).

Nova MQL: https://www.mql5.com/en/docs/basis/types/integer/datetime - O tipo dedata/hora é destinado ao armazenamento da data e hora como o número de segundos transcorridos desde 01 de janeiro de 1970. Este tipo ocupa 8 bytes de memória.

A maioria dos idiomas que usavam o antigo integer de 32 bits para armazenar o tempo, mudaram para 64 bits, para evitar a ruína quando o ano 2038 chegar.

Basta adicionar e subtrair, como você imagina. Mas mantenha-o como um datatype de data e evite a tentação de armazenar em uma variável longa .

 

OBRIGADO ydrol!

Hmmmmm. Eu não sei se a transmissão_estática existe mesmo em mql4, mas posso usar qualquer operação aritmética regular em datas, desde que eu guarde o resultado em outra data? Como se X[] fosse um conjunto de datas e eu quisesse trabalhar com o número de minutos, eu poderia tomar Y=(X[17]+30)/60, desde que Y seja uma data e não um tempo longo? Não é? Ou melhor, eu talvez levaria Y=(X[17]-X[16]+30)/60 porque seria ruim se X[17] fosse 29 mod 60 e X[16] fosse 30 mod 60, pensaria que eles estariam 2 minutos separados se eu o fizesse da primeira maneira.

Oh cara, o código que eu fiz até agora já é tão longo, e tudo o que é feito é ler nos dados e agora eu tenho que compensar os minutos de pulo de dados (ou o fim de semana inteiro!), deslocando mais os dados e interpolando, eu me pergunto quais são as chances deste peru funcionar quando eu terminar com ele, ha ha ha. Tudo a partir de um programa matlab que mostra que finalmente tenho um método comercial que pode vencer a propagação/comissão, mas colocá-lo na prática real é outra coisa.

A todos que não são ydrol, ok, estou declarando vocês os vencedores de seus respectivos concursos de p***ing, então parabéns e como vocês ganharam, vocês podem parar de postar neste tópico agora.

 

Hmmmmm. I don't know if static_cast even exists in mql4, but can I just use any regular arithmetic operations on datetimes then, so long as I save the result in another datetime?

Se o resultado de sua aritmética ainda for um ponto no tempo (ou seja, ainda um valor que é um número de segundos desde 1970), então mantenha-o como uma data, caso contrário você pode lançá-lo para um longo ou int. (Você não tem que fazê-lo, mas evitará confusão mais tarde)

Não ajuda a antagonizar a todos, basta mudar a abordagem para obter a ajuda que você deseja :)

 

Bem, depois de escrever algum código, de fato me parece muito difícil evitar salvar resultados aritméticos com datas e horas como entradas em pontos. Mas estática_cast<long> funcionaria teoricamente como funcionaria em C++? Eu não vejo nenhuma menção nos documentos.

Ah, a propósito, fuso horário. É UTC? Esse livro continua a dizer o número de segundos desde 1 de janeiro de 1970 às 0:00. Eu poderia assumir que é UTC como a hora UNIX, exceto que já estabelecemos que existem pelo menos algumas discrepâncias entre as variáveis "datetime" aqui e o que C++ usa (sem milissegundos, por exemplo) - que reconhecidamente não é hora UNIX, mas é chamada de "datetime", no entanto - então só porque se assemelha superficialmente à hora UNIX por causa do início de 1970, eu não deveria assumir que é isso que é. É necessariamente UTC ou é possível que cada corretor possa ter seu próprio offset baseado em seu próprio fuso horário e que eu precise tê-lo no código para que ele descubra onde está o início da semana, modulo 10080 minutos, com base nos dados? A questão é saber o tempo em que o modulo 10080 inicia e termina as negociações, já que o mercado só está aberto 7200 desses 10080 minutos, para que ele possa reduzir as posições à medida que o fim de semana se aproxima, e não começar a pleno vapor logo no início ou MUITO pior, para tomar decisões drásticas de negociação baseadas em descontinuidades nos preços entre o final de uma semana e o início da próxima, ou até mesmo para não ter conhecimento de hiatos ao determinar informações como volatilidade - que eu defino como sendo a mudança média quadrática no preço após 1 minuto - e então eu adiciono 1/4 vezes a mudança média quadrática no preço após 2 minutos e 1/9 vezes a mudança média quadrática no preço após 3 e 1/16 vezes a mudança média quadrática no preço após 4 e então multiplique tudo por 1/(1+1/2+1/3+1/4)=0.48.

O que posso dizer, entrei pedindo ajuda e eles foram desagradáveis e antagônicos para mim desde o início. Se alguém pede ajuda, o que eu faço é ou não a dou a eles ou dou a eles. Se eu não sei a resposta a uma pergunta que alguém faz, eu não faço conversa fiada em vez de respondê-la, e se eu não quero tomar o tempo para responder a pergunta corretamente, eu não tomo o tempo para zombar deles por perguntar ou dar-lhes uma inútil não-resposta. Há uma margem de tempo para que alguém faça uma pergunta à qual deveria saber a resposta se viveu no planeta Terra por mais de um dia, ou se a pergunta é retórica e, especialmente, se projetada para ser insultuosa para um determinado grupo de pessoas. Sou uma espécie de indivíduo que vai direto ao assunto e opero com um código de ética teta por teta. Sou educado com as pessoas até que elas sejam desagradáveis comigo e depois deixo de ser educado, e também sou honesto com as pessoas até que elas mentem, trapaceiem e roubem de mim e então meu código padrão de comportamento civil está fora da janela e eu vou mentir, trapacear e roubar em troca e não mostrarei piedade ou restrição. Pode ser uma maneira simplista de ver o mundo, mas eu sou teimoso e implacável.

Mas para você, obrigado por sua ajuda. E se houver alguma coisa em que eu possa ajudá-lo, pergunte. Não que eu suponha que você esteja procurando ajuda com qualquer coisa em que eu possa ajudar.

 
zortharg:

Bem, depois de escrever algum código, de fato me parece muito difícil evitar salvar resultados aritméticos com datas e horas como entradas em pontos. Mas estática_cast<long> funcionaria teoricamente como funcionaria em C++? Eu não vejo nenhuma menção nos documentos.

Ah, a propósito, fuso horário. É UTC?


É um fuso horário independente. . quantos segundos há entre 14h e 15h ? você não precisa saber o fuso horário para responder 3600 . . se isso ajudar a supor que a hora de início, Meia-noite de 1º de janeiro de 1970 e a hora em que você está interessado estão ambos no mesmo fuso horário.
 

EDIT: Oops, como já foi assinalado, não há um fuso horário específico para a data. Depende de onde você o obteve! (isto causa complicações desnecessárias, ao contrário do UnixTime no qual se baseou em última instância!)

O fuso horário para a data (segundos depois de 1970) é baseado no UTC. Assim como a hora Unix. É o UnixTime - tempo unix de 64 bits.

Unile true UTC, Unix time ignore os segundos bissextos (ver 1o parágrafo) e assim modulo aritmético funciona por minutos, e horas.

data hora - data hora = longo (duração de segundos) - embora, no que diz respeito à negociação, será uma intensão na maioria das vezes que eu posso prever!

datetime +/- seconds(long) = datetime(outra data)

data hora +/- segundos(int) = data hora(outra data)