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

 

belck
:

приветствую!

помогите разобраться. пытаюсь сделать в советнике закрытие сделок в пятницу за пол часа до закрытия сессии.

пробовал по учебнику, то ничего у меня не получилось

может у кого уже готовый код есть.

код закрытия у меня есть. мне нужен сам сигнализирующий закрытие сессии за 30 минут.

Que dites-vous de ça ?

extern datetime DateTime = D'2014.03.21 11:30';  // Дата и время закрытия



if (TimeCurrent()>=DateTime)
  {
  }
Je n'ai pas besoin de la date, mais d'un signal chaque vendredi 30 minutes avant et 30 minutes avant la fin de la session, puis j'intègre le signal dans le code de clôture des ordres.
 
Celui-ci fonctionne, pas de dysfonctionnement.
//---закрыть все позиции в пятницу в 19-40 по серверному времени 
   if(DayOfWeek()==5 && Hour()==19 && Minute()>40){
      //Дать сигнал на закрытие всех позиций    
       
   } 
 
belck:

Salutations !

J'essaie de faire en sorte que mon EA ferme les transactions le vendredi une demi-heure avant la clôture de la session.

J'ai essayé le tutoriel, mais ça n'a pas marché.

Je peux demander si quelqu'un a un code prêt.

J'ai le code de fermeture. J'ai besoin qu'il puisse fermer une session 30 minutes à l'avance.


Cela peut être plus universel pour tout courtier. Dommage qu'il n'y ait pas encore de différence dans les cotations des courtiers de l'UTC.

void OnStart()
  {
//---
   int hrd=-3; // разница времени в часах котировок брокера с Гринвичем
   datetime tc=TimeCurrent();
   if(f_ts(tc,hrd)>0) Print("CloseAll()");
  }
//+------------------------------------------------------------------+


int f_ts(datetime ti, int hrd)
{
   if(TimeDayOfWeek(ti)!=5) return(-1); // если не пятница  выходим
   datetime t0d,te;
   int dtd=1440*60, res=-1;
   t0d=ti/dtd*dtd;        // начало торгового дня
   te=t0d+dtd-30*60+hrd*3600;     // 30 мин до конца сессии
   if (ti>te)  res=1;
   else        res=0;
   return(res);
 
granit77:
Celui-ci fonctionne, pas de dysfonctionnement.

J'ai essayé de cette façon, je l'ai testé avec un testeur, puis la fonction n'a pas fonctionné.
 

Eh bien, cela ne devrait pas fonctionner dans le testeur.

if(DayOfWeek()==5 && Hour()==19 && Minute()>40)

Les fonctions sont basées sur l'heure actuelle, et ce que j'ai écrit ci-dessus fonctionnera car TimeCurrent() et TimeDayOfWeek() fonctionnent correctement. Il suffit d'ajouter la fonction permettant de passer à l'heure d'été et d'hiver, c'est-à-dire le paramètre hrd. Le basculement s'effectue généralement en fonction de l'heure d'été américaine (premier dimanche de novembre, deuxième dimanche de mars), mais certains courtiers n'effectuent pas ce basculement.

 
belck:

Salutations !

J'essaie de faire en sorte que mon EA ferme les transactions le vendredi une demi-heure avant la clôture de la session.

J'ai essayé le tutoriel, mais ça n'a pas marché.

Je peux demander si quelqu'un a un code prêt.

J'ai le code de fermeture. J'ai besoin qu'il signale la fermeture de la session 30 minutes avant.

r772ra:

Peut-être comme ça.

Pas du tout comme ça.

Nous devons définir l'heure de fermeture de la session datenime SessionClose = . Si ce n'est pas la clôture de la session, mais la clôture de la transaction, alors SessionClose = StrToTime("23:30");

Définir le jour de la semaine TimeDayOfWeek()

Si vendredi, vérifiez TimeCurrent() >= SessionClose

 
AlexeyVik:

Ce n'est pas du tout le cas.

Nous devons définir l'heure de fermeture de la session datenime SessionClose = .... Si ce n'est pas la clôture de la session, mais la clôture de la transaction, alors SessionClose = StrToTime("23:30");

Définir le jour de la semaine TimeDayOfWeek()

Si vendredi, vérifiez TimeCurrent() >= SessionClose


pouvez-vous décrire le code plus en détail ?
 
AlexeyVik:

Ce n'est pas du tout le cas.

Nous devons définir l'heure de fermeture de la session datenime SessionClose = .... Si ce n'est pas la clôture de la session, mais la négociation, alors SessionClose = StrToTime("23:30");


Heure de fermeture de la session SessionClose = ... et de faire des offres ... ne fonctionnera pas dans le testeur, quelle que soit la façon dont vous le définissez :) Contrôle du début du mois de mars à aujourd'hui
 
belck:

pouvez-vous décrire le code plus en détail ?

Oui, je peux. Mais ça va à l'encontre de mes principes.


GSB:
heure de fermeture de la session datenime SessionClose = ... et de faire des offres ... ne fonctionnera pas dans le testeur, quelle que soit la façon dont vous le définissez :) Vérifiez de début mars à ce jour

Qu'est-ce que ça a à voir avec le testeur ? Bien que cela ait fonctionné dans le testeur jusqu'aux dernières mises à jour. Je ne vais pas discuter maintenant, je ne l'ai pas testé et je ne serai pas obligé d'allumer le testeur de sitôt.
 
AlexeyVik:

Je peux. Mais c'est contre mes principes.


Qu'est-ce que le testeur a à voir là-dedans ? Bien que cela ait fonctionné dans le testeur jusqu'aux dernières mises à jour. Maintenant, je ne vais pas discuter, je n'ai pas testé et je ne serai pas obligé d'allumer le testeur de sitôt.

Pas d'objection sur les principes, mais l'homme veut exécuter l'EA dans le testeur, donc vos options ne lui conviennent pas.

Utilisez ma version, elle fonctionnera dans le réel et dans le testeur, mais jusqu'à ce qu'ils fassent une fonction pour prendre automatiquement en compte le passage à l'heure d'été en hiver, définissez l'heure de transition pour cette année comme suit

string data_1="2014.03.09"; string data_2="2013.11.03";
if(TimeCurrent() < StrToTime(data_1) && TimeCurrent() > StrToTime(data_2) ) hrd=-2; else hrd=-3;
De mars 2013 à novembre 2014 fonctionnera et sera testé correctement. Réglez le décalage en fonction de votre courtier