Problemas com o Tempo() - página 2

 

Isto também não funciona ...

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 

O RaptorUK já lhe responde lá em cima referenciando TimeDayOfWeek(). A diferença entre Day(), TimeDayOfWeek() e DayOfWeek() são (leia-as com atenção)

int Day() = Retorna o dia atual do mês, ou seja, o dia do mês do último horário conhecido do servidor.

int DayOfWeek() = Devolve o dia atual da semana (0-Domingo,1,2,3,4,5,6) do último horário conhecido do servidor.

int TimeDayOfWeek(datetime Time) = Retorna o dia da semana baseado em zero (0 significa domingo,1,2,3,4,5,6) para a data especificada.


Então Dia() = 1 pode ser qualquer dia de segunda a domingo.

BTW, Hoje é 31 de maio, a função Day() retornará 31 (Data) enquanto o DayOfWeek() retornará 4 (Quinta-feira).

Amanhã é 1º de junho, a função Day() retornará 1 (Data), e a função DayOfWeek() retornará 5 (Sexta-feira).

Use isto como roteiro :

Alert ("TimeDay of local time ",TimeDayOfWeek(TimeLocal())," and TimeDay of server time ",TimeDayOfWeek(TimeCurrent()));
Alert ("Day () is ",Day()," and DayOfWeek is ", DayOfWeek ());
 
toCFx:

LOL!

Começo a pensar que a maioria das funções baseadas no "Tempo" no MT4 são seriamente defeituosas.

Quero dizer, se eu redefinir toda a minha lógica de controle de posição para algo tão mundano quanto: TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59, e não conseguir fechar um negócio solitário (a EA simplesmente ignora o código!), então eu diria que o MT4 tem alguns problemas que precisam ser corrigidos com relação a estes tipos de funções.

LOL, você não acha que se as funções baseadas no tempo da MQL4 tivessem essas falhas sérias, alguém provavelmente já teria notado?

Talvez você possa tentar corrigir seu código com falhas antes de alegar que as funções têm falhas.

em seus critérios finais, tente mudar:

TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59

para:

if(TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59)

toCFx:

O código não pode ser mais simples! Estou instruindo a EA a abrir o maldito comércio entre 00:00 e 00:05. Isso não é uma coisa difícil de ser codificada. Uma criança de seis anos de idade poderia codificar isso. Aqui está mais uma vez: [b]TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05[/b].

Você também pode tentar corrigir isso também rs

mudança:

TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05

para:

if(TimeHour(TimeCurrent()) == 0 && TimeMinute(TimeCurrent()) <= 5)

 

Prezado CFx,

Meu pedido de desculpas, se eu me queixo. Eu tenho um dia ruim. Acho que temos outros forumistas que podem ter que reinstalar seu PC porque ele não está lendo minhas respostas de forma totalmente correta.

1. Se você quiser fechar negócios entre segunda-feira e quinta-feira, tudo às 23:57, e na sexta-feira 21:57

   if (
       (DayOfWeek () >= 1 && DayOfWeek() <= 4 && TimeHour(TimeCurrent()) >= 23 && TimeMinute(TimeCurrent()) >= 57)
       || (DayOfWeek() == 5                   && TimeHour(TimeCurrent()) >= 21 && TimeMinute(TimeCurrent()) >= 57)
      )
      {
      // close it
      }

E você pode modificar o mesmo código para o Comércio Aberto.

Leia isto sobre testes https://www.mql5.com/en/articles/1512


2. Isto é importante : você mencionou as "ferramentas". Se você tiver a gentileza de elaborar o que você quer dizer com "ferramentas" - não há problema em mencionar o seu nome aqui. Nós só usamos MetaEditor. Há muitos fóruns aqui que usam algumas ferramentas online e nos fizeram consertar os erros. Você tem que nos dizer o que é, pois seus códigos podem estar cheios de erros - por exemplo, sua lógica está correta, mas você usa funções mql4 erradas.

... who uses a tool for helping me build EAs. That tool allows the use of some MQL structure, but it does not execute on explicit MQL functions. It simply takes MQL code, evaluates whether the MQL based condition is true/false, and then executes a custom function such as OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. But, it does not run MQL code explicitly. For example, you can(not) use the Print or Comment function to get something to appear on the chart window of MT4 (just one example).


3. Parece-me que você gosta muito de escrever longas páginas, não há nada que eu possa fazer a respeito disso, exceto ter isto em mente:

Este é o meu primeiro post. Primeiro, por favor não(e) que eu não seja um desenvolvedor de MQL.

para que você não fique constrangido, especialmente depois que você disse ...

Não sou desenvolvedor de MQL, mas sou realmente bom em desenvolver construções lógicas e posso detectar um problema sistêmico quando o sinto.

Estamos sempre aqui para ajudar, inclusive para ler suas longas redações.

Aqui está o seu - muito longo - primeiro post.

Olá Comunidade MQL4!

Este é meu primeiro post. Primeiro, por favor, não que eu não seja um desenvolvedor MQL. Eu sou um Trader, que usa uma ferramenta para me ajudar a construir EAs. Essa ferramenta permite o uso de alguma estrutura MQL, mas não executa em funções MQL explícitas. Ela simplesmente pega o código MQL, avalia se a condição baseada em MQL é verdadeira/falsa, e então executa uma função personalizada como OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. Mas, ele não executa o código MQL explicitamente. Por exemplo, você pode usar a função Imprimir ou Comentar para obter algo para aparecer na janela do gráfico do MT4 (apenas um exemplo).

Portanto, sei um pouco sobre MQL, o que é suficiente para que eu possa usar a ferramenta de desenvolvimento EA que uso para construir meus EAs. Até agora, eu construí 10 EAs usando a ferramenta e abandonei 7 deles devido à não lucratividade, que é cerca de 30% melhor do que minha relação de protótipos de sucesso que eu costumava obter com a construção de sistemas comerciais em Excel. Eu normalmente espero que 7-8 idéias em 10 não sejam tão lucrativas quanto o esperado, deixando 2-3 projetos lucrativos o suficiente para iniciar o processo de otimização. Ok, chega de falar de mim e de como eu funciono.

Aqui está o meu problema e espero ter vindo ao lugar certo para me ajudar!

Estou executando este código [b]para fechar negócios:[/b]

Day() == 1 ||| Day() == 2 ||| Day() == 3 ||| Day() == 4 && TimeHour(TimeCurrent()) >=23 && TimeMinute(TimeCurrent()) >=57 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57

Nota: O problema é que todas as negociações permanecem abertas de segunda a quinta-feira, até as 23:57. Além disso, todas as negociações permanecem abertas na sexta-feira, até as 21:57.


Também estou executando este código através de um bloco MQL [b]para abrir negociações:[/b].

TimeHour(TimeCurrent()) == 00 && TimeMinute(TimeCurrent()) <= 05

Nota: A única negociação que abre entre 00:00 e 00:05, é a primeira negociação do back-test, ao clicar no botão Tester Start. Essa negociação se abre precisamente às 00:00. Entretanto, nenhuma das outras negociações abre entre 00:00 e 00:05, no final da semana.

Em resumo:

- Uma negociação se abre após clicar no botão Tester Start às 00:00.
- Nenhuma negociação é fechada posteriormente às 23:57 (M-Thu), ou 21:57 (sex).
- Nenhuma negociação é aberta subseqüentemente entre 00:00 e 00:05.

Todos os horários mostrados acima têm amplo fluxo de carrapato disponível. Portanto, não houve lacunas nos dados que estão sendo usados pelo Testador.

Qualquer ajuda seria bem-vinda. Por que estas trocas não estão fechando na hora codificada? Por que nenhuma negociação está sendo executada quando há sempre um sinal de negociação disponível entre 00:00 e 00:05, de segunda a sexta?

Obrigado!
cfx

 
   if( DayOfWeek()<1 || DayOfWeek()>5 || TimeMinute(TimeCurrent()) < 57 )
      return(0);
   else if( TimeHour(TimeCurrent()) >= 23  || ( DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= 21) ){
     //Close
   }
 
CFx:

Eu não usei declarações impressas para tal fim.

Por que não ? abra seu código no MetaEditor, acrescente algumas funções de Impressão para lhe dizer o que está acontecendo . .

O MT4 não tem um depurador, então uma das únicas ferramentas disponíveis para nós é o Print . . . outra é o Comment . . e isso é só isso.

 
RaptorUK:

Por que não ? abra seu código no MetaEditor, acrescente algumas funções de impressão para lhe dizer o que está acontecendo ...

O MT4 não tem um depurador, então uma das únicas ferramentas disponíveis para nós é o Print . . . outra é o Comment . . e isso é só isso.


Eu uso muito Alert() também para esse fim
 

As ferramentas. Conte-nos sobre as ferramentas, não seja embaraçoso, aprendi com RaptorUK, dabbler, e os comentários da SDC no outro dia. Então, por favor, diga-nos .

:D

 
SDC:

Eu uso muito Alert() também para esse fim
Eu não . . . é por isso que eu esqueci . . obrigado pela correção :-)
 
onewithzachy:

LOL. Você é o único irreal. Este seu código ...

... nunca retornará verdadeiro.

Você é o único que precisa desenvolver ainda mais "sua" construção lógica.

E construir esta ...


Talvez você devesse tentar ler a OP. Ele lhe diz claramente que não sou um desenvolvedor de MQL. Além disso, há uma enorme distinção (massiva) entre ser capaz de construir logicamente uma linguagem de programação, e ser capaz de construir logicamente um sistema comercial consistentemente lucrativo. Infelizmente, neste negócio, você encontra muitos programadores online que não têm uma pista solitária sobre o que é preciso para pesquisar, projetar, arquitetar, construir, projetar, integrar e implementar, um sistema comercial inteligente que realmente funciona sob qualquer condição de mercado (touro, urso e transição). Portanto, compreendo sua incapacidade de entender de onde venho. Eu construí esse sistema comercial inteligente e o fiz com o Excel (de todas as coisas).

Tem sido rentável em tempo integral nos últimos 3,27 anos de forma consistente, tendo produzido resultados muito melhores do que a média nos últimos 7 anos em tempo parcial, enquanto ainda estava sendo projetado, construído e otimizado - um sistema comercial de apoio à decisão totalmente integrado, projetado com a contribuição de uma estrutura de indicadores 100% personalizada. Não há indicadores padrão com mais de 50 anos no meu sistema, pois cada indicador em uso em todo o sistema vem de um novo projeto e conceito de indicador que criei desde o início, através de anos de pesquisa e testes. A única coisa que me resta fazer, é escrever um livro sobre isso.

Assim, em termos de projeto de sistemas comerciais que funcionam, eu suponho que você provavelmente não tenha visto os semelhantes da minha espécie neste quadro há algum tempo - se é que alguma vez viu. Quem você conhece que tenha criado uma nova classe de design de indicadores? Não estou falando em pegar um projeto de indicador existente, ajustá-lo e dar-lhe um novo nome - isso é chamado de avançar a geração atual de indicador. Estou falando de um conceito de indicador totalmente novo baseado em uma teoria do mercado que não foi discutida em público em larga escala? Eles são chamados [b]Delta Indicadores de Classe Diferencial[/b] e não se baseiam nas teorias tradicionais de mercado de nada que você já tenha visto antes, eu lhe asseguro esse fato.

Meu interesse na MQL é descobrir se os indicadores de classe D2 têm ou não valor nos prazos mais baixos, pois o sistema protótipo de onde eles vêm SOMENTE usa dados Diários, Semanais, Mensais e Anuais, para produzir um único (1) sinal comercial sempre 24 horas, que tem sido entre 91% a 99% de precisão para uma meta especificada nos últimos 3,27 anos. São aproximadamente 850+ sinais comerciais entre 91-99% de precisão do alvo, em uma faixa de alvo entre 17 a 67 pips por 24 horas (mediana do núcleo).

O protótipo atual NÃO é automatizado e é complexo demais para a MQL lidar com ele. OOP, seria o ambiente ideal para ele, mas tenho estado muito ocupado com outras coisas que me são permitidas, para sentar o tempo suficiente para aprender C, ou C++.

Este teste, é um POC para descobrir se um punhado dos meus projetos de indicadores pode ou não funcionar bem abaixo do período de tempo da barra diária. Se eu puder encontrar uma justificativa técnica para automatizar prazos mais baixos usando meus projetos, então eu posso justificar o tempo que eu precisaria gastar para aprender o OOP, e transformar o protótipo em uma aplicação autônoma proprietária do Windows Trading (não para venda em nenhuma circunstância).

Os comerciantes comercializam. Programadores, programa. Eu NÃO sou programador............ ainda.

 
onewithzachy:

Isto também não funciona ...

O RaptorUK já lhe responde lá em cima referenciando TimeDayOfWeek(). A diferença entre Day(), TimeDayOfWeek() e DayOfWeek() são (leia-as com atenção)

int Day() = Retorna o dia atual do mês, ou seja, o dia do mês do último horário conhecido do servidor.

int DayOfWeek() = Devolve o dia atual da semana (0-Domingo,1,2,3,4,5,6) do último horário conhecido do servidor.

int TimeDayOfWeek(datetime Time) = Retorna o dia da semana baseado em zero (0 significa domingo,1,2,3,4,5,6) para a data especificada.


Então Dia() = 1 pode ser qualquer dia de segunda a domingo.

BTW, Hoje é 31 de maio, a função Day() retornará 31 (Data) enquanto o DayOfWeek() retornará 4 (Quinta-feira).

Amanhã é 1º de junho, a função Day() retornará 1 (Data), e a função DayOfWeek() retornará 5 (Sexta-feira).

Use isto como roteiro :


Eu usei o DayOfWeek(), como mostrado em um de meus postos, e ainda não funcionou corretamente.

Razão: