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

 
LRA:

int Flags=FILE_WRITE+FILE_TXT+FILE_COMMON ;

int Info = FileOpen(fName,Flags) ;

FileWrite(Info,What's Up) ; Sur l'autre terminal, lire. Curseur sur FileOpen et F1 - obtenir de l'aide

Merci, je vais regarder !
 

Bonjour à tous.

Mon tableau de séries temporelles n'est pas mis à jour dans la chaîne de définition de l'événement commercial (lorsqu'une nouvelle bougie apparaît), ou plutôt sa valeur ne change pas lorsqu'une nouvelle bougie apparaît.

if(T[i]!=iTime(NULL,TF[i],1))

T[i] est d'abord défini lors du lancement de l'Expert Advisor, puis, lorsqu'une nouvelle bougie apparaît, la valeur est mise à jour.

Le paramètre I est défini sur la base des paramètres d'entrée.

Ce qui est intéressant, c'est que dans la version où j'ai utilisé plusieurs TF pour travailler, et où j'ai dû utiliser une boucle for à cause de cela, tout a bien fonctionné, mais ici ça échoue - il n'est pas mis à jour, et c'est tout...(

 
Igemon:

Bonjour à tous.

Mon tableau de séries temporelles n'est pas mis à jour dans la chaîne de définition de l'événement commercial (lorsqu'une nouvelle bougie apparaît), ou plutôt sa valeur ne change pas lorsqu'une nouvelle bougie apparaît.

T[i] est d'abord défini lors du lancement de l'Expert Advisor, puis, lorsqu'une nouvelle bougie apparaît, la valeur est mise à jour.

Le paramètre I est défini sur la base des paramètres d'entrée.

Ce qui est intéressant, c'est que j'ai utilisé plusieurs TF pour travailler dans la version où je devais utiliser une boucle for et cela a bien fonctionné, mais cela échoue maintenant - il ne se met tout simplement pas à jour...(

Apparemment, il n'a pas été retiré de la boucle correctement...

Voici une fonction personnalisée pour définir une nouvelle barre

bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

Variables d'entrée :

tf - période du graphique ou valeur de la période pour déterminer l'apparition d'une nouvelle barre.

lastbar - une variable passée par référence pour stocker l'heure de la dernière barre.

void OnTick()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar(PERIOD_D1, lastDay);
 if(newDay)
 Print("наступил новый день");
// и нового часа
 newHour = NewBar(PERIOD_H1, lastHour);
 if(newHour)
 Print("наступил новый час");
}
 
AlexeyVik
bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

La première fois qu'elle est appelée depuis l'EA, elle signale immédiatement une nouvelle barre. Corrigé par l'ajout d'appels de fonctions à OnInit()

Lorsqu'il est appelé pour la première fois depuis le script, il signale immédiatement une nouvelle barre, puis il est toujours faux. Corrigé en ajoutant RefreshRates() au début de la fonction

 
LRA:

La première fois qu'elle est appelée depuis l'EA, elle signale immédiatement une nouvelle barre. Corrigé par l'ajout d'appels de fonctions à OnInit()

Lorsqu'il est appelé pour la première fois depuis le script, il signale immédiatement une nouvelle barre, puis il est toujours faux. Corrigé en ajoutant RefreshRates() au début de la fonction

1. Au premier appel, c'est vrai, c'est tout à fait normal, s'il n'y a pas eu de barres, celle qui est apparue sera la nouvelle. Si nécessaire, si la stratégie l'exige, il est possible de refuser une nouvelle barre et quelques autres de cette manière. D'un coup d'œil, sans réfléchir, j'en introduis deux autres.

static datetime lastDay = iTime(_Symbol, PERIOD_D1, 0);, lastHour = iTime(_Symbol, PERIOD_H1, 0);

ou

if(lastbar != curbar && lastbar > 0)

2. Pourquoi le script définirait-il une nouvelle barre ? C'est stupide à quel point ?

 

Mais pourquoi ça ne marche pas ici...((( Je pense que c'est bon((

extern int TFrame=1;

datetime T[6];
int TF[6]={1,5,15,30,60,240};
int i=TFrame-1;

int OnInit()
   {
   T[0]=iTime(NULL,1,1);
   T[1]=iTime(NULL,5,1);
   T[2]=iTime(NULL,15,1);
   T[3]=iTime(NULL,30,1);
   T[4]=iTime(NULL,60,1);
   T[5]=iTime(NULL,240,1);
   for(int q=0;q<=5;q++)
      Print(T[q]);
   return(INIT_SUCCEEDED);
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon:

void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
Excuse-moi, Igemon, mais pourquoi cette imprudence ? Quel genre de personne vous a conseillé de faire ça ?
 
Bonne journée à tous. Quelqu'un pourrait-il me conseiller : comment puis-je m'assurer que l'EA fonctionne correctement, c'est-à-dire qu'il exécute un algorithme donné lorsque le terminal est redémarré ou lorsque l'internet est déconnecté ?
 
artmedia70:
Excusez-moi, Ygemon, mais pourquoi cette imprudence ? Quel genre de personne vous a conseillé de faire ça ?
Qu'est-ce qu'il y a de mal à ça ? Je n'ai juste pas mis le reste du code, parce que tout est normal ici. La boucle est nécessaire pour ne pas dépendre des ticks, lors de la définition des événements, ne pas redémarrer le PC est dormir à 100 mlsec
Raison: