Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Por favor, descreva o que você está tentando fazer.
Desculpe a confusão.
Preciso definir 3'EventSetMillisecondTimer' como abaixo (você disse que não funciona...). Há alguma forma alternativa disponível, por favor?
EventSetMillisecondTimer( 250 ); // 2nd will read in 250 | if won't read try next
EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250 | if read then stop reading till next PERIOD_M5
Melhor.
O temporizador é definido apenas uma vez na função OnInit().
Se você quiser reinicializar você tem que matar o timer antigo primeiro, isto geralmente acontece na função OnDeinit().
Como eu disse, em alternativa, você poderia usar um contador.
Se você colocar o código, por exemplo, um timer de 10 milissegundos, então o código será executado a cada 10 milissegundos.
Isto provavelmente congelará seu terminal porque ele é muito rápido.
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(1);// 1 second
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//--- increment counter
counter++;
//--- comment status on the chart
Comment(IntegerToString(counter));
//--- switch timer
switch(counter)
{
case 60:
Alert(" 1 Minute ");
// Do Something...
break;
case 300:
Alert(" 5 Minutes ");
// Do Something...
break;
case 900:
Alert(" 15 Minutes ");
// Do Something...
counter=0;// Reset counter on highest value.
break;
}
// end switch timer
if(counter>900)
{
counter=0;// Safety Mechanism
}
}
//+------------------------------------------------------------------+
Note que o minuto é acionado apenas uma vez, portanto, não a cada minuto.
Os 5 minutos também serão acionados apenas uma vez após os primeiros 5 minutos, portanto não aos 10 e não aos 15 minutos.
Se você quiser, por exemplo, acionar a cada minuto, você tem que adicionar o código por 60 segundos por 120 segundos por 180 segundos e etc.
A marca de 15 minutos acionará a cada 15 minutos, pois coloca o contador em zero.
Que mecanismo você quer usar, que código você quer acionar nos intervalos de tempo?
O que você está tentando alcançar?void OnTimer()
{
static int counter=0;
static int next1m=60;
static int next5m=300;
static int next15m=900;
//--- increment counter
counter++;
//--- comment status on the chart
Comment(IntegerToString(counter));
//--- timer
if(counter==next1m)
{
Alert(" 1 Minute ");
// Do Something...
next1m+=60;
}
if(counter==next5m)
{
Alert(" 5 Minutes ");
// Do Something...
next5m+=300;
}
if(counter==next15m)
{
Alert(" 15 Minutes ");
// Do Something...
counter=0;// Reset counter on highest value.
next1m=60;
next5m=300;
}
}
Bom, Marco.
Você poderia fazer algo como isto para acionar a cada intervalo de tempo
Marco vd Heijden:
Que mecanismo você quer usar, que código você quer acionar nos intervalos de tempo?
O que você está tentando alcançar?Mais uma vez, excelente comentário, muito obrigado homem.
//---
...meu indicador funciona que era (/ é) o que eu queria (/ quer).
O indicador funciona assim:
Preciso descrever minha preocupação com o exemplo:
Abro o gráfico EURUSD e anexei meu indicador ao gráfico, e funciona perfeito que é como eu quero, move-se / mostra para frente (mesmo passado) VLINHA's, posso mudar o PERÍODO DE TEMPO-QUADRO e automaticamente adaptei os intervalos que PERÍODOS (que é o que eu quero).
Onde está o meu problema de indicador? // talvez não seja um problema, mas leva um pouco mais de tempo 'irrelevante' para ser atualizado.
Se eu escolher 'EventSetMillisecondTimer( 10 )'; e então eu mudo os PERÍODOS DE TEMPORADA para qualquer PERÍODO DE TEMPORADA e quase não vejo (quando isso) carrega novos VLINHAS para o gráfico (qual eu quero)
Muito e muito mais aprecie seus comentários - Marco & whroeder1
(NOTA: Eu não uso 'switch operator' - porque seu comentário #18 é melhor do que tudo o que é que eu atualizo e trabalho nele - e é muito útil para mim)
(o inglês não é minha língua nativa)
Keith Watford:
Bom, Marco.
Você poderia fazer algo como isto para acionar a cada intervalo de tempo
Também muito bom Keith:)
Realmente isso me ajuda muito, vou usá-lo em meu próximo indicador.
Tudo de bom.
Não conheço ninguém, mas acho sua mistura de fonte, cores, negrito e itálico, etc., distraindo e irritando. Na verdade, eu não poderia me incomodar em ler este post.
Mais uma vez, excelente comentário, muito obrigado homem.
//---
...meu indicador funciona que era (/ é) o que eu queria (/ quer).
O indicador funciona assim:
Preciso descrever minha preocupação com o exemplo:
Abro o gráfico EURUSD e anexei meu indicador ao gráfico, e funciona perfeito que é como eu quero, move-se / mostra para frente (mesmo passado) VLINHA's, posso mudar o PERÍODO DE TEMPO-QUADRO e automaticamente adaptei os intervalos que PERÍODOS (que é o que eu quero).
Onde está o meu problema de indicador? // talvez não seja um problema, mas leva um pouco mais de tempo 'irrelevante' para ser atualizado.
Se eu escolher 'EventSetMillisecondTimer( 10 )'; e então eu mudo os PERÍODOS DE TEMPORADA para qualquer PERÍODO DE TEMPORADA e quase não vejo (quando isso) carrega novos VLINHAS para o gráfico (qual eu quero)
Muito e muito mais aprecie seus comentários - Marco & whroeder1
(NOTA: Eu não uso 'switch operator' - porque seu comentário #18 é melhor do que tudo o que é que eu atualizo e trabalho nele - e é muito útil para mim)
(o inglês não é minha língua nativa)
Bem, se se tratar de prazos de troca, então o temporizador não é uma boa opção porque o temporizador é destruído ao mudar de estrutura.
Você pode criar suas linhas na função OnInit(), e atualizá-las nas funções OnTick() ou OnTimer().
Aqui está um exemplo:
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//--- playsound
PlaySound("alert2.wav");
//--- create moving timeline
ObjectCreate(0,"Time",OBJ_VLINE,0,TimeCurrent(),0);
//--- detect period
switch(Period())
{
case PERIOD_M1:
MessageBox("Switched to 1 Minute Frame");
//Do Something...
ObjectCreate(0,"1-Minute",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_M5:
MessageBox("Switched to 5 Minutes Frame");
//Do Something...
ObjectCreate(0,"5-Minutes",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_M15:
MessageBox("Switched to 15 Minutes Frame");
//Do Something...
ObjectCreate(0,"15-Minutes",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_M30:
MessageBox("Switched to 30 Minutes Frame");
//Do Something...
ObjectCreate(0,"30-Minutes",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_H1:
MessageBox("Switched to 1 Hour Frame");
//Do Something...
ObjectCreate(0,"1-Hour",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_H4:
MessageBox("Switched to 4 Hour Frame");
//Do Something...
ObjectCreate(0,"4-Hour",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_D1:
MessageBox("Switched to Daily Frame");
//Do Something...
ObjectCreate(0,"Daily",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_W1:
MessageBox("Switched to Weekly Frame");
//Do Something...
ObjectCreate(0,"Weekly",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_MN1:
MessageBox("Switched to Monthly Frame");
//Do Something...
ObjectCreate(0,"Monthly",OBJ_VLINE,0,Time[0],0);
break;
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
//--- delete objects
ObjectsDeleteAll(0,0,-1);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline
}
//+------------------------------------------------------------------+
E além disso, se você quiser atualizar as linhas sempre que surgir uma vela nova, você pode combinar o exemplo da página anterior com o último a lhe dar isto:
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//--- playsound
PlaySound("alert2.wav");
//--- load open times
M1=iTime(Symbol(),PERIOD_M1,0);
M5=iTime(Symbol(),PERIOD_M5,0);
M15=iTime(Symbol(),PERIOD_M15,0);
M30=iTime(Symbol(),PERIOD_M30,0);
H1=iTime(Symbol(),PERIOD_H1,0);
H4=iTime(Symbol(),PERIOD_H4,0);
D1=iTime(Symbol(),PERIOD_D1,0);
W1=iTime(Symbol(),PERIOD_W1,0);
MN1=iTime(Symbol(),PERIOD_MN1,0);
//--- create moving timeline
ObjectCreate(0,"Time",OBJ_VLINE,0,TimeCurrent(),0);
//--- detect period
switch(Period())
{
case PERIOD_M1:
MessageBox("Switched to 1 Minute Frame");
//Do Something...
ObjectCreate(0,"1-Minute",OBJ_VLINE,0,Time[0],0);
M1=Time[0];// store current time
break;
case PERIOD_M5:
MessageBox("Switched to 5 Minutes Frame");
//Do Something...
ObjectCreate(0,"5-Minutes",OBJ_VLINE,0,Time[0],0);
M5=Time[0];// store current time
break;
case PERIOD_M15:
MessageBox("Switched to 15 Minutes Frame");
//Do Something...
ObjectCreate(0,"15-Minutes",OBJ_VLINE,0,Time[0],0);
M15=Time[0];// store current time
break;
case PERIOD_M30:
MessageBox("Switched to 30 Minutes Frame");
//Do Something...
ObjectCreate(0,"30-Minutes",OBJ_VLINE,0,Time[0],0);
M30=Time[0];// store current time
break;
case PERIOD_H1:
MessageBox("Switched to 1 Hour Frame");
//Do Something...
ObjectCreate(0,"1-Hour",OBJ_VLINE,0,Time[0],0);
H1=Time[0];// store current time
break;
case PERIOD_H4:
MessageBox("Switched to 4 Hour Frame");
//Do Something...
ObjectCreate(0,"4-Hour",OBJ_VLINE,0,Time[0],0);
H4=Time[0];// store current time
break;
case PERIOD_D1:
MessageBox("Switched to Daily Frame");
//Do Something...
ObjectCreate(0,"Daily",OBJ_VLINE,0,Time[0],0);
D1=Time[0];// store current time
break;
case PERIOD_W1:
MessageBox("Switched to Weekly Frame");
//Do Something...
ObjectCreate(0,"Weekly",OBJ_VLINE,0,Time[0],0);
W1=Time[0];// store current time
break;
case PERIOD_MN1:
MessageBox("Switched to Monthly Frame");
//Do Something...
ObjectCreate(0,"Monthly",OBJ_VLINE,0,Time[0],0);
MN1=Time[0];// store current time
break;
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
//--- delete objects
ObjectsDeleteAll(0,0,-1);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- update timeline
ObjectMove(0,"Time",0,TimeCurrent(),0);
//--- check for new candles
if(M1!=iTime(Symbol(),PERIOD_M1,0))
{
Alert("New candle on M1");
ObjectMove(0,"1-Minute",0,iTime(Symbol(),PERIOD_M1,0),0); // Move line
M1=iTime(Symbol(),PERIOD_M1,0);// Overwrite old with new value
}
if(M5!=iTime(Symbol(),PERIOD_M5,0))
{
Alert("New candle on M5");
M1=iTime(Symbol(),PERIOD_M5,0);// Overwrite old with new value
}
if(M15!=iTime(Symbol(),PERIOD_M15,0))
{
Alert("New candle on M15");
M15=iTime(Symbol(),PERIOD_M15,0);// Overwrite old with new value
}
if(M30!=iTime(Symbol(),PERIOD_M30,0))
{
Alert("New candle on M30");
M30=iTime(Symbol(),PERIOD_M30,0);// Overwrite old with new value
}
// and so on to MN1...
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline
}
//+------------------------------------------------------------------+
Não conheço ninguém, mas acho sua mistura de fonte, cores, negrito e itálico, etc., distraindo e irritando. Na verdade, eu não poderia me incomodar em ler este post.
Max Enrik:
Não conheço ninguém, mas acho sua mistura de fonte, cores, negrito e itálico, etc., distraindo e irritando. Na verdade, eu não poderia me incomodar em ler este post.