[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 862

 
FOReignEXchange:

Vous vouliez cinq minutes, n'est-ce pas ?

C'est ainsi que cela devrait fonctionner. Toutes les 5 minutes, il y aura un redraw, si vous mettez à zéro les paramètres requis, qui sont utilisés par l'indicateur.


extern int timedraw=1 ; - cela représente une minute

J'ai fait ce que je voulais avec votre aide. En ce qui concerne les ticks, ils ne sont pas très réguliers, mais ce n'est pas crucial, ils ne seront pas utilisés sur l'historique - c'est un script et un indicateur pour le trading manuel.

trois écrans, ou plutôt 4

ZS : Votre code - oui, en effet, il est plus utile pour écrire un indicateur qui sera utilisé par l'EA.

 
FOReignEXchange:

Sauf que parfois, il n'y a pas de tic pendant trois minutes, comme maintenant. En regardant le graphique M1 de GBPUSD, il n'y avait pas de ticks de 3-4 minutes. Vous ne pouvez pas utiliser TimeCurrent() sur l'historique. Ou vous ne pouvez pas l'utiliser dans le testeur parce que c'est l'heure actuelle et qu'elle ne change pas.

Sur la base du code ci-dessus, nous pouvons dire que le signal de message ne sera pas toutes les 5 minutes, mais toutes les 5 barres sur les minutes.


datetime TimeCurrent( )

Renvoie la dernière heure connue du serveur (last quoted time) sous la forme du nombre de secondes écoulées depuis 00:00 le 1er janvier 1970.

Remarque : lors des tests, la dernière heure connue du serveur est simulée.

Mais quand même, est-ce que c'est simulé ? Oui - ce ne sera pas exact avec une marge d'erreur non négligeable je suppose, mais l'utilisation sur le test est possible. Si je ne sais pas ou ne comprends pas quelque chose, je vous serais reconnaissant de m'expliquer.
 
usver:
Mais quand même, est-ce que c'est simulé ? Oui - il ne sera pas précis avec une marge d'erreur non négligeable je suppose, mais l'utilisation sur un test est possible. S'il y a quelque chose que je ne sais pas ou que je ne comprends pas, je vous serais reconnaissant de m'expliquer.

Je pense que vous avez tort. Attendez une minute...

Ah, je me suis souvenu, TimeCurrent() ne peut pas être utilisé pour recalculer l'historique du graphique courant.

Par exemple, lorsque le code suivant est actuellement attaché

                                      while(i>0)
                                      {
if (iHigh(NULL,0,i)>X)     
   {
   t=TimeCurrent();
   }
                                      i--
                                      }                                 

se souviendra du temps réel actuel, et non de la i-ème barre où iHigh(NULL,0,i)>X

Et dans le testeur, je ne sais pas.

 
FOReignEXchange:

Je pense que vous avez tort. Attendez une minute...

Ah, je me suis souvenu, TimeCurrent() ne peut pas être utilisé pour recalculer l'historique du graphique courant.

Par exemple, lorsque le code suivant est actuellement attaché

se souviendra du temps réel actuel, et non de la i-ème barre où iHigh(NULL,0,i)>X

Et dans le testeur, je ne sais pas.

TimeCurrent() Renvoie la dernière heure connue du serveur (heure d'arrivée de la dernière cotation) en nombre de secondes, et n'a rien à voir avec i-bar, que ce soit dans le testeur, la démo ou le réel.
 
FOReignEXchange:

Je pense que vous avez tort. Attendez une minute...

Ah, je me suis souvenu, TimeCurrent() ne peut pas être utilisé pour recalculer l'historique du graphique courant.

Par exemple, lorsque le code suivant est actuellement attaché

se souviendra du temps réel actuel, et non de la i-ème barre où iHigh(NULL,0,i)>X

Et dans le testeur, je ne sais pas.


Oui, c'est clair. J'étais juste confus par la phrase que TimeCurrent() ne peut pas être utilisé sur l'historique et dans le testeur.

Le code suivant ne sera-t-il pas incorrect ? L'heure d'arrivée du dernier devis est simulée et nous l'utilisons.

int time;
if (time==0)
   time=iTime(NULL,1,0); // Точка отсчета
if (TimeCurrent()-time>=300) // Проверяем сколько времени прошло - равно ли 5 минутам
   {
      // Выполняем, что хотели
      ...
      ...
      ...
      time=0;
    }

Votre solution m'a semblé meilleure que celle décrite ci-dessus.

 
Et merci de ma part aussi. Comme on dit, tout ce qui est brillant est simple.
keekkenen:
 
Et merci de ma part aussi. Comme on dit, tout ce qui est brillant est simple.
keekkenen:
 
Il s'avère que tout est simple comme bonjour. Merci pour le bloc-notes.
keekkenen:
 
usver:

Le code suivant ne sera pas erroné ?

int time;

   int start()
   {

if (time==0)  time=iTime(NULL,1,0);    // Точка отсчета

if ((TimeCurrent()-time)>=300)        // Проверяем сколько времени прошло - равно ли 5 минутам
   {
      // Выполняем, что хотели
      ...
      ...
      ...
      time=0;
    }

   }

int time ; doit être supérieur à l'heure de début, sinon le temps sera toujours égal à zéro. Et il devrait être mis entre parenthèses par(TimeCurrent()-time)

Le reste du code semble être correct. Je ne l'ai pas vérifié.

 

quel est le meilleur moyen de sauvegarder des données/variables importantes en cas de blocage du terminal (panne de courant) ?

- les variables globales du terminal ? vers un fichier ?

- à quelle fréquence doivent-ils être sauvegardés ? (la dernière valeur d'équité et quelques bools sont importants)