Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 27
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Você já precisou copiar e colar alguns objetos gráficos entre gráficos abertos? Acho que sim. Surpreendentemente, o MetaTrader não oferece o recurso "Copiar e colar" para objetos. A única coisa que lhe permite obter um efeito mais ou menos semelhante são os modelos (arquivos tpl). Mas o modelo armazena o estado completo do gráfico, incluindo indicadores, configurações e muitas coisas auxiliares, que podem ser irrelevantes e desnecessárias para o procedimento de replicação necessário.
É por isso que desenvolvi esse indicador ChartObjectsCopyPaste.mq5. Ele copia os objetos selecionados para a área de transferência, de onde eles podem ser colados em outro(s) gráfico(s). Sem amarras.
O indicador é baseado em outro indicador publicado no livro de algotrading - ObjectGroupEdit.mq5.
Siga o link para saber mais sobre todas as classes subjacentes(ObjectMonitor, MapArray e outras) que funcionam nos bastidores.
Esse indicador não tem buffers. Ele deve ser anexado a pelo menos dois gráficos: o gráfico de origem, do qual você deseja copiar os objetos, e o gráfico de destino, onde você planeja colá-los.
Durante a execução em um gráfico, o indicador rastreia os objetos gráficos existentes e faz anotações sobre quais estão selecionados.
Como de costume, os comandos "Copiar e colar" funcionam em pares:
- Pressione a tecla de atalho Ctrl+Q para copiar todos os objetos selecionados para a área de transferência do Windows como um texto (você pode salvá-lo e visualizá-lo em qualquer editor de texto; veja um exemplo abaixo).
- Em um gráfico de destino, pressione Ctrl+J para colar todos os objetos da área de transferência.
Por que Ctrl+Q/Ctrl+J? Essas são apenas duas combinações de teclas vagas escolhidas voluntariamente entre pouquíssimas. Isso ocorre porque o MetaTrader intercepta e não propaga muitas teclas de atalho para os programas MQL. Isso se aplica especialmente ao padrão Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins, que não está funcionando nesse contexto.
Como o código-fonte está disponível, você pode alterar as teclas de atalho para outras combinações.
Como o indicador usa DLLs do sistema para acessar a área de transferência do Windows, você deve permitir importações de DLL na caixa de diálogo Propriedades, na guia Dependências.
Devido ao fato de a base de código não permitir importações de DLL, o código relacionado à área de transferência está envolvido na diretiva de pré-processador condicional #ifdef DLL_LINK, portanto, descomente a linha
#define DLL_LINK
antes da compilação. Caso contrário, você verá como os stubs da função da área de transferência mostrarão alertas em resposta ao pressionamento das teclas de atalho, mas nenhuma ação real será executada!
- MakeAllSelectable - sinalizador para tornar todos os objetos selecionáveis (que normalmente é falso para os objetos criados programaticamente);
- LogDetails - sinalizador para gerar todas as propriedades dos objetos transferidos para o registro;
Aqui está um exemplo de texto da área de transferência com 2 objetos:
OBJ_VLINE H1 Vertical Line 5578 0 0 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 55295 1 OBJPROP_STYLE 2 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 0 8 OBJPROP_TIME 1726739940 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847009 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1032 OBJPROP_RAY 1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE 1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Vertical Line 5578 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP OBJ_CHANNEL H1 Equidistant Channel 40885 5 1 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 255 1 OBJPROP_STYLE 0 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 5 8 OBJPROP_TIME 1726758000 8 OBJPROP_TIME.1 1726797600 8 OBJPROP_TIME.2 1726758000 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847883 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1003 OBJPROP_RAY_LEFT 0 1004 OBJPROP_RAY_RIGHT 0 1031 OBJPROP_FILL 0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE -28.113879003558715 9 OBJPROP_PRICE.1 -21.708185053380777 9 OBJPROP_PRICE.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Equidistant Channel 40885 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP
E aqui estão esses objetos colados no gráfico:
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/52263

Permite visualizar facilmente períodos de alta e de baixa confirmados pelo indicador de ziguezague usando vlines. Você pode controlar a exibição do ziguezague, escolhendo começar do início do gráfico ou de um determinado número de barras, bem como a exibição de rótulos que mostram o preço do pico ou da depressão, a direção do período passado e sua amplitude em pips. Obviamente, isso funciona tanto na janela principal quanto nas subjanelas. AVISO!!! Trata-se de uma ajuda valiosa para compreender e calibrar indicadores e desenvolver estratégias, mas não se destina ao uso direto. Traduzido com DeepL.com (versão gratuita)

- O script examina o gráfico atual em busca de objetos de gráfico disponíveis, - Conta e os exclui de acordo - E registra os nomes dos objetos no gráfico, respectivamente.

O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.

O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.