Foi adicionado o link do vídeo tutorial video "Como criar um robô comercial no Master MQL5". Assista a este vídeo de três minutos e crie um robô comercial, sem escrever uma única linha de código.
2015.10.14 14:48:18.486 Data Folder: C:\Program Files\MetaTrader 5 2015.10.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.10.14 14:48:18.486 MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
struct MqlTick { datetime time; // Tempo da última atualização do preço double bid; // Preço Bid em tempo real (atual) double ask; // Preço Ask em tempo real (atual) double last; // "Last" Preço em tempo real (último preço atual) ulong volume; // Volume do "Last" preço em tempo real (atual) long time_msc; // Tempo do "Last" preço atualizado em milissegundos uint flags; // Flags de tick };Os parâmetros de cada tick são preenchidos independentemente se existem alterações comparadas com o tick anterior. Assim, é possível descobrir o preço correto para qualquer momento no passado, sem a necessidade de procurar os valores anteriores do histórico do tick. Por exemplo, mesmo que apenas altere o preço Bid durante a chegada do tick, a estrutura ainda contém outros parâmetros, bem como incluindo o preço Ask anterior, volume, etc. Você pode analisar as flags dos ticks para descobrir quais dados foram alterados exatamente:
//+------------------------------------------------------------------+ //| 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(int i=0;i<10;i++) str+=" "+(string)ExtIntArray[i]; Print(str); str="Dbl:"; for(int i=0;i<10;i++) str+=" "+DoubleToString(ExtDblArray[i],1); Print(str); str="Ptr:"; for(int i=0;i<10;i++) str+=" "+(string)ExtPtrArray[i].X(); Print(str); //--- Objetos CFoo criados via nova versão não deve ser suprimidos, uma vez que eles são excluídos no objeto destructor TArrayPtr <CFoo>}Resultado da execução:
int ObjectsDeleteAll( long chart_id, // ID de gráfico const string prefix, // prefixo do nome do objeto int sub_window=-1, // índice da janela int object_type=-1 // tipo de objeto para deletar );
Documentação atualizada.
A atualização estará disponível através do sistema LiveUpdate.
Agora, no Mercado, você pode comprar qualquer aplicativo num único passo, sem registro e diretamente a partir da plataforma MetaTrader 4/5. Para fazer isso, basta pressionar o botão "Comprar" e selecionar o sistema de pagamento adequado.
Em seguida, você será redirecionado para a página do sistema de pagamento, onde você poderá concluir a sua compra. Utilize PayPal, WebMoney, Neteller ou cartão de banco, pague de uma maneira familiar pelas suas compras na loja de robôs e indicadores prontos.
Após a compra, recomendamos registrar uma conta na MQL5.community, desse modo a sua compra ficará automaticamente ligada a ela. Assim, você poderá atualizar o produto e instalá-lo em outros computadores. Além disso, a conta MQL5.community dará acesso a uma variedade de outros serviços para plataformas MetaTrader, a saber: sinais de negociação para copiar transações de traders bem sucedidos, hospedagem virtual para funcionamento ininterrupto dos seus aplicativos e o serviço freelance para encomendar robôs exclusivos aos desenvolvedores.
Agora você sabe qual é a maneira mais fácil e mais rápida para obter um robô de negociação. Mais de 5 000 aplicativos diferentes para MetaTrader já estão à sua espera no Mercado, escolha e compre!