Como se referir a uma determinada época - página 4

 
Agent86:
Hi
Obrigado pela resposta

Eu li seu post que dizia respeito a um intervalo de tempo ou intervalo / filtro e entendi a conclusão, mas não as equações completamente

Por sua resposta tenho que assumir que não entendo como criar uma expressão que compararia algo como se (Time[1] == 7:15) na sua forma correta, porque não entendo as equações que você postou.

Você precisa ler o que está escrito e descobrir . . . se você não entender uma Função, procure e leia sobre ela até entendê-la. O código que WHR postado é muito simples de matemática . . . a única coisa que você pode não estar familiarizado é a % . . . não significa porcentagem . . procure-o, você pode encontrá-lo aqui: https://docs.mql4.com/basis/operations/math
 
RaptorUK:

Você realmente precisa começar a aprender a lidar com a documentação ...

Vá para qualquer função que utilize um TimeFrame e você verá a enumeração do TimeFrame . . e ele se liga a ele aqui: Enumeração do Período e isso lhe dirá que o Período_H1 é um valor de 60 . . . em outras palavras, 60 minutos . . . 60 minutos * 60 = segundos . . . o tempo é em segundos.


O que você codificou não funcionará . . seu tempo_selecionado NÃO é uma data/hora . . lembre-se, o que é uma data/hora ? da Documentação . . "tipo de data/hora (inteiro representando a quantidade de segundos decorridos a partir da meia-noite de 1 de janeiro de 1970)" se você quiser uma data/hora que signifique 7:15 da manhã tem que ser o número de segundos que decorreram de 1 de janeiro de 1970 até as 7:15 de hoje . .

O que você calculou é o número de segundos da meia-noite às 7h15 desta manhã, e isso não é uma data/hora.


Sei que esta não é uma data e acho que se eu entendesse exatamente o que PERÍODO_H1 eu também teria sabido disso.

Agora entendo que tenho que converter para segundos a partir de 1 de janeiro de 1970.
ok, obrigado
 
RaptorUK:
Você precisa ler o que está escrito e descobrir . . . se você não entender uma Função, procure e leia sobre ela até entendê-la. O código que WHR postado é muito simples de matemática . . . a única coisa que você pode não estar familiarizado é a % . . . não significa porcentagem . . procure-o, você pode encontrá-lo aqui: https://docs.mql4.com/basis/operations/math
Eu entendo que % não significa porcentagem.
Não entendi o 86400 ou porque foi utilizado.

Acabei de descobrir isto == quantos segundos em um dia consegui, obrigado.
 
Obrigado pessoal

Continuei a trabalhar nisso e entendo as várias maneiras de concluir a meia-noite de um determinado dia

Então, como sugerido alguns outros métodos para calcular 18hrs x 3600 que eu vejo é o número de segundos em uma hora multiplicado por X 18 para me dar HR1800

Acho que deveria ser capaz de fazer vários códigos de tempo a partir disso, incluindo alguns códigos de tempo para um determinado tempo, não apenas um intervalo

Mais uma vez obrigado
 
Aqui estão alguns dos meus progressos, para um tempo selecionável e/ou intervalo de tempo

Incompleto e rude, mas pelo menos agora entendo todos os cargos graças a um monte de

//+------------------------------------------------------------------+
//|                                         15min_straddle_timer.mq4 |
//|                                     Agent86  15 straddle timer   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=1586;

//Time Select and Range select IE: extHour=7; and extMinutes=15; means 7:15am
//Note using the 24hour clock means extHour=13; means 1:00pm fyi
extern int  extHour=7;
extern int  extMinutes=15;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

datetime now = Time[0],
         bod = now - now % 86400,
         Time_Select = bod + extHour*3600+extMinutes,
         HR1800 = bod + 18*3600,  //I'll make extern for this too
         HR2100 = bod + 21*3600;  //and this
         
if (Time[1] == Time_Select)
   {
   double Low_Mark = Low[1] - 20*pips2dbl,
          High_Mark = High[1] + 20*pips2dbl;
   Print (Low[1], " = Low ", Low_Mark," = Low_Mark"); 
   Print (TimeToStr(Time[1])," Low =", Low[1], " High =", High[1]);
   }
   {
   }
   
//if (Time[1] >= HR1800 && Time[1] < HR2100)
      
          
   return(0);
  }    

//+------------------------------------------------------------------+

                
 
Agent86:
Aqui estão alguns dos meus progressos, para um tempo selecionável e/ou intervalo de tempo

Incompleto e rude, mas pelo menos agora entendo todos os cargos graças a um monte de


E ainda assim, o Time_Select está incorreto.
 
Sim, obrigado eu vejo
Pensei sobre isso logo após ter postado, mas saí para jantar rs

Time_Select = bod + extHour*3600 + extMinutes*60,
Sei que posso eventualmente descobrir como simplesmente usar uma entrada de usuário real por 7:15 ou algum tempo, mas ainda assim é bom ver os resultados que eu estava procurando.

Uma função de compreensão de cada vez que eu acho que preciso trabalhar, eu provavelmente amontoei muita informação na sintaxe de aprendizagem e não trabalhei através de cada função e tópico do dicionário suficientemente bom para realmente tornar as coisas mais fáceis para mim.

De qualquer forma, depois de todo esse tempo, eu finalmente tenho um controle sobre o tempo, incluindo o gerenciamento do meu próprio para poder aprender mql melhor.

Mais uma vez, obrigado a todos
 
Por que não posso simplesmente usar isto para selecionar uma época, tornei isto mais complicado do que era?

datetime var1=StrToTime("7:15");

if(Time[1] == var1)
{
}
Algum problema com isso?
 
Agent86:
Sim, obrigado, eu vejo isso
Pensei sobre isso logo depois de ter postado, mas saí para jantar rs

:-)
 
Alguém vê algum problema com o uso do StrToTime desta forma para a seleção de tempo e de straddle ?

Por favor, agradeça

//+------------------------------------------------------------------+
//|                                      straddle_with_timerange.mq4 |
//|                           Agent86's Candle Straddle with timer   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int       MagicNumber=1586;

extern string    Straddle_Candle="7:15"; //select your straddle candle
extern string    StartTime="7:15"; //select your start time range
extern string    EndTime="17:00"; //select your end time range


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

datetime Candle_Select = StrToTime(Straddle_Candle),
         Start_Time = StrToTime(StartTime),
         End_Time = StrToTime(EndTime);
         
if (Time[1] == Candle_Select)
   {
   double Low_Mark = Low[1] - 20*pips2dbl,
          High_Mark = High[1] + 20*pips2dbl;
   Print (Low[1], " = Low ", Low_Mark," = Low_Mark"); 
   Print (TimeToStr(Time[1])," Low =", Low[1], " High =", High[1]);
   }
      
          
   return(0);
  }    

//+------------------------------------------------------------------+