//+------------------------------------------------------------------+ //| TemplTest.mq5 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Declara uma classe template | //+------------------------------------------------------------------+ template<typename T> class TArray { protected: T m_data[]; public: bool Append(T item) { int new_size=ArraySize(m_data)+1; int reserve =(new_size/2+15)&~15; //--- if(ArrayResize(m_data,new_size,reserve)!=new_size) return(false); //--- m_data[new_size-1]=item; return(true); } T operator[](int index) { static T invalid_index; //--- if(index<0 || index>=ArraySize(m_data)) return(invalid_index); //--- return(m_data[index]); } }; //+------------------------------------------------------------------+ //| Classe template do array de ponteiro. No processo de destruição, | //| exclui os objetos que são os ponteiros armazenados no array. | //| | //| Por favor, note a herança do array da classe template | //+------------------------------------------------------------------+ template<typename T> class TArrayPtr : public TArray<T *> { public: void ~TArrayPtr() { for(int n=0,count=ArraySize(m_data);n<count;n++) if(CheckPointer(m_data[n])==POINTER_DYNAMIC) delete m_data[n]; } }; //+------------------------------------------------------------------------------+ //| Declarar a classe. Ponteiros aos respectivos objetos são armazenados no array| //+------------------------------------------------------------------------------+ class CFoo { int m_x; public: CFoo(int x):m_x(x) { } int X(void) const { return(m_x); } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ TArray<int> ExtIntArray; // criar instância TArray (TArray especializada pelo tipo int) TArray<double> ExtDblArray; // criar instância TArray (TArray especializada pelo tipo double) TArrayPtr<CFoo> ExtPtrArray; // criar instância TArrayPtr (TArrayPtr especializada pelo tipo CFoo) //+------------------------------------------------------------------+ //| Função "Start" de Programa Script | //+------------------------------------------------------------------+ void OnStart() { //--- preencher o array com dados for(int i=0;i<10;i++) { int integer=i+10; ExtIntArray.Append(integer); double dbl=i+20.0; ExtDblArray.Append(dbl); CFoo *ptr=new CFoo(i+30); ExtPtrArray.Append(ptr); } //--- Saída do conteúdo do array string str="Int:"; for(i=0;i<10;i++) str+=" "+(string)ExtIntArray[i]; Print(str); str="Dbl:"; for(i=0;i<10;i++) str+=" "+DoubleToString(ExtDblArray[i],1); Print(str); str="Ptr:"; for(i=0;i<10;i++) str+=" "+(string)ExtPtrArray[i].X(); Print(str); //--- Objetos CFoo criados via nova versão não devem ser suprimidos, uma vez que eles são excluídos no objeto destructor TArrayPtr <CFoo> }Resultado da execução:
Para obter a senha, abra o terminal móvel MetaTrader 4 em seu
smartphone, vá para a seção OTP e digite o código de verificação para
receber a senha descartável (OTP)
MetaTrader 4 Android |
MetaTrader 4 iPhone |
---|---|
2015.09.14 14:48:18.486 Data Folder: E:\ProgramFiles\MetaTrader 4 2015.09.14 14:48:18.486 Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7 920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00 2015.09.14 14:48:18.486 MetaTrader 4 build 872 started (MetaQuotes Software Corp.)
Corrigidos erros relatados nos relatório (logs) de travamento.
Foi apresentada a primeira versão da nova plataforma de negociação através de uma interface web. Com ela, você obtém todos os recursos de negociação e analíticos do terminal desktop, simplesmente usando um navegador. O trabalho com a plataforma web é seguro, pois todas as informações transmitidas são criptografadas. As senhas para as contas de negociação são armazenadas no armazenamento local do navegador de forma criptografada.
Para aceder aos novos recursos, basta fazer login na MQL5.community e acessar a nova seção "Negociação". A interface da plataforma web é semelhante à versão desktop, atualmente estão à sua disposição as funções principais:
int ObjectsDeleteAll( int chart_id, // ID do gráfico const string prefix, // prefixo int sub_window=EMPTY, // ID da sub-janela do gráfico int object_type=EMPTY // tipo do objeto );Esta função remove todos os objetos gráficos do tipo especificado a partir do gráfico especificado ou da sub-janela. Uma característica especial é a capacidade de definir um prefixo nos nomes dos objetos removidos. Por exemplo, você pode remover apenas os objetos que têm os nomes que começam a partir de "myobj_".
int WebRequest( const string method, // método HTTP const string url, // endereço url const string headers, // Headers int timeout, // tempo esgotado const char &data[], // um array do corpo da mensagem HTTP char &result[], // um array com os dados de resposta do servidor string &result_headers // Headers de resposta do servidor );As notificações de erro foram modificados. Se ocorrer um erro, o array "resultado" conterá a descrição do erro.
ulong GetMicrosecondCount();
Esta função pode ser usada para perfilar a execução de um programa e identificar "entraves".Corrigido os erros relatados nos registros de falhas.