Errori, bug, domande - pagina 1973

 
Stanislav Korotky:
Potresti suggerire un algoritmo per calcolare i volumi per una particolare barra (forse è già descritto da qualche parte?). Per esempio, richiediamo con CopyTicksRange tutti i tick per una particolare barra e abbiamo bisogno di ottenere come risultato dei calcoli lo stesso volume (sia reale che in tick) che viene visualizzato in Data Window. Ho discrepanze in entrambi i volumi per gli strumenti di scambio per ordini di grandezza (per essere specifici, prendere AFLT su MQ-Demo). Per il forex, i volumi in tick sono gli stessi, i volumi reali sono fuori questione lì.
Quando si sommano i volumi, controllare le bandiere - TICK_FLAG. Altrimenti, conterete lo stesso volume più volte in totale.
 
Dmitriy Skub:
Quando si sommano i volumi, è necessario controllare le bandiere - TICK_FLAG. Altrimenti, conterete lo stesso volume più volte in totale.

Certo che guardo le bandiere. È quello che stavo chiedendo - volevo solo dei dettagli. È già stato risposto. È più facile richiedere le zecche _TRADE. Funziona.

 
Stanislav Korotky:

Certo che guardo le bandiere. È quello che stavo chiedendo - volevo solo dei dettagli. È già stato risposto. È più facile richiedere le zecche _TRADE. Funziona.

Si può anche applicare un flag che dipende da ENUM_SYMBOL_CALC_MODE

 
Alexey Viktorov:

Si può anche applicare un flag che dipende da ENUM_SYMBOL_CALC_MODE

Certo che sì.

 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL4 MT4 MetaTrader 4".
 
errore interno #27
#import "Test.ex5"
        int f();
#import
static int i = Test::f();
 
Николай Никитюк:

Se ho bisogno che le funzioni "LongCondition" e "ShortCondition" utilizzino i risultati dei calcoli del metodo TrendTenkan, e non ho ancora un modo per farlo. Questo significa che LongCondition deve chiamare TrendTenkan?

Posso solo modificare gli errori evidenti:

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

Non so da dove dovrebbe essere chiamato

 

errore interno #112

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

Nella build 1653, l'errore di runtime non è scomparso, ma si è spostato in un'altra parte del codice:

Impossibile trovare 'f1' in '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; }
 

Errore di compilazione

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