Question pour les connaisseurs - page 21

 
Bonjour, j'ai limité mon travail à la fonction suivante :
.
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;         
  int      hc;              

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}

Cependant, les ordres ouverts sont laissés à eux-mêmes...

Je voudrais que l'EA ne place pas de nouveaux ordres à un moment donné, mais qu'il accompagne les ordres ouverts.

Je suppose que vous serez en mesure de désactiver/désactiver la formation d'un signal à un moment donné.

Veuillez me conseiller sur la manière de procéder.

 

Je me souviens que I.Kim avait de telles fonctions de temps : https://www.mql5.com/ru/forum/131859 - p.9

isTradeTimeString - Renvoie l'indicateur permettant de trader par heure.
isTradeTimeInt - Renvoie l'indicateur permettant de négocier en fonction du temps.

Pour s'assurer que les ordres ouverts ne sont pas "laissés au hasard", la condition if (isTradeTimeString()==false) { ... ne s'appliquent qu'aux postes ouverts. N'utilisez pas cette fonction (cette condition) pour toutes les autres actions (suivi, modification, fermeture de position).

Vinin:
Supprimer les commentaires
Merci.
 

Salutations à tous.

Mon indicateur trace plusieurs lignes dans une fenêtre séparée. Par exemple - MA de deux devises. Et aussi la ligne de leur différence.

#property indicator_separate_window
#property indicator_buffers 4
... ...
// Буферы для отображения данных
double Buf1[];    // Первый инструмент ма1
double Buf2[];    // Второй инструмент ма2
double BufS[];    // Средняя линия (ма1+ма2)/2
double BufW[];    // разность ма1-ма2
double BufW_Up[]; // Восходящиая разность
double BufW_Dn[]; // Нисходящая разность

...
int init() {
 IndicatorBuffers(7);
  
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buf1);
  SetIndexLabel(0, Symbol1); 

  SetIndexStyle(1,DRAW_LINE);
  SetIndexBuffer(1,Buf2);
  SetIndexLabel(1,Symbol2); 

  SetIndexStyle(2,DRAW_LINE);
  SetIndexBuffer(2,BufW_Up);
  SetIndexLabel(2,"Channel width Up");

  SetIndexStyle(3,DRAW_LINE);
  SetIndexBuffer(3,BufW_Dn);
  SetIndexLabel(3,"Channel width Down");
  
  SetIndexBuffer(4,BufW);
  SetIndexBuffer(5,BufS);

Je "accroche" manuellement cet indicateur dans le terminal en mode "Données des premiers indicateurs" à un autre indicateur, par exemple Obligations ou Enveloppe.

J'ai besoin que ce deuxième indicateur soit "accroché" exactement sur la ligne de différence - tampon BufW,

Veuillez me conseiller - comment puis-je le spécifier dans le code de manière programmatique ? Pour "accrocher" un autre indicateur dans le mode "Données des premiers indicateurs", choisir strictement la ligne de différence dans le tampon BufW ?

En ce moment, le deuxième indicateur "s'accroche" constamment à la ligne MA du premier symbole Buf1.