Как ссылаться на определенное время - страница 4

 
Agent86:
Привет
Спасибо за ответ

Я прочитал ваше сообщение, которое касалось временного диапазона или диапазона / фильтра, и я понял вывод, но не полностью уравнения.

По вашему ответу я должен предположить, что я не понимаю, как создать выражение, которое бы сравнивало что-то вроде if(Time[1] == 7:15) в правильной форме, потому что я не понимаю уравнений, которые вы опубликовали.

Вы должны читать то, что написано и понять это ... если вы не понимаете функцию, найдите ее и читайте о ней, пока не поймете ее. Код, который разместил WHR, очень простая математика ... единственное, с чем вы можете быть не знакомы, это % ... это не означает процент ... посмотрите его, вы можете найти его здесь: https://docs.mql4.com/basis/operations/math
 
RaptorUK:

Вам действительно нужно начать изучать документацию...

Перейдите к любой функции, которая использует TimeFrame, и вы увидите перечисление таймфреймов ... и это ссылка сюда: Timeframe enumeration и это скажет вам, что Period_H1 имеет значение 60 ... другими словами 60 минут . . . 60 минут * 60 = секунды ... время дат в секундах.


То, что вы закодировали, не будет работать... ваш time_select НЕ является datetime... вспомните, что такое datetime? из документации... "тип datetime (целое число, представляющее количество секунд, прошедших с полуночи 1 января 1970 года)." если вы хотите получить datetime, который означает 7:15 утра, то это должно быть количество секунд, прошедших с 1 января 1970 года до 7:15 утра сегодня....

То, что вы вычислили, это количество секунд от полуночи до 7:15 утра сегодня утром, а это не время даты.


Я знаю, что это не дататайм и, наверное, если бы я точно понимал, что такое PERIOD_H1, я бы тоже это знал.

Теперь я понял, что мне нужно конвертировать в секунды от 1 января 1970 года.
хорошо, спасибо
 
RaptorUK:
Вам нужно прочитать то, что написано, и понять это... если вы не понимаете функцию, найдите ее и читайте о ней, пока не поймете. Код, который разместил WHR, очень простая математика ... единственное, с чем вы можете быть не знакомы, это % ... это не означает процент ... поищите его, вы можете найти его здесь: https://docs.mql4.com/basis/operations/math
Я понимаю, что % не означает процент.
Я не понял, что такое 86400 и почему оно используется.

Я только что понял это == сколько секунд в сутках получил это спасибо
 
Спасибо, люди

Я продолжил работу над этим и понял различные способы вычисления полуночи определенного дня.

Затем, как было предложено, некоторые другие методы для расчета 18 часов x 3600, что, как я вижу, является количеством секунд в часе, умноженным X 18, чтобы дать мне HR1800.

Я думаю, я должен быть в состоянии сделать некоторые различные временные коды из этого, включая некоторые временные коды для определенного времени, а не только диапазон.

Еще раз спасибо
 
Вот некоторые из моих достижений, для выбранного времени и/или временного диапазона

Неполный и грубый, но по крайней мере я теперь понимаю все сообщения, спасибо большое.

//+------------------------------------------------------------------+
//|                                         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:
Вот некоторые из моих достижений, для выбранного времени и/или временного диапазона

Неполный и грубый, но по крайней мере я теперь понимаю все сообщения, спасибо большое.


И все же, Time_Select неверен.
 
Ага, спасибо, я вижу это
Я подумал об этом сразу после того, как написал, но ушел ужинать lol

.
Time_Select = bod + extHour*3600 + extMinutes*60,
Я знаю, что в конечном итоге я могу выяснить, как просто использовать фактический пользовательский ввод для 7:15 или какого-то подобного времени, но все же приятно видеть результаты, которые я искал.

Я думаю, что мне нужно работать над пониманием одной функции за раз, вероятно, я впихнул слишком много информации в изучение синтаксиса и не проработал каждую функцию словаря и тему достаточно хорошо, чтобы действительно облегчить себе работу.

В любом случае, после всего этого времени я наконец-то справился со временем, включая управление своим собственным, чтобы иметь возможность лучше изучать mql.

Еще раз спасибо всем
 
Почему я не могу просто использовать это для выбора времени, неужели я все усложнил?

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

if(Time[1] == var1)
{
}
Что-нибудь не так с этим?
 
Agent86:
Да, спасибо, я вижу.
Я подумал об этом сразу после того, как написал, но ушел ужинать lol

:-)
 
Кто-нибудь видит какие-либо проблемы с использованием StrToTime таким образом для выбора времени и стрэддла?

Пожалуйста, посоветуйте, спасибо

//+------------------------------------------------------------------+
//|                                      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);
  }    

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