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

 

Bonjour.

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


Comment cela peut-il être fait ? Peut-être la fonction elle-même peut-elle être repensée d'une certaine manière ?

 
hoz:

Eh bien, j'ai supprimé la bibliothèque #property, mais il n'y a pas eu d'avertissement, alors qu'il n'y a pas de fonction de démarrage...

Des avertissements sur quoi ?
 
Vinin:

Des avertissements sur quoi ?


Qu'en est-il... Ici :

sergeev:
vous en avez besoin si vous ne voulez pas voir des avertissements sur un démarrage manquant

 
gince:

Bonjour.

Il existe une fonction NewBar(sy, TF). Il vérifie si un nouveau bar a été ouvert. J'ai besoin d'obtenir un signal sur le graphique horaire concernant l'apparition d'une nouvelle barre avec un décalage de 5 minutes. Je veux obtenir le signal à 0,05, 1,05, 2,05, ..........., 10,05, 11,05, etc.


Comment cela peut-il être fait ? Est-il possible de modifier la fonction elle-même ?


Vous le déclarez globalement :

datetime = bdt_lastBarTime;

IN INIT :

bdt_lastBarTime = 0;

EN DÉPART :

if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

g_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Au lieu de Time[0] ; vous pouvez marquer iTime() pour obtenir une nouvelle barre pour une période de temps autre que celle en cours.

 
hoz:


Vous le déclarez globalement :

INIT :

EN DÉPART :

Vous pouvez marquer iTime() au lieu de Time[0] ; pour obtenir une nouvelle barre pour une période autre que la période actuelle.


Le seul problème est que. Les noms des variables ne correspondent pas. Aïe, aïe. C'est soit l'inattention, soit l'habitude.
 
Vinin:

Sauf que voilà le problème. Les noms des variables ne correspondent pas. Oh, mon Dieu. Soit l'inattention, soit l'habitude

C'est de l'inattention. Correction.

Vous déclarez globalement :

datetime = bdt_lastBarTime;

IN INIT :

bdt_lastBarTime = 0;

EN DÉPART :

if (bdt_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

bdt_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Au lieu de Time[0] ; vous pouvez marquer iTime() pour obtenir une nouvelle barre pour une période de temps autre que la période actuelle.

 

en un coup d'œil, uniquement pour cette tâche.

bool NewBar05()
{
static bool newbar;
if (Minute()==5 && !newbar) 
   {
   newbar=true;
   return true;
   } 
if (Minute()>5 && newbar)  newbar=false;
   return  false;
}
    
 
xxxKillxxx:

Camarade, excusez-moi encore, mais j'ai un problème..... J'ai réussi à vérifier que tous les blocs se ferment sans erreur ni avertissement et je n'obtiens aucune syntaxe, mais je n'obtiens aucun signal lorsque je lance mon EA, mes trades ne se ferment pas comme prévu. Le problème est que je ne peux pas mettre le code de l'EA, et pour résoudre le problème bien très nécessaire, si vous n'avez pas l'esprit de passer sur moi à nouveau votre temps précieux, s'il vous plaît dites-moi quelles options mai être pour résoudre le problème, si elle est importante, je peux seulement dire que l'EA a été créé à forex générateur 4.

J'aimerais que vous m'en expliquiez les raisons (de préférence sur vos doigts et sur le ton de la plaisanterie, car je ne fais que ce genre de programmation) Merci d'avance.


Mon code ou une partie du code de votre Expert Advisor ferme le profit spécifié de 0.1% et plus. Sur le générateur de forex 4, avez-vous pu faire quelque chose pour que les fonds propres soient plus élevés que le solde ?
 
Roger:

d'un coup d'œil, spécialement pour cette tâche.


Merci à tous pour votre aide.

La question était la suivante.

<Il existe une fonction NewBar(sy, TF). Il vérifie si un nouveau bar a été ouvert. J'ai besoin d'obtenir un signal sur le graphique horaire concernant 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 façon mais ça ne marche pas.

bool isNewBar5 ()
{

    static int   LastBar = 0; 
    datetime      curbar = iTime (Symbol(), 60, 0) +300; 
    int                h = Hour();
    if (LastBar != curbar && h == h + 1 && Minute() == 5)
    {
        LastBar = curbar;
        return (true);
    }
    else
    {return (false);}
}
 
gince:

Bonjour.

La fonction NewBar(sy, TF) est disponible. Il vérifie si un nouveau bar a été ouvert. J'ai besoin d'obtenir un signal d'une nouvelle barre sur le graphique horaire avec un décalage de 5 minutes. Je veux obtenir le signal à 0,05, 1,05, 2,05, ..........., 10,05, 11,05, etc.


Comment cela peut-il être fait ? Peut-être la fonction elle-même peut-elle être réécrite ?


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

La valeur du bt changera à 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.

Raison: