Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 183

 
Integer:


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

La valeur du bt change à 5 minutes de chaque heure. Il est possible de ne pas multiplier par 3600 à la fin, ce sera le numéro de la barre depuis le début de l'époque, cela suffit pour définir une nouvelle barre.

Je ne comprends pas. Si vous pouvez obtenir le code complet.
 
gince:


Merci à tous pour votre aide.

La question était la suivante .

<Il existe une fonction appelée NewBar(sy, TF). On dirait qu'un nouveau bar s'est ouvert. Je veux obtenir un signal sur le graphique horaire de l'apparition d'une nouvelle barre avec un décalage de 5 min. Autrement dit, je veux obtenir un signal à 0,05, 1,05, 2,05, ..........., 10,05, 11,05, etc. >

Pour clarifier la question. La fonction doit retourner vrai toutes les heures, mais avec un retard de 5 min. C'est-à-dire que lorsque la formation de la barre 1.05 est terminée et que la barre 2.05 apparaît, la fonction retourne vrai lorsque cette dernière apparaît. La fonction renvoie vrai lorsque la barre apparaît à 1.10, 2.10, etc.

Dans l'image, la ligne jaune montre que la barre suivante était vraie.

En suivant votre conseil, j'ai essayé de cette manière mais cela ne fonctionne pas.


J'ai immédiatement constaté que les types ne sont pas les bons :

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

Et ensuite les comparer et leur attribuer des valeurs... de int à datetime

 

Je l'ai juste écrit à la main. Vous pouvez en saisir l'essentiel, et c'est très bien comme ça.

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

Qu'est-ce que c'est que cette agitation... Ici, chaque cinquième minute de l'heure renvoie VRAI et le maintient pendant une minute :

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


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

La valeur du bt change à 5 minutes de chaque heure. Il est possible de ne pas multiplier par 3600 à la fin, ce sera le numéro de la barre depuis le début de l'époque, cela suffit pour définir une nouvelle barre.


Manqué. Si vous multipliez par 3600 à la fin, ajoutez également la correction de 5*60.

 
Sepulca:

Qu'est-ce que c'est que cette agitation... Ici, chaque cinquième minute de l'heure renvoie VRAI et le maintient pendant une minute :


Je veux dire, vraiment, et nous sommes en train de nous ridiculiser ici...
 
Integer:


Manqué. S'il est multiplié par 3600 à la fin, il faut aussi rajouter la correction de 5*60.


C'est un peu enveloppé et illisible. Mais j'ai compris.
 
hoz:


J'ai tout de suite compris que les types sont faux :

Et ensuite les comparer et attribuer les valeurs... de int à datetime

int et datetime sont le même type.
 
Sepulca:

Qu'est-ce que c'est que cette agitation... Ici, chaque cinquième minute de l'heure renvoie VRAI et le maintient pendant une minute :

Pendant cette minute, le conseiller lui ouvre jusqu'à quarante commandes.
 
Roger:
Dans cette minute, le conseiller lui ouvrira jusqu'à quarante commandes.


C'est le moyen de contrôler... soit le nombre de commandes, soit seulement le premier appel à la fonction...