MQL4 Relógio de Tempo Real (segundo por segundo) - página 5

 
7bit:

É apenas um punhado de linhas em mql4 (claro que você precisa de chamadas DLL permitidas para chamar o API do windows, mas não precisa instalar nada):

Tenho este script em meus favoritos e quando preciso de carrapatos simplesmente arrasto-o para o gráfico.


Também tenho uma variação disto sem o loop que envia apenas um tick e depois sai e tenho vinculado isto (one_tick.mq4) à tecla de atalho ALT+T e agora posso enviar um tick para o gráfico ativo apenas pressionando ALT-T. Preciso disto para alguns dos meus EAs stat-arb quando experimento durante o fim de semana para impor o início() para acionar seus cálculos e traçar seus gráficos (posso mover linhas no gráfico para mudar o intervalo e depois preciso de um novo tick para atualizar seus cálculos).


7 Eu nunca usei importações dll, então você pode, por favor, explicar o seguinte.

+ Você precisa incluir os arquivos dll na pasta do Meta Trader Client?

+ Como podemos habilitar esta EA do cliente MT ?

Basta nos dar alguns exemplos de importação de DLLs na Meta Trader

 
spidermagos:


7 Eu nunca usei o dll importado, por isso, por favor, explique o seguinte.

+ Você precisa incluir os arquivos dll na pasta do Meta Trader Client?

+ Como podemos habilitar esta EA do cliente MT ?

Basta nos dar alguns exemplos de importação de DLLs na Meta Trader

Lamento informá-lo que será completamente impossível para você fazer qualquer uso dele (ou mesmo entender para que propósito ele poderia ser usado) a menos que você aprenda a habilidade de ler um texto que tenha mais de 140 caracteres.

Como começo, você poderia tentar extrair o significado do texto que você acabou de citar em sua última postagem. Você verá então que eu o descrevi como um script e não como um EA, além disso, para sua grande surpresa, você descobrirá que eu escrevi que não há necessidade de instalar nenhuma dll e você poderá até mesmo encontrar as porções do texto onde eu expliquei como ele deve ser usado.

 
7bit:

Lamento informá-lo que será completamente impossível para você fazer qualquer uso dele (ou mesmo entender para que propósito ele poderia ser usado) a menos que você aprenda a habilidade de ler um texto que tenha mais de 140 caracteres.

Como começo, você poderia tentar extrair o significado do texto que você acabou de citar em sua última postagem. Você descobrirá então que eu o descrevi como um script e não como um EA, além disso, para sua grande surpresa, você descobrirá que eu escrevi que não há necessidade de instalar nenhuma dll e que você pode até ser capaz de encontrar as partes do texto onde eu expliquei como ele deve ser usado.

Eu admiro sua arrogância e suas habilidades em inglês e provavelmente seu exemplo de codificação.

Mas resolver um problema sem fornecer uma solução é apenas evitar a questão.

7 bits ao invés de questionar minhas habilidades e técnicas de leitura, por que você não escreve o programa inteiro e prova seu eu. ao invés de filosofar!

Você sabe como fazer um relógio em tempo real segundo por segundo ou não? esta é a pergunta ? este relógio deveria estar no gráfico?

 

você pode simplesmente adicionar 2 e 2.

Use o código de 7 bits para gerar carrapatos falsos em combinação com o código i postado e você tem tudo o que precisa.

e btw, 7bit parece ser um dos melhores programadores que participam deste fórum.

//z

 

spidermagos:

Eu admiro sua arrogância

Obrigado.


spidermagos:

por que você não escreve o programa inteiro e prova seu eu. em vez de filosofar!

O roteiro é completo e funciona de forma autônoma, exatamente dentro das especificações que eu dei.

Eu o coloquei como uma sugestão para resolver o problema dos indicadores que não podem usar chamadas de bloqueio como o sono() e que também não existe outra maneira de gerar eventos temporais a partir do próprio indicador. Este exato subproblema de todo o problema do relógio foi mencionado imediatamente antes neste tópico e somente isto e nada mais foi abordado por mim. Ele pode ser tratado como um problema completamente independente por si só e meu script é uma solução genérica (e completamente independente) para ele e também pode ser aplicado em muitos cenários similares, e até dei um exemplo para um caso de uso diferente.

Se você quiser escrever código, então você deve aprender a habilidade de decomposição do problema e também deve ser capaz de reconhecer imediatamente uma solução e também uma solução parcial sempre que você tropeçar em uma.

 
//< This is EA : Compile and run in folder "/experts" >
 
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
static int iRunTime            ;
 
while  ( ! IsStopped () )
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
           iRunTime   = GetTickCount () - iTimeStamp                ;
           Sleep      ( iClockPeriod    - iRunTime                ) ;
       }
}
//</This is EA : Compile and run in folder "/experts" > 

//< This is Indicator : Compile and run in folder "/experts/indicators" >
#property  indicator_chart_window
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
  
  
if     ( ( GetTickCount () - iTimeStamp ) < iClockPeriod )   return ;
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
  
 
       }
}
//</This is Indicator : Compile and run in folder "/experts/indicators" > 

Execute estes programas em diferentes gráficos.

 
Ais:

Execute estes programas em diferentes gráficos.


Ais ; 7bit está certo, isto não vai funcionar! função start é tique por tique

são necessárias importações dll para resolver este problema. ...

ou seja, chamar scripts a partir de indicadores

 
7bit:

Obrigado.


O roteiro é completo e funciona autônomo, exatamente dentro das especificações que eu dei.

Coloquei-o como uma sugestão para resolver o problema dos indicadores que não podem usar chamadas de bloqueio como o sono() e que também não existe outra maneira de gerar eventos temporais de dentro do próprio indicador. Este exato subproblema de todo o problema do relógio foi mencionado imediatamente antes neste tópico e somente isto e nada mais foi abordado por mim. Ele pode ser tratado como um problema completamente independente por si só e meu script é uma solução genérica (e completamente independente) para ele e também pode ser aplicado em muitos cenários similares, e até dei um exemplo para um caso de uso diferente.

Se você quiser escrever código, deve aprender a habilidade de decomposição do problema e também deve ser capaz de reconhecer imediatamente uma solução e também uma solução parcial sempre que você tropeçar em uma.



7bit - como você pode chamar um roteiro a partir de um indicador ?

você pode dar um exemplo?

 
spidermagos:

É meu subentendido que a função Start() funciona tique a tique.

Existe uma maneira de usar os dados em tempo real do relógio do computador e atualizá-los a cada segundo? Não tique por tique, mas a cada segundo?

Se sim, por favor, me dê alguma ajuda.

obrigado

oi, você pode usar um aplicativo de remetente de carrapatos separado em vez de um script (há vários freeware; google "mt4 tick sender") e fazer com que ele gere carrapatos a cada 200ms ou mais.Em seguida, certifique-se de que o relógio do seu PC esteja sincronizado com freqüência e use TimeLocal() + hour_difference_between_yourtimezone_and_servertimezone * 3600 em vez de TimeCurrent() porque com os ticks gerados, você "apenas" força o Start() a ser executado, o TimeCurrent() NÃO se atualizará a menos que o tick venha de seu corretor.. assim você terá seu corretor de tempo segundo por segundo... isto funciona tanto para os indicadores como para os EAs... fato engraçado é que existem alguns corretores com servidores fora de sincronia de tempo, eles ficam vários segundos atrasados mas o timestamp só, infelizmente não o preço, velas diferentes, M1 completamente diferente às vezes quando há momentum, lol
 

Primeiro coloque a lógica que você tem no início em uma função.

Em seguida, faça um loop no init() com um sono e chame a função a partir daí. Lembre-se de que o sono é em milissegundos.

Isto permitirá que você controle o tempo em vez de esperar por uma mudança de preço.

Ele funciona perfeitamente desde que a lógica de seu programa esteja OK. O único problema é que você não pode executá-lo no backtester. Faça seus testes usando o Start() primeiro e depois mude-o para o init().

Razão: