Errores, fallos, preguntas - página 1011

 
//Test.mqh
class A {
public:
        virtual int f() { return ( 1 ); }
};
//TestLib.mq5
#property library
#include "Test.mqh"
int g( A* pA ) export { return ( 5 ); }

//Test.mq5
#include "Test.mqh"
#import "TestLib.ex5"
        int g( A* pA );
#import
void OnStart()
{
        A* pA = new A();
        Print( g( pA ));
        delete( pA );
}
Hasta ahora todo va bien, pero en cuanto lo inserto en Test.mq5, por ejemplo
class B : public A {
};
y genera inmediatamente un error de ejecución - no se encuentra g en TestLib.ex5
 
Silent:

datetime ya está ahí

ArraySize - número de barras, ArraySize-1 - última barra, ArraySetAsSeries establece la dirección de indexación, y el número de celda = barra, izquierda o derecha.

Hay un script de pruebaaquí .

Gracias. Lo intentaré.
 

¡Buenas tardes!

Para TimeCurrent, se especifica que devuelve la hora del último tick de MarketWatch. Al intentar usarlo, devuelve 20:30, aunque el último tick fue 22:59:57

¿Por qué puede ser así?

Gracias.

 
ns_k:

¡Buenas tardes!

Para TimeCurrent, se especifica que devuelve la hora del último tick de MarketWatch. Al intentar usarlo, devuelve 20:30, aunque el último tick fue 22:59:57

¿Por qué puede ser así?

Gracias.

De la ayuda:

En el manejador OnTick(), esta función devolverá la hora del tick entrante que se está procesando . En otros casos (por ejemplo, en losmanejadores OnInit(), OnDeinit(), OnTimer(), etc.) es lahora de llegada de la última cotización de cualquier símbolo disponible en la ventana "Market Watch", la misma que se muestra en la cabecera de esta ventana.

 
Lizar:

De la referencia:

Gracias.

Entonces, ¿cómo puedo obtener la hora de llegada de la última cotización en onCalculate?

 
ns_k:

Gracias.

Entonces, ¿cómo obtener la hora de llegada de la última cotización en onCalculate?

Escuché a Time Pink Floyd y lo descubrí :)

if(SymbolInfoTick(Symbol(),last_tick))

     {

      Print(last_tick.time,": Bid = ",last_tick.bid,

            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);

     }

   else Print("SymbolInfoTick() failed, error = ",GetLastError());

   lEnd=last_tick.time; 
 

¡Buenas tardes!

ArrayResize no parece funcionar en la fase de inicialización global de los miembros de la clase/estructura estática.

struct Prueba{
cadena estática arr[];
Prueba() {
ArrayResize(arr,5) ;
if (ArraySize(arr)!=5) Alert("Tenemos un error");
}
};
Prueba de ensayo;

 

¿Alguien tiene el siguiente problema?

Versión y bit del terminal

Windows 8, MetaTrader 5 - Alpari UK, Build 821, 64 bit.

Descripción del problema

El indicador en H1 llama al indicador en M1. El comando CopyBuffer copia datos erróneos. Este problema sólo se da en el probador de estrategias. En el terminal todos los datos se copian sin errores. El indicador M1 copia los datos en el primer búfer.

La secuencia de acciones

En el probador de estrategias, selecciono para probar el indicador SampleCopyBuffer en H1. Establecí el período de 2013-05-01 a 2013-07-07. Haga clic en Inicio, y lea los mensajes de error en los registros.

Tengo el resultado.

Y he leído los mensajes de error en los registros. El valor del buffer indicador de M1 no coincide con el valor de CopyHigh.

Resultado esperado

Los valores de CopyBuffer y CopyHigh deben ser iguales.

Más información

No hay ningún error en el terminal al arrancar. Sólo en el probador de estrategias. Consulte mis indicadores en el apéndice. SampleHighs funciona en M1 y es llamado desde el indicador SampleCopyBuffer que funciona en H1.
Archivos adjuntos:
 
denmax:

¡Buenas tardes!

ArrayResize no parece funcionar en la fase de inicialización global de los miembros estáticos de la clase/estructura.

struct Prueba{
cadena estática arr[];
Prueba() {
ArrayResize(arr,5) ;
if (ArraySize(arr)!=5) Alert("Tenemos un error");
}
};
Prueba de ensayo;

Gracias por el mensaje, corregiremos el error. Su código generará un error sobre la falta de la cadena estática arr[]; para que su código funcione correctamente necesita "colocar" la variable estática antes de la instancia de prueba de la clase Test.

struct Test{
   static string arr[];
   Test() {
       ArrayResize(arr,5) ;
       if (ArraySize(arr)!=5) Alert("We have a bug"); 
    } 
};

string Test::arr[];

Test test; 
 

¡Buenas tardes!

Estoy escribiendo un script que debe analizar algunas características del indicador personalizado de mi propia producción :)

En la ayuda se especifica que hay que utilizarIndicatorCreate

para recibir la manija del indicador. Entiendo casi todo, pero se ve muy extraño, cuando el indicador está en el gráfico que utiliza el script, necesita crear el indicador de nuevo. ¿Tal vez haya una forma de obtener los valores de los indicadores ya calculados en el script?

Gracias.