Errores, fallos, preguntas - página 2906

 
La búsqueda del sitio no funciona por segundo día.
 

Las paradas y las tomas no funcionan cuando se hacen pruebas. En la captura de pantalla, un ejemplo de un límite de venta activado con SL y TP establecidos, pero el stop (y la toma) no se activan dondequiera que el precio haya ido. ¿Dónde cavar?

Archivos adjuntos:
Screenshot_1.jpg  177 kb
 

Para las posiciones, existe la propiedad POSITION_TIME_UPDATE - la hora del último cambio de posición.

No existe esta propiedad para las órdenes en el terminal. ¿Pero hay uno en el servidor?


¿Entiendo correctamente que la modificación de una orden Limit en una bolsa es una reedición de la orden Limit: eliminar la antigua y poner una nueva?

Si es así, la modificación debería cambiar ORDER_TIME_SETUP. Sin embargo, esto no está ocurriendo.

 

Desaparición de los gráficos de los indicadores

A menudo, tras unas horas de trabajo, los gráficos de los indicadores desaparecen.

Para restablecer los datos y minimizar el cálculo del indicador, utilizo las etapas de carga y cálculo de datos.

Cuando instalo el indicador en el gráfico, todas las etapas funcionan normalmente.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,  
                 const int prev_calculated, 
                 const datetime& time[], 
                 const double& open[], 
                 const double& high[], 
                 const double& low[], 
                 const double& close[], 
                 const long& tick_volume[], 
                 const long& volume[],
                 const int& spread[]  
)
{
  if(prev_calculated == 0)
  {
    switch (mar_data.stage)
    {
      case LOAD_TICKS:
        if(LoadTicks(time) == true)
        {
          //--- 
          mar_data.stage = READ_PRIM_TICKS;
        }
        return(0);
      break;
      case READ_PRIM_TICKS:
        if(ReadPrimTicks() == true)
        {
          //---
          mar_data.stage = READ_SEC_TICKS;
        }  
        return(0);
      break;
      case READ_SEC_TICKS:
        if(ReadSecTicks() == true)
        {
          //---
          mar_data.stage = FILL_DATA;
        }  
        return(0);
      break;
      case FILL_DATA:
        //---
        FillData();
        mar_data.stage = LOAD_TICKS;
      break;
    }
  } 
  else
  {
    //--- Live data ---
  }
  return(rates_total);
}

En la última etapa se asigna la primera etapa, por lo que el indicador (cuando es clave) puede recargar los datos

mar_data.stage = LOAD_TICKS;

Pero, cuando el indicador se reinicia, los datos no se restauran

La función

//+------------------------------------------------------------------+
//| Custom indicator Load ticks function                             |
//+------------------------------------------------------------------+
bool LoadTicks(const datetime &a_times[])
{
  int result = CopyTime(Symbol(), PERIOD_M1, start_time, end_time, mar_data.time_array);
  if(result > 0)
  {
    if(mar_data.time_array[result - 1] == a_times[ArraySize(a_times) - 1])
    {
      mar_data.b_cnt = result;
      result = CopyTicksRange(Symbol(), mar_data.pr_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
      if(result > 0)
      {
        if(mar_data.pr_ticks[result-1].time >= mar_data.time_array[ArraySize(mar_data.time_array) - 1]) 
        {
          mar_data.pr_cnt = result;
          datetime sec_time_array[];
          result = CopyTime(sec_symbol, PERIOD_M1, start_time, end_time, sec_time_array);
          if(result > 0)
          {
            result = CopyTicksRange(sec_symbol, mar_data.sec_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
            if(result > 0)
            {
              if(mar_data.sec_ticks[result-1].time >= sec_time_array[ArraySize(sec_time_array) - 1])
              {
                mar_data.sec_cnt = result;
                return(true);
              } else Print("Не хватает тиков ", sec_symbol, "!");
            } else Print("Не получены тики по символу ", sec_symbol, "!");
          } else Print("Не скопировано время баров по символу ", sec_symbol, "!");
        } else Print("Не хватает тиков ", Symbol(), "!"); 
      } else Print("Не получены тики по символу ", Symbol(), "!");
    } else Print("Не хватает баров по символу ", Symbol(), "!");
  } else Print("Не скопировано время баров по символу ", Symbol(), "!");
  return(false);
}

Sólo sale esto

"¡El tiempo del bar BR-1.21 no fue copiado!".

Pero no pasa nada más.

Porque hay una llamada de LoadTicks(), por lo tanto todos los pasos deben ser repetidos, como cuando se carga el indicador.

Estimados desarrolladores, ¿por qué el indicador deja de funcionar?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт, сервис и эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 
fxsaber:
Es el segundo día que la búsqueda del sitio no funciona.

La base de búsqueda se ha reducido mucho. Muchas cosas no se encuentran.

 
¿Cómo puedo saber cuándo se modificó la posición/orden por última vez?
 
fxsaber:
¿Cómo puedo saber cuándo fue la última vez que modifiqué mi posición/orden?

POSICIÓN_TIEMPO_ACTUALIZACIÓN

 
Igor_Gagarin:

POSICIÓN_TIEMPO_ACTUALIZACIÓN

Este es el momento del último cambio de volumen. Red Eco.

 
fxsaber:

Este es el momento del último cambio de volumen. Red de Ecos.

Lahora de apertura del puesto se está dando. ¿Por qué preguntabas?