特定の時間を参照する方法 - ページ 4

 
Agent86:
こんにちは
回答ありがとうございました。

私は時間範囲または範囲/フィルタに関するあなたの投稿を読んで、私は結論を理解したが、完全に式ではありません。

あなたの回答から、私はあなたが投稿した方程式を理解していないので、if(Time[1] == 7:15) のようなものを正しい形式で比較する式を作成する方法を理解していないと判断せざるを得ません。

書かれていることを読んで、それを理解する必要があります ... もし、関数が理解できないなら、それについて調べて、理解できるまで読んでください。 WHRが 投稿したコードは非常にシンプルな数学です ... あなたがよく知らないかもしれない唯一のものは%です ... それはパーセントを意味しません ... それを調べて、あなたはそれをここで見つけることができます。 https://docs.mql4.com/basis/operations/math
 
RaptorUK:

あなたは本当に、ドキュメントの周りのあなたの方法を学び始める必要があります... ...

TimeFrameを使う関数に行くと、timeframe enumerationが表示され、ここにリンクされています。 Timeframe enumerationは、Period_H1が60の値であることを教えてくれます。. . 60分 * 60 = 秒 ... ... 日付は秒単位です。


あなたのコードはうまくいきません ... あなたのtime_selectはdatetimeでは ありません... 思い出してください、datetimeとは何ですか? ドキュメントから ... "datetime type (integer representing the amount of seconds elapsed from midnight, 1 January, 1970)." もし、午前7時15分を表すdatetimeが必要なら、それは1970年の1月から今日の午前7時15分の経過した秒数にならなければなりません ......これは、"date time(時) "です。

あなたが計算したのは、午前0時から今朝7時15分までの秒数であり、これは日付時刻ではありません。


私はこれがdatetimeではないことを知っているし、私は正確にPERIOD_H1を理解している場合は、私もそれを知っていたと思います。

私は今、私は1970年1月1日から秒に変換する必要がありますそれを取得します。
OKありがとうございます
 
RaptorUK:
書かれていることを読んで、それを理解する必要があります ... もし、関数が理解できないなら、それについて調べて、理解できるまで読んでください。 WHRが 投稿したコードは,非常にシンプルな数学です. 唯一よくわからないのが%です. https://docs.mql4.com/basis/operations/math
がパーセントを意味しないことは理解しています。
86400の件、なぜそれが使われるのか理解できませんでした。

私はちょうどこれを考え出した==一日に何秒それを得た感謝
 
ありがとうございます。

私はこの作業を続け、特定の日の真夜中を結論づける様々な方法を理解しました。

それから、18時間×3600を計算するための他の方法を提案されましたが、これは1時間の秒数×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は 正しくありません。
 
Yep thanks I see it
投稿した直後は考えていたのですが、夕食を食べるために帰ってしまいました(笑)

Time_Select = bod + extHour*3600 + extMinutes*60,
7:15とかの時間を実際のユーザー入力でシンプルに表現する方法はいずれわかると思いますが、それでも求めていた結果が得られてよかったです。



いずれにせよ、このような時間を経て、私はようやく自分自身の管理も含めて時間を管理できるようになり、より良いmqlの学習ができるようになりました。

本当にありがとうございました。
 
なぜ、時間選択だけではダメなのでしょうか?

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

if(Time[1] == var1)
{
}
何か問題があるのでしょうか?
 
Agent86:
うん、ありがとう、わかったよ
投稿した後、すぐに考えたのですが、夕食を食べるために帰りました(笑)

:-)
 
この方法で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);
  }    

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