Pregunta para los entendidos - página 21

 
Hola. He limitado mi trabajo a la siguiente función:
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);
}

Sin embargo, las órdenes abiertas se abandonan a su suerte...

Me gustaría que el EA no colocara nuevas órdenes a una hora determinada, sino que acompañara a las órdenes abiertas.

Supongo que podrá desactivar/desactivar la formación de una señal en un momento determinado.

Por favor, aconséjeme cómo hacerlo.

 

Recuerdo que I.Kim tenía esas funciones de tiempo: https://www.mql5.com/ru/forum/131859 - p.9

isTradeTimeString - Devuelve la bandera que permite negociar por tiempo.
isTradeTimeInt - Devuelve la bandera para permitir la negociación por tiempo.

Para asegurarse de que las órdenes abiertas no se "dejan al azar", la condición if (isTradeTimeString()==false) { ... sólo se aplican a los puestos vacantes. No utilice esta función (esta condición) para todas las demás acciones (arrastre, modificación, cierre de posición).

Vinin:
Eliminar comentarios
Gracias.
 

Saludos a todos.

Mi indicador dibuja varias líneas en una ventana separada. Por ejemplo - MA de dos monedas. Y también la línea de su diferencia.

#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);

Yo "cuelgo" manualmente este indicador en el terminal en el modo "Datos de los primeros indicadores" a otro indicador, por ejemplo, Bonos o Envolvente.

Necesito que este segundo indicador "cuelgue" exactamente en la línea de diferencia - buffer BufW,

Por favor, aconséjeme: ¿cómo puedo especificarlo programáticamente en el código? Para "colgar" cualquier otro indicador en el modo "Datos de los primeros indicadores" para elegir estrictamente la línea de diferencia en el buffer BufW?

En este momento, el segundo indicador se "cuelga" constantemente de la línea MA del primer símbolo Buf1.