Belirli bir zamana nasıl atıfta bulunulur - sayfa 4

 
Agent86 :
Merhaba
cevap için teşekkürler

Bir zaman aralığı veya aralık/filtre ile ilgili yazınızı okudum ve sonucu anladım ama denklemleri tamamen anlamadım

Cevabınıza göre, gönderdiğiniz denklemleri anlamıyorum çünkü if(Time[1] == 7:15) gibi bir şeyi uygun biçimde karşılaştıracak bir ifadenin nasıl oluşturulacağını anlamadığımı varsaymalıyım.

Yazılanları okumalı ve çözmelisiniz. . . Bir İşlevi anlamadıysanız, ona bakın ve anlayana kadar okuyun. WHR'nin gönderdiği kod çok basit matematiktir. . . aşina olmadığınız tek şey % . . . yüzde anlamına gelmez. . . arayın, burada bulabilirsiniz: https://docs.mql4.com/basis/operations/math
 
RaptorUK :

Gerçekten belgelerle ilgili yolunuzu öğrenmeye başlamanız gerekiyor. . .

TimeFrame kullanan herhangi bir fonksiyona gidin ve zaman çerçevesi numaralandırmasını göreceksiniz. . . ve şuraya bağlanır: Zaman çerçevesi numaralandırması ve bu size Period_H1'in 60 değeri olduğunu söyleyecektir. . . diğer bir deyişle 60 dakika. . . 60 dakika * 60 = saniye . . . tarihsaatler saniye cinsindendir.


Kodladığınız şey çalışmayacak. . time_select'iniz bir datetime DEĞİLDİR . . . hatırla, tarih saat nedir? Dokümantasyondan . . . " datetime type (tam sayı, 1 Ocak 1970 gece yarısından itibaren geçen saniye miktarını temsil eder). " 07:15 anlamına gelen bir tarih saat istiyorsanız, 1 Ocak 1970 ile 7 arasında geçen saniye sayısı olmalıdır: bugün saat 15. . .

Hesapladığınız şey, bu sabah Geceyarısı'ndan sabah 7:15'e kadar geçen saniye sayısı ve bu bir tarih saati değil.


Bunun bir tarih olmadığını biliyorum ve sanırım PERIOD_H1'in tam olarak ne olduğunu anlasaydım bunu da bilirdim.

Şimdi anlıyorum, 1 Ocak 1970'den saniyeye çevirmem gerekiyor
tamam teşekkürler
 
RaptorUK :
Yazılanları okumalı ve çözmelisiniz. . . Bir İşlevi anlamadıysanız, ona bakın ve anlayana kadar okuyun. WHR'nin gönderdiği kod çok basit matematiktir. . . aşina olmadığınız tek şey % . . . yüzde anlamına gelmez. . . arayın, burada bulabilirsiniz: https://docs.mql4.com/basis/operations/math
%'nin yüzde anlamına gelmediğini anlıyorum.
86400'ü veya neden kullanıldığını anlamadım.

Bunu şimdi anladım == günde kaç saniye anladım teşekkürler
 
teşekkürler insanlar

Bunun üzerinde çalışmaya devam ettim ve belirli bir günün gece yarısını bitirmenin çeşitli yollarını anladım.

Ardından, 18 saat x 3600'ü hesaplamak için önerildiği gibi, bir saatteki saniye sayısıyla çarpılan X 18'in bana HR1800'ü verdiğini görüyorum.

Sanırım bundan sadece bir aralık için değil, belirli bir zaman için bazı zaman kodları da dahil olmak üzere çeşitli zaman kodları yapabilmeliyim.

Tekrar teşekkürler
 
Seçilebilir bir zaman ve/veya zaman aralığı için ilerlememin bir kısmı burada

Eksik ve kaba ama en azından şimdi tüm gönderileri anlıyorum çok teşekkürler

 //+------------------------------------------------------------------+
//|                                         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 :
Seçilebilir bir zaman ve/veya zaman aralığı için ilerlememin bir kısmı burada

Eksik ve kaba ama en azından şimdi tüm gönderileri anlıyorum çok teşekkürler


Yine de Time_Select yanlıştır.
 
Evet teşekkürler görüyorum
Yazdıktan hemen sonra düşündüm ama akşam yemeğini yemek için ayrıldım lol

Time_Select = bod + extHour* 3600 + extMinutes* 60 ,
Sonunda 7:15 veya buna benzer bir süre için gerçek bir kullanıcı girdisini nasıl kullanacağımı anlayabileceğimi biliyorum ama yine de aradığım sonuçları görmek güzel.

Üzerinde çalışmam gerektiğini düşündüğüm bir anda bir işlev anlayışı, muhtemelen sözdizimini öğrenirken çok fazla bilgi doldurdum ve her sözlük işlevini ve konuyu benim için gerçekten kolaylaştıracak kadar iyi çalışmadım.

Her neyse, bunca zamandan sonra, mql'yi daha iyi öğrenebilmek için kendimi yönetmek de dahil olmak üzere nihayet zamanım var.

hepinize tekrar teşekkürler
 
Neden bunu sadece bir zaman seçmek için kullanamıyorum, bunu olduğundan daha mı karmaşık hale getirdim?

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

if (Time[ 1 ] == var1)
{
}
Bunda yanlış bir şey var mı?
 
Agent86 :
Evet teşekkürler görüyorum
Yazdıktan hemen sonra düşündüm ama akşam yemeğini yemek için ayrıldım lol

:-)
 
Zaman ve straddle seçimleri için StrToTime'ı bu şekilde kullanmayla ilgili herhangi bir sorun gören var mı?

Lütfen öğüt verin, teşekkürler

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

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