Errori, bug, domande - pagina 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 );
}
Finora tutto va bene, ma appena lo inserisco in Test.mq5, per esempio
class B : public A {
};
e genera immediatamente un errore di esecuzione - g non trovata in TestLib.ex5
 
Silent:

datetime è già presente

ArraySize - numero di barre, ArraySize-1 - ultima barra, ArraySetAsSeries imposta la direzione di indicizzazione, e il numero di cella = barra, sinistra o destra.

C'è uno script di provaqui .

Grazie! Farò un tentativo.
 

Buon pomeriggio!

Per TimeCurrent, si specifica che restituisce il tempo dell'ultimo tick da MarketWatch. Provando a usarlo, restituisce 20:30, anche se l'ultimo tick era 22:59:57

Perché può essere così?

Grazie!

 
ns_k:

Buon pomeriggio!

Per TimeCurrent, si specifica che restituisce il tempo dell'ultimo tick da MarketWatch. Provando a usarlo, restituisce 20:30, anche se l'ultimo tick era 22:59:57

Perché può essere così?

Grazie!

Dalla guida:

Nel gestore OnTick(), questa funzione restituisce il tempo del tick in arrivo che viene elaborato . In altri casi (per esempio la chiamata neigestori OnInit(), OnDeinit(), OnTimer() etc.) si tratta dell'ora di arrivo dell'ultima quotazione di qualsiasi simbolo disponibile nella finestra "Market Watch", la stessa ora che viene mostrata nel titolo di questa finestra.

 
Lizar:

Dal riferimento:

Grazie!

Allora come faccio a ottenere l'ora di arrivo dell'ultimo preventivo in onCalculate?

 
ns_k:

Grazie!

Allora come ottenere l'ora di arrivo dell'ultimo preventivo in onCalculate?

Ho ascoltato Time Pink Floyd e l'ho capito :)

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; 
 

Buon pomeriggio!

ArrayResize non sembra funzionare nella fase di inizializzazione globale per i membri statici di classi/strutture.

struct Test{
stringa statica arr[];
Test() {
ArrayResize(arr,5) ;
se (ArraySize(arr)!=5) Alert("Abbiamo un bug");
}
};
Test di prova;

 

Qualcuno ha il seguente problema:

Versione del terminale e bit

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

Descrizione del problema

L'indicatore su H1 chiama l'indicatore su M1. Il comando CopyBuffer copia dati sbagliati. Questo problema è solo nel tester di strategia. Nel terminale tutti i dati vengono copiati senza errori. L'indicatore M1 copia i dati nel primo buffer.

La sequenza di azioni

Nel tester della strategia, scelgo di testare l'indicatore SampleCopyBuffer su H1. Ho impostato il periodo dal 2013-05-01 al 2013-07-07. Cliccate su Start e leggete i messaggi di errore nei log.

Ottengo il risultato.

E ho letto i messaggi di errore nei log. Il valore del buffer dell'indicatore da M1 non corrisponde al valore di CopyHigh.

Risultato atteso

I valori di CopyBuffer e CopyHigh dovrebbero essere uguali.

Ulteriori informazioni

Non c'è nessun errore nel terminale all'avvio. Solo nel tester di strategia. Si prega di vedere i miei indicatori nell'appendice. SampleHighs lavora su M1 ed è chiamato dall'indicatore SampleCopyBuffer che lavora su H1.
 
denmax:

Buon pomeriggio!

ArrayResize non sembra funzionare nella fase di inizializzazione globale per i membri statici di classi/strutture.

struct Test{
stringa statica arr[];
Test() {
ArrayResize(arr,5) ;
se (ArraySize(arr)!=5) Alert("Abbiamo un bug");
}
};
Test di prova;

Grazie per il messaggio, correggeremo l'errore. Il tuo codice genererà un errore sulla mancanza della stringa statica arr[]; perché il tuo codice funzioni correttamente devi "piazzare" la variabile statica prima dell'istanza di test della classe Test.

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

string Test::arr[];

Test test; 
 

Buon pomeriggio!

Sto scrivendo uno script che dovrebbe analizzare alcune caratteristiche di indicatori personalizzati di mia produzione :)

Nell'aiuto è specificato di usareIndicatorCreate

per ricevere la maniglia dell'indicatore. Ho capito quasi tutto, ma sembra molto strano, quando l'indicatore è nel grafico che lo script utilizza, ha bisogno di creare nuovamente l'indicatore. Forse c'è un modo per ottenere i valori degli indicatori già calcolati nello script?

Grazie!