Errores, fallos, preguntas - página 670

 

¿Hay algún plan para rediseñar la parrilla de Gann? Es absolutamente imposible utilizarlo: ni manualmente, ni por extremidades, como en MT4, puedo estirarlo o fijarlo correctamente - al pasar de TF a TF, el tamaño de las celdas cambia, ¡no hay una fijación fija! O quizás no entiendo algo...

M1M5

 

Sólo los metales en Alpari no muestran barras y OHLC, todos los demás están bien. Los presupuestos van, los pedidos se hacen. He movido el terminal a una nueva carpeta, no ayuda. ¿Dónde puede estar el error? W7 64

 
BoraBo:

Sólo los metales en Alpari no muestran barras y OHLC, todos los demás están bien. Los presupuestos van, los pedidos se hacen. He movido el terminal a una nueva carpeta, no ayuda. ¿Dónde puede estar el error? W7 64

Tengo el mismo problema. He sentido que algo ha ido mal en el servidor. Contacte con el soporte técnico de Alpari.

 
void OnStart()
  {
//---
symbol2csv(Symbol(),Period());
  }
//+------------------------------------------------------------------+
int symbol2csv(string smb,ENUM_TIMEFRAMES tf)
  {
   ResetLastError();
   int filehandle=FileOpen(smb+"_"+tf2str(tf)+".csv",FILE_WRITE|FILE_CSV,",");
   if(filehandle!=INVALID_HANDLE)
     {
      MqlRates rates[];
      int i=0,copyed=CopyRates(smb,tf,From,To,rates);
      ArraySetAsSeries(rates,false);
      FileWrite(filehandle,"\"Date\" \"Time\" \"Open\" \"High\" \"Low\" \"Close\" \"Volume\""); // writing header
      for(i=0;i<copyed;i++)
        {
         FileWrite(filehandle,TimeToString(rates[i].time,TIME_DATE),TimeToString(rates[i].time,TIME_MINUTES),DoubleToString(rates[i].open,_Digits),DoubleToString(rates[i].high,_Digits),DoubleToString(rates[i].low,_Digits),DoubleToString(rates[i].close,_Digits),rates[i].real_volume);
        }
      FileClose(filehandle);
      Print(smb+" exported "+IntegerToString(copyed));
      return copyed;
     }
   else Print("FileOpen failure. Error is ",GetLastError());
   return -1;
  }
¿Por qué la columna de Volumen en el archivo siempre contiene 0? ¿Y cómo registro el volumen?
 
Graff:
¿Por qué la columna de Volumen en el archivo siempre contiene 0? ¿Y cómo hacer que se escriba el volumen?

¿Real_volume para los instrumentos de Forex?

tal vez sólo trate de tick_volume para empezar

 

¿Cuál es el error?

Aquí está el código, lo he reducido al mínimo:

//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//---------- MQL5 --------------
int ecx = 0;//-- Кол-во тестируемых пар --
string g_s_SymbolsTrade[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD",
"GBPCHF","GBPJPY","GBPUSD","NZDUSD","USDCAD","USDCHF","USDJPY"};

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   //-- Сколько всего валютных пар --
   ecx = ArraySize(g_s_SymbolsTrade);
   //-- Установить таймер на каждую секунду --
   if (EventSetTimer(1) == false) return(-1);//int 08
   
   return(0);//ret;
}
//----------------------------------------------------------------------------//
void OnDeinit(const int reason)
{
   EventKillTimer();//timer off
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
{
    
//--- return value of prev_calculated for next call
   return(rates_total);//ret;
}

//+------------------------------------------------------------------+
////////////////////////////////////////////////////////////////////////////////
//                           Expert Timer function                            //
////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
void OnTimer()//int 08
{
static bool b_Flag = false;
string db_SymbolName;
MqlRates rates[];
int edx;

   if (b_Flag == true) return;//ret -- реентерабельность --
   b_Flag = true;//cli
   //---------------------------------------------
   for (int ebx = 0; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx=CopyRates(db_SymbolName,_Period,0,1,rates);
      if (edx != 1){//cmp edx,1 | jne
         b_Flag = false;//sti
         return;//jne ret;
      }   
   }//loop ecx       
   Print ("Загрузка завершена.");
   //---------------------------------------------
   b_Flag = false;//sti
}

Cuando lo ejecuto, a veces inmediatamente o después de cambiar un periodo de gráficos de repente el terminal empieza a ralentizarse y todo el registro se obstruye con esto:


¿Cuál es la razón, es mi error o un error en la función CopyRates?

 
pusheax:

¿Cuál es la razón, es mi culpa o un error en la función CopyRates?

Los dos.

Inténtalo de esta manera:

void OnTimer()//int 08
{
static bool b_Flag = false;
if (b_Flag == true) return;//ret -- реентерабельность --
string db_SymbolName;
MqlRates rates[ ecx];    // поправка здесь.
int edx;


   b_Flag = true;//cli
   //---------------------------------------------
   for (int ebx = 0; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx=CopyRates(db_SymbolName,_Period,0,1,rates);
      if (edx != 1){//cmp edx,1 | jne
         b_Flag = false;//sti
         return;//jne ret;
      }   
   }//loop ecx       
   Print ("Загрузка завершена.");
   //---------------------------------------------
   b_Flag = false;//sti
}
 
MetaDriver:

Los dos.

Pruébalo así:


No, desgraciadamente, no ha servido de nada.

Lo escribí de la siguiente manera: MqlRates rates[100];

si no: MqlRates rates[ecx]; - da un error de compilación.

También me gustó la idea de moverlo a la parte superior:

if (b_Flag == true) return;//ret -- reentrada --

pero lamentablemente el resultado es el mismo.

¿Alguna otra idea?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
papaklass:

Si el número de barras en el terminal en la configuración del gráfico es ilimitado. Reduce el número de barras.

Parece que sólo tiene una barra copiada.
 
papaklass:

Así que en 25 instrumentos. A mí me pasó lo mismo con el 12 hasta que reduje el número de barras.

Entonces significa servicedesk. El terminal no debe extraer todo el historial del disco mediante un símbolo cuando se lee 1 bar.

Aunque esté configurado como ilimitado. El almacenamiento en caché debe hacerse de forma inteligente.

--

Buenos consejos en general. He estado pensando - dice "al cambiar de periodo". Así que el terminal almacena todo en minutos, empieza a calcular los periodos que faltan, y se queda sin memoria suficiente para los buffers.

En resumen, ambos tienen la culpa. Push no ha comprado memoria, y quiere montones y montones de pares de divisas sin límite (o casi sin límite).

Y MQ - no lo trata como un error de indicador (como "Error XXXX : cierre el labio, camarada"), sino sólo el suyo propio.

Razón de la queja: