Errores, fallos, preguntas - página 270

 
Rosh:

Ejecute dicho indicador y lo comprobará por sí mismo:

Así que en

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[])

open[] tampoco es una serie temporal?

No entiendo nada, por favor dame un ejemplo de una serie temporal.

 
Voodoo_King:

Construir 375. el error es realmente malo, como resultado de lo cual ya he perdido bastante dinero ...

Los parámetros del EA no se restablecen a la configuración después de cerrar/abrir el terminal.

Para ser más exactos, una parte de ellos se puede restaurar (por ejemplo, 3 de 6), mientras que el resto se restablece a la configuración predeterminada.


construye 381. ¡¡¡NADA HA CAMBIADO !!!

Cada vez que se reinicia el terminal, los EAs se inicializan con diferentes parámetros (los que quieran).

Inicialización incorrecta de los parámetros del experto

 
AlexSTAL:

Esta función comprueba la dirección, no el cambio.

1) Sin inicialización

2) Con la inicialización

3) Código anterior, sólo con la función de dirección de indexación de arrays ArrayGetAsSeries

He cometido un error en el servicio de asistencia técnica con el nombre de la función simplemente


Sí, he descubierto el error del compilador. Gracias por el mensaje. La solución estará en la próxima versión.
 
BoraBo:

Así que en

open[] tampoco es una serie temporal?

No entiendo, por favor dame un ejemplo de una serie de tiempo.

Entonces, no es un TC, ¿y qué? Si lo estableces en una serie de tiempo a través de Set, será un TC. ¿Es la primera vez que ejecuta el terminal? Que para ti es una gran noticia. Creo que, alguien acaba de escribir que debemos decidir por nosotros mismos cómo trabajar en sus programas - con TS o sólo con arrays.
 
joo:


Por eso lo hago en OnCalculate():

Pueden ayudarme a hacer queArrayGetAsSeries(low) dé true

 
BoraBo:

¿Puedes ayudar a que lasalida de ArrayGetAsSeries(low) sea verdadera?

Yo estoy harto :)) ponlo como quieras y hola. No hay nada que comprobar. :))
 
BoraBo:

Así que en

open[] tampoco es una serie temporal?

No entiendo nada, por favor dame un ejemplo de serie temporal.

open[] y todas las demás matrices en OnCalculate son series de tiempo. Al principio, cuando se escribía el lenguaje MQL5, ArrayGetAsSeries() devolvía true para ellos y su indexación se realizaba para ellos exactamente como para las series temporales, es decir, hacia atrás.

Pero entonces resultó ser muy inconveniente y poco natural escribir los cálculos del buffer del indicador en el estilo de MQL4 y sólo había una salida - invertir la indexación de las series de tiempo para su uso conveniente. Empezamos a escribir indicadores personalizados con este espíritu:

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread)
{
//---- переворачиваем все таймсерии, чтобы ими было удобно пользоваться, как обычными массивами
   ArraySetAsSeries(open,false);
   ArraySetAsSeries(high,false);
   ArraySetAsSeries(low,false);
   ArraySetAsSeries(close,false);
   ArraySetAsSeries(time,false);
   ArraySetAsSeries(tick_volume,false);
   ArraySetAsSeries(volume,false);
   ArraySetAsSeries(spread,false);
   ArraySetAsSeries(open,false);
.... остальной код
}

Pero cada vez que teníamos que escribir un lío de conversiones resultaba que tampoco era una buena idea. Por lo tanto, se decidió pasar estas series de tiempo con indexación, como para los arrays habituales. Así es como se produce esta paradoja, cuando las series temporales no se indexan como tales. Por eso la ayuda dice que hay que comprobar el orden de indexación y, si es necesario, configurarlo como es debido.

 
BoraBo:

Ayúdenme a hacer que lasalida de ArrayGetAsSeries(low) sea verdadera

Ya devuelve true, pero debido a un error del compilador su valor se emite incorrectamente como parámetro. Compruébalo así:

#property script_show_inputs
input bool isTimeSeria=true;


double Ups[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

//--- установим для массивов признак таймсерии
   Print("Установим для массивов признак таймсерии как ",isTimeSeria);
   ArraySetAsSeries(Ups,isTimeSeria);

//--- Проверим таймсерии
   if(ArrayGetAsSeries(Ups))
     {
      Print("1:  ArrayGetAsSeries(Ups)=true");
      Print("2:  ArrayGetAsSeries(Ups)=",ArrayGetAsSeries(Ups));
     }
   else
     {
      Print("ArrayGetAsSeries(Ups)=true!!!");
     }
  }
//+------------------------------------------------------------------+


Resultado:


 
Rosh:

Sí da true, sólo que por un error del compilador su valor como parámetro sale mal. Compruébalo así:


Resultado:


Gracias, lo he resuelto.

ArrayIsSeries() yArrayGetAsSeries() en el operador condicional if() funcionan como se describe, pero Print() siempre da como resultado false.


 

Los promotores.

1. Por favor, compruebe la carga del historial en el probador (es la primera vez que lo pruebo).

Estoy probando el EURUSD usando una muestra de MACD estándar en H1 con el intervalo "último mes".

He alcanzado el 57% de los datos descargados y se congela con éxito, con sólo esta línea en el registro

2011.01.19 17:16:23	Tester	EURUSD: history preliminary downloading started

2. ¿Es posible hacer la palanca de 1:200 y 1:500 en las nuevas construcciones en el probador constantemente?

Entiendo que no todas las empresas de corretaje tienen ese apalancamiento, especialmente en MT5, pero en el Probador de Estrategias probablemente se debería dejar porque es más conveniente probar las estrategias en una nueva plataforma.