Erros, bugs, perguntas - página 1973

 
Stanislav Korotky:
Pode sugerir um algoritmo para calcular volumes para uma barra específica (talvez já esteja descrito algures?). Por exemplo, solicitamos com CopyTicksRange todas as carraças para uma determinada barra e precisamos de obter como resultado de cálculos o mesmo volume (tanto real como carraças) que é exibido na Janela de Dados. Tenho discrepâncias em ambos os volumes para instrumentos de troca por ordens de magnitude (para ser específico, tomar AFLT em MQ-Demo). Para o forex, os volumes de tick são os mesmos, os volumes reais estão lá fora de questão.
Ao somar os volumes, verificar as bandeiras - TICK_FLAG. Caso contrário, contará o mesmo volume várias vezes no total.
 
Dmitriy Skub:
Ao somar os volumes, deve verificar as bandeiras - TICK_FLAG. Caso contrário, contará o mesmo volume várias vezes no total.

É claro que observo as bandeiras. Era isso que eu estava a pedir - eu só queria pormenores. Já foi respondido. É mais fácil solicitar _TRADE carrapatos. Funciona.

 
Stanislav Korotky:

É claro que observo as bandeiras. Era isso que eu estava a pedir - eu só queria pormenores. Já foi respondido. É mais fácil solicitar _TRADE carrapatos. Funciona.

Também pode aplicar uma bandeira dependendo de ENUM_SYMBOL_CALC_MODE

 
Alexey Viktorov:

Também pode aplicar uma bandeira dependendo de ENUM_SYMBOL_CALC_MODE

Claro que sim.

 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 
erro interno #27
#import "Test.ex5"
        int f();
#import
static int i = Test::f();
 
Николай Никитюк:

Se eu precisar das funções "LongCondition" e "ShortCondition" para usar os resultados dos cálculos do método TrendTenkan, e ainda não tenho uma maneira de o fazer. Isto significa que a LongCondition tem de chamar TrendTenkan?

Só posso afinar os erros óbvios:

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

Não sei de onde deve ser chamado o que

 

erro interno #112

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

Na construção 1653, o erro de tempo de execução não desapareceu, mas passou para uma parte diferente do código:

Não é possível encontrar 'f1' em '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; }
 

Erro de compilação

#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 );
}