Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
3570
Avaliação:
(35)
Publicado:
2018.02.05 07:34
\MQL5\Include\fxsaber\Clock\ \MQL5\Include\fxsaber\ \MQL5\Indicators\fxsaber\ \MQL5\Files\
Clocks.zip (903.45 KB)
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Biblioteca (Clock.mqh) ajuda a criar relógios analógicos na forma de recursos gráficos.


Recursos

No seguinte código fonte, é mostrado como se usa a biblioteca:

// MQL4&5-code
// Exemplo de um EA multiplataforma que cria o relógio analógico, no gráfico

#property strict

#include <fxsaber\Clock.mqh> // https://www.mql5.com/pt/code/19388

const string ObjName = __FILE__;            // Nome do objeto Bitmap para exibir o relógio
const string ResourceName = "::" + ObjName; // Nome do recurso em que será formado o relógio

// Criamos o relógio a partir das configurações do arquivo .ini correspondente
CLOCK Clock("Clocks\\Clock01\\Clock01.INI", ResourceName);

void OnINIt()
{
  // Criamos o objeto gráfico para exibir o relógio
  ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);

  // Mostramos-lhe o nome do recurso em que se encontra o relógio
  ObjectSetString(0, ObjName, OBJPROP_BMPFILE, 0, ResourceName);

  // Adicionamos a capacidade de selecionar o objeto para mover o mouse
  ObjectSetInteger(0, ObjName, OBJPROP_SELECTABLE, true);

  // Ativamos o temporizador dos segundos para atualizar o relógio
  EventSetTimer(1);
}

void OnTimer()
{
  // Definimos a hora atual no relógio
  Clock.SetTime(TimeLocal());

  // Redesenhamos o gráfico para as mudanças se tornarem visíveis imediatamente
  ChartRedraw();
}

Depois de iniciar, no gráfico, aparece o seguinte relógio em andamento:


Indicador

Para usar imediatamente, anexado o indicador multiplataforma Clock.mq5.

Nele, é implementada a troca interativa de "skins" - variações no relógio (descompacte o arquivo ZIP) são alternadas usando as teclas PARA CIMA/PARA BAIXO, no teclado.


Características

  • Relógio bitmap (não vetorial);
  • As rotações dos ponteiros do relógio são feitas sem suavização;
  • A biblioteca funciona no MetaTrader 4/5.


Formação do relógio

O relógio original do exemplo foi tomado da Internet buscando relógios flash (existem arquivos swf no ZIP). Ele é conveniente na medida em que vem sob a forma de relógio analógico, ponteiros, etc. Mas, pode-se, naturalmente, utilizar quaisquer outras fontes. Por exemplo, arquivos vectoriais prontos da Web. Ou desenhar você sozinho.

Os arquivos .ini (ver exemplos) definem as configurações de formação do relógio em camadas. As configurações são editadas em qualquer editor de texto e têm a aparência a seguir

ImageName = ClockFace.bmp
BoundX = 0 // coordenada X do ponto zero na imagem bmp (camada)
BoundY = 0 // coordenada Y do ponto zero na imagem bmp (camada)
X = 0      // coordenada X do ponto zero dentro da imagem formada (das camadas)
Y = 0      // coordenada y do ponto zero dentro da imagem formada (das camadas)
Rotate = 0 // velocidade de rotação
A = 100%   // Qual parte do canal Alpha é utilizada
R = 100%   // Qual parte do canal Redé utilizada 
G = 100%   // Qual parte do canal Green é utilizado
B = 100%   // Qual parte do canal Blue é utilizado

Quanto mais abaixo a descrição da camada, no arquivo de configurações, mais acima está ele do anteriormente descrito. Não há restrições especiais sobre o número de camadas.

Devido a esta construção de imagens, a biblioteca pode ser usada para formar não só um relógio, mas também outros objetos estáticos/dinâmicos. Para um relógio dinâmico, basta ter a possibilidade de definir apenas a rotação. Mas, ao código podem ser adicionados outros movimentos (deslocamento, escala, etc.) usando apenas algumas linhas. Aqui, o código-fonte é apenas um exemplo simples de realização de esta abordagem, na descrição de imagens.

Voltando para o tema do relógio, devido ao trabalho original em camadas (considerado no relógio flash), são implementadas sombras de ponteiros e o destaque.

Se você quer fazer, por exemplo, um relógio analógico transparente, basta definir, no arquivo .ini correspondente, um canal Alpha inferior a 100%, obtendo os seguintes resultados:

Canal Alpha do relógio analógico 90% (A = 90)

No momento da publicação, no Mercado, o relógio analógico era praticamente ausente. No CodeBase apareceu esta variação.

Do original, na biblioteca, é escrita apenas a função LAYER::Rotate, que responde pela rotação. Talvez esta função incentive a criação de soluções de terceiros com base em recursos gráficos dinâmicos, como aconteceu com o primeiro relógio.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/19388

JS-Chaos JS-Chaos

EA baseado na estratégia de Bill Williams'.

KI_signals_v2 KI_signals_v2

Indicador que recebe sinais de negociação a partir do histograma XMACD.

N seconds N points N seconds N points

Advisor que monitora as posições de todos os símbolos e todos os mágicos. Caso seja aberta a posição "Waiting for seconds" e seu lucro - "Take Profit" pontos, fecha as posições. Caso o lucro não atinja "Take Profit" pontos, transfere o nível de take profit.

Dtm Dtm

Oscilador em estilo DRAW_FILLING usando filtros digitais.