Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 183

 
Integer :


int bt=((TimeCurrent()-5*60)/3600)*3600;

bt değeri her saatin 5 dakikasında değişecektir. Sonunda 3600 ile çarpamazsınız, çağın başından itibaren bir çubuk numarası olacaktır, bu yeni bir çubuk belirlemek için yeterlidir.

anlamadım Mümkünse tam kod.
 
gince :


Yardımcı olan herkese teşekkürler.

Soru şuydu.

< NewBar(sy, TF) gibi bir fonksiyon var. Yeni bir bar açılıp açılmadığını görmek istiyor. Saatlik grafikte 5 dakikalık bir gecikmeyle yeni bir çubuğun görünümü hakkında bir sinyal almam gerekiyor. Yani 0.05, 1.05, 2.05, ........., 10.05, 11.05, vb.'de bir sinyal almak istiyorum. >

soruyu açıklıyorum. İşlev, her saat başı true değerini döndürmelidir, ancak 5 dakikalık bir gecikmeyle. Yani, çubuk 1.05'in oluşumu sona erdiğinde ve çubuk 2.05 göründüğünde, ikincisinin görünümü ile işlev true değerini döndürür. İşlev, 1.10, 2.10, vb.'de bir çubuğun görünümü ile true değerini döndürür.

Resimde sarı çizgi, bir sonraki çubukta doğru olduğunu gösteriyor.

Öneriniz üzerine denedim ama olmadı.


Tiplerin doğru olmadığı hemen gözüme çarptı:

 static int   LastBar = 0 ; 
datetime     curbar = iTime ( Symbol (), 60 , 0 ) + 300 ; 

Ve sonra onları karşılaştırın ve değerleri atayın ... int tarih saatine

 

Aceleyle yazdığı akım. Anlamı yakalayabilirsiniz ve her şey yolundadır.

 bool IsTrueBar ()
{
     static datetime LastTrueBar = 0 ;
     datetime OOT, CurBar, ShiftFromOOT;
//----    
    OOT = iTime ( Symbol (), PERIOD_H1 , 0 );   // Время открытия часовик
    CurBar = OOT + ShiftFromOOT;             // Время открытия со сдвигом
    
     if (LastTrueBar != CurBar)
    {
        LastTrueBar = CurBar;
         return ( true );
    }
     else return ( false );
}
 

Neden mızrakları kırıyorsun ... Saatin her beş dakikası DOĞRU değerini döndürür ve bir dakika boyunca tutar:

 bool NewBar(){
 if (Minute()== 5 ) return ( true );
 else return ( false );
}
 
Integer :


int bt=((TimeCurrent()-5*60)/3600)*3600;

bt değeri her saatin 5 dakikasında değişecektir. Sonunda 3600 ile çarpamazsınız, çağın başından itibaren bir çubuk numarası olacaktır, bu yeni bir çubuk belirlemek için yeterlidir.


Eksik. Sonunda 3600 ile çarparsanız, 5 * 60 düzeltmesini geri ekleyin.

 
Sepulca :

Neden mızrakları kırıyorsun ... Burada, saatin her beş dakikasında bir DOĞRU döndürür ve bir dakika boyunca tutar:


Ne de olsa, gerçekte ve burada akıllı bir bakışla yığıldık ...
 
Integer :


Eksik. Sonunda 3600 ile çarparsanız, 5 * 60 düzeltmesini geri ekleyin.


Her nasılsa her şey sarılmış ve okunamıyor. Konuyu anlamama rağmen.
 
hoz :


Tiplerin doğru olmadığı hemen gözüme çarptı:

Ve sonra onları karşılaştırın ve değerleri atayın ... int tarih saatine

int ve datetime aynı türlerdir.
 
Sepulca :

Neden mızrakları kırıyorsun ... Saatin her beş dakikası DOĞRU değerini döndürür ve bir dakika boyunca tutar:

Bu dakika boyunca danışman onun için kırk sipariş açacak.
 
Roger :
Bu dakika boyunca danışman onun için kırk sipariş açacak.


Yani ya sipariş sayısını ya da sadece fonksiyona yapılan ilk çağrıyı kontrol etmeniz gerekiyor..