Errores, fallos, preguntas - página 1973

 
Stanislav Korotky:
¿Podría sugerir un algoritmo para calcular los volúmenes de una barra específica (tal vez ya esté descrito en alguna parte?). Por ejemplo, solicitamos con CopyTicksRange todos los ticks de una barra determinada y necesitamos obtener como resultado de los cálculos el mismo volumen (tanto real como de ticks) que se muestra en la Ventana de Datos. Tengo discrepancias en ambos volúmenes para los instrumentos de intercambio por órdenes de magnitud (para ser específicos, tome AFLT en MQ-Demo). En el caso de forex, los volúmenes de los ticks son los mismos, los volúmenes reales están fuera de lugar allí.
Al sumar los volúmenes, compruebe los indicadores - TICK_FLAG. De lo contrario, contará el mismo volumen varias veces en total.
 
Dmitriy Skub:
Al sumar los volúmenes, hay que comprobar las banderas - TICK_FLAG. De lo contrario, contará el mismo volumen varias veces en total.

Por supuesto que miro las banderas. Eso es lo que preguntaba, sólo quería detalles. Ya se ha respondido. Es más fácil solicitar las garrapatas de _TRADE. Funciona.

 
Stanislav Korotky:

Por supuesto que miro las banderas. Eso es lo que preguntaba, sólo quería detalles. Ya se ha respondido. Es más fácil solicitar las garrapatas de _TRADE. Funciona.

También puede aplicar una bandera en función de ENUM_SYMBOL_CALC_MODE

 
Alexey Viktorov:

También puede aplicar una bandera en función de ENUM_SYMBOL_CALC_MODE

Por supuesto que sí.

 
Los comentarios no relacionados con este tema han sido trasladados a "Preguntas de los principiantes de MQL4 MT4 MetaTrader 4".
 
error interno #27
#import "Test.ex5"
        int f();
#import
static int i = Test::f();
 
Николай Никитюк:

Si necesito las funciones "LongCondition" y "ShortCondition" para utilizar los resultados de los cálculos del método TrendTenkan, y todavía no puedo hacerlo. ¿Significa esto que LongCondition tiene que llamar a TrendTenkan?

Sólo puedo retocar los errores obvios:

for(i=idx+1;i<idx+21;i++)
     {if(DiffKijun(i)>0.0) {value_t=TYPE_TREND_UP; break; return(value_t);}
//здесь явно что-то не так
//return после break не имеет смысла

No sé de dónde debería llamarse

 

error interno #112

class A;
struct B {
        void f() { a.g(); }
        A *a;
};
void OnStart()
{
        B b;
        b.f();
}
 

En la compilación 1653, el error de ejecución no ha desaparecido, sino que se ha desplazado a una parte diferente del código:

No se encuentra 'f1' en 'Test2.ex5'

//Test.mqh
class B {
        virtual void  f() {}
};
class C {
        virtual void g( B& ) {}
};
class A : C {};
#import "Test2.ex5"
        A *f1();
        B *f2();
#import
//Test.mq5
#include "Test.mqh"
void OnStart()
{
        f1();
}
//Test2.mq5
#property library
#include "Test.mqh"
A *f1() export { return NULL; }
B *f2() export { return NULL; }
 

Error de compilación

#import "Test.ex5"
        void g();   //g(1)
#import
        void g() {} //g(2)
typedef void (*fn)();
void f( fn )       {}
void f( int, int ) {}
void OnStart()
{
        f( Test::g ); //нормально
        f(     ::g ); //error: 'f' - no one of the overloads can be applied to the function call
        f(       g ); //error: 'f' - no one of the overloads can be applied to the function call
//а как иначе указать что g - это g(2) ... и причем здесь overloads ???
        fn gg = g;    //нормально
        f( gg );
}