Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 183

 
Integer:


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

Der bt-Wert ändert sich alle 5 Minuten zu jeder Stunde. Es ist möglich, am Ende nicht mit 3600 zu multiplizieren, es wird die Taktnummer vom Beginn der Epoche sein, das ist genug, um einen neuen Takt zu definieren.

Das verstehe ich nicht. Wenn Sie den vollständigen Code erhalten können.
 
gince:


Ich danke Ihnen allen für Ihre Hilfe.

Die Frage war folgende.

<Es gibt eine Funktion namens NewBar(sy, TF). Es sieht so aus, als ob eine neue Bar eröffnet wurde. Ich möchte ein Signal auf dem Stundenchart über das Erscheinen eines neuen Balkens mit einer Verzögerung von 5 Minuten erhalten. Das heißt, ich möchte ein Signal bei 0,05, 1,05, 2,05, ..........., 10,05, 11,05, usw. erhalten. >

Um die Frage zu klären. Die Funktion sollte stündlich true zurückgeben, allerdings mit einer Verzögerung von 5 Minuten. D.h. wenn die Bildung des Balkens 1.05 beendet ist und der Balken 2.05 erscheint, gibt die Funktion true zurück, wenn letzterer erscheint. Die Funktion liefert true, wenn der Balken bei 1,10, 2,10 usw. erscheint.

In der Abbildung zeigt die gelbe Linie, dass der nächste Balken wahr war.

Nach Ihrem Tipp habe ich es auf diese Weise versucht, aber es funktioniert nicht.


Mir ist sofort aufgefallen, dass die Typen nicht richtig sind:

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

Und dann werden sie verglichen und Werte zugewiesen... int zu datetime

 

Ich habe es nur in Eile geschrieben. Sie können das Wesentliche verstehen, und es ist in Ordnung, soweit es geht.

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

Was soll die ganze Aufregung... Hier wird jede fünfte Minute der Stunde TRUE zurückgegeben und für eine Minute gehalten:

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


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

Der bt-Wert ändert sich alle 5 Minuten zu jeder Stunde. Es ist möglich, am Ende nicht mit 3600 zu multiplizieren, es wird die Taktnummer vom Beginn der Epoche sein, das reicht, um einen neuen Takt zu definieren.


Verfehlt. Wenn Sie am Ende mit 3600 multiplizieren, dann addieren Sie auch die 5*60-Korrektur zurück.

 
Sepulca:

Was soll die ganze Aufregung... Hier wird jede fünfte Minute der Stunde TRUE zurückgegeben und für eine Minute gehalten:


Ich meine, wirklich, und wir machen uns hier zum Klugscheißer...
 
Integer:


Verfehlt. Wenn man am Ende mit 3600 multipliziert, muss man auch die 5*60-Korrektur zurückrechnen.


Es ist ein bisschen verpackt und unlesbar. Aber ich verstehe den Punkt.
 
hoz:


Es fiel mir sofort auf, dass die Typen falsch sind:

Und dann vergleichen Sie sie und ordnen die Werte zu... int zu datetime

int und datetime sind der gleiche Typ.
 
Sepulca:

Was soll die ganze Aufregung... Hier wird jede fünfte Minute der Stunde TRUE zurückgegeben und für eine Minute gehalten:

In dieser Minute wird der Berater bis zu vierzig Aufträge für ihn eröffnen.
 
Roger:
In dieser Minute wird der Berater bis zu vierzig Aufträge für ihn eröffnen.


Auf diese Weise kann entweder die Anzahl der Aufträge oder nur der erste Aufruf der Funktion kontrolliert werden...