MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 570

 

Belirli bir zamanda durum kontrolü nasıl yapılır? örneğin, M5 grafiğinde, 22:59'da, yani çubuk kapanmadan bir dakika önce. dakika içinde kontrol edin.

       //22:59
       if (open[i]>close[i] && high[i]-low[i]>= 100 * Point )
        {
         BufferUP[i]=low[i]-distance* Point ;
        }
 
PolarSeaman :

Belirli bir zamanda durum kontrolü nasıl yapılır? örneğin, M5 grafiğinde, 22:59'da, yani çubuk kapanmadan bir dakika önce. dakika içinde kontrol edin.

Tarih göstergesinde - yalnızca daha genç zaman diliminden (bu durumda, M1) verileri okuyarak, kurcalamanız gerekecektir. Peki, sıfır çubuğu için:

  1. Bar kapanana kadar geçen süreyi hesaplayın.
  2. 1 dakika veya daha az bir süre kaldıysa gereğini yapıyoruz.

 
Ihor Herasko :

...Sıfır çubuğu için:

  1. Bar kapanana kadar geçen süreyi hesaplayın.
  2. 1 dakika veya daha az bir süre kaldıysa gereğini yaparız.

Bu, barın açılış saatini almak için şimdiki zaman mı?

Zaman 22:59, 23:00 aralığında değilse yinelemeyi atlayabilir

bu koşul nasıl doğru yazılır?

 
PolarSeaman :

Bu, barın açılış saatini almak için şimdiki zaman mı? bir dakikadan az sayılır mı?

Zaman 22:59, 23:00 aralığında değilse yinelemeyi atlayabilir

bu koşul nasıl doğru yazılır?

Zaman açıkça ayarlanmışsa, her şey yukarıda verilen şemaya göredir:

 input uint i_uHoursStart = 22 ; // Час начала действия диапазона
input uint i_uMinutesStart = 59 ; // Минуты начала действия диапазона
input uint i_uHoursEnd = 23 ; // Час окончания действия диапазона
input uint i_uMinutesEnd = 00 ; // Минуты окончания действия диапазона

uint g_uTimeStart, g_uTimeEnd;

int OnInit ()
{
...
   g_uTimeStart = i_uHoursStart * 60 + i_uMinutesStart;
   g_uTimeEnd = i_uHoursEnd * 60 + i_uMinutesEnd;
...

}

...
uint uCurDayMinutes = Hour () * 60 + Minute ();
if (uCurDayMinutes >= g_uTimeStart && uCurDayMinute < g_uTimeEnd)
{
   // Время от 22:59 до 23:00
}

Kodu kontrol etmedim. Yazım hataları ve bazı eksiklikler olabilir. Buradaki ana şey düşüncenin yönüdür.

Ayrıca saat ve dakikaların doğru olup olmadığını da kontrol etmeniz gerekir. Sonuçta kullanıcı 38 saat 112 dakika gibi değerler girebiliyor.

 
Ihor Herasko :

Zaman açıkça ayarlanmışsa, her şey yukarıda verilen şemaya göredir:

Kodu kontrol etmedim. Yazım hataları ve bazı eksiklikler olabilir. Buradaki ana şey düşüncenin yönüdür.

Ayrıca saat ve dakikaların doğru olup olmadığını da kontrol etmeniz gerekir. Sonuçta kullanıcı 38 saat 112 dakika gibi değerler girebiliyor.

Göze, kullanıcıya, 112 dakikada)

neden olamaz?

 if ( TimeToStr ( TimeCurrent (), TIME_DATE | TIME_MINUTES )>= "22:59" && TimeToStr ( TimeCurrent (), TIME_DATE | TIME_MINUTES )< "23:00" )

belirtilen zamanda göstermiyor

birkaç aralık olacak, her birinin kapatılması gerekiyor

 

tırnak işaretleri bir dakika "uyuyakalabilir" ve zamanı kaçırabilir)

doğru olacak - bir zamanlayıcı yapmak, yerel ve geçerli zamanı senkronize etmek ve zamanlayıcıda doğru zamanı "yakalamak"

 
PolarSeaman :

Gözde, kullanıcıya, 112 dakikada)

neden olamaz?

Bu kesinlikle yanlış olan çözümdür, çünkü sayıları değil dizileri karşılaştırıyorsunuz. Yine de TimeToStr ile bir şeyler bulabilirsin. Ancak bu yaklaşım, sayılarla çalışmaya kıyasla daha yavaş performansa mahkumdur. Sonuçta, dize işlemleri, en basit aritmetik işlemlerle (+, -, /, *) kıyaslanamayacak kadar fazla zaman alır.

birkaç aralık olacak, her birinin kapatılması gerekiyor

Bu, istenen aralıkların değerlerinin diziler halinde saklanmasıyla yapılır. Doğru, ayarlarda nasıl görüneceği belli değil - çok fazla yapılması gerekecek. Çözümler kesinlikle mevcut olsa da. Zor ama mevcut.

 
Taras Slobodyanik :

tırnak işaretleri bir dakika "uyuyakalabilir" ve zamanı kaçırabilir)

doğru olacak - bir zamanlayıcı yapmak, yerel ve geçerli zamanı senkronize etmek ve zamanlayıcıda doğru zamanı "yakalamak"

Sonuçta, belirli bir zamanda hiçbir şey yapmamanız gerekiyor. Yani her şey yolunda))

 
Taras Slobodyanik :

tırnak işaretleri bir dakika "uyuyakalabilir" ve zamanı kaçırabilir)

zamanlayıcıyı doğru yapın, yerel ve geçerli zamanı senkronize edin ve zamanlayıcıda doğru zamanı "yakalayın"

OnTimer() içinde OnCalculate() eklemek mümkün mü?

Yerel ve şimdiki zamanı nasıl senkronize edeceğimi bilmiyorum, yardımda bulamıyorum.

 
Ihor Herasko :

Sonuçta, belirli bir zamanda hiçbir şey yapmamanız gerekiyor. Yani her şey yolunda))

nasıl yapılmaz? sadece şu anda kontrol etmeniz ve bir gün uyumanız gerekiyor)