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
Bibliotecas

Init_Sync - biblioteca para MetaTrader 5

Visualizações:
919
Avaliação:
(31)
Publicado:
2017.05.03 10:39
\MQL5\Include\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Se, no MetaTrader, for alterado o timeframe ou o nome do símbolo do gráfico, todos los indicadores no gráfico serão descarregados e carregados novamente nele. Ao acontecer isto, ao contrário de MT4, no MT5 o processo de descarregamento/carregamento não é determinado devido a características da arquitetura interna.

Isto, por vezes, traz problemas relacionados com o fato de que o OnInit da nova cópia carregada do indicador pode ser executado antes do OnDeinit da cópia descarregada.

Tal situação está relacionada ao desejo de enviar (direta/indiretamente) certas informações a partir do OnDeinit de uma cópia velha do indicador para o OnInit da nova. Em outras palavras, a nova cópia necessita, por um lado, conhecer a existência do indicador da cópia velha e, por outro, não ser carregada até que a velha não seja descarregada.

Esta biblioteca permite que qualquer indicador esteja dotado com uma sincronização desse tipo.

Como exemplo, tomemos um indicador simples

#property indicator_chart_window

#property indicator_buffers 1
#property indicator_plots   1
#property indicator_color1  clrRed
#property indicator_type1   DRAW_LINE

input int Input = 0;

double Buffer[];

int OnInit()
{
  SetIndexBuffer(0, Buffer);
  Print("Init");
  return(INIT_SUCCEEDED);
}

void OnDeinit( const int Reason )
{
  Print("DeInit");
}

void OnChartEvent( const int id,
                   const long& lparam,
                   const double& dparam,
                   const string& sparam )
{
}

void OnTimer()
{
}

int OnCalculate( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[] )
{
  ArrayCopy(Buffer, open, prev_calculated, prev_calculated);  
  return(rates_total);
}

Se for executado este indicador e começado a mudar de timeframe ou símbolo, veremos no log a violação na alternância de cadeia de caracteres "Init" e "Deinit".

No entanto, se for adicionado a seguinte cadeia de caracteres no início do código do indicador

#include <Init_Sync.mqh> // torna sincronizados os Init/Deinit dos indicadores

será observada a rotação correspondente.

Para que esta propriedade seja operada para qualquer indicador, é necessário adicionar a cadeia de caracteres acima no início do código deste indicador.

Observações

// A biblioteca torna sincronizados o Init/Deinit dos indicadores.
// No indicador devem estar as funções int OnInit(), OnDeinit, OnTimer e OnChartEvent.
// A que não são utilizados - deixar espaços vazios.

#include <TypeToBytes.mqh> // https://www.mql5.com/pt/code/16280
#include <crc64.mqh>       // https://www.mql5.com/en/blogs/post/683577

Os arquivos mqh anexos estão nas ligações do código-fonte

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

Color_Spread Color_Spread

O indicador mostra o spread atual usando uma linha colorida.

Exp_XFatlXSatlCloud Exp_XFatlXSatlCloud

Sistema de negociação Exp_XFatlXSatlCloud construído com base nas alterações da direção da tendência exibida pelo indicador XFatlXSatlCloud.

XMA_BB_Pivot XMA_BB_Pivot

Dois retângulos com preenchimento colorido construídos entre os valores de dois canais de Bollinger numa mesma barra.

XMA_Keltner_Pivot XMA_Keltner_Pivot

Dois retângulos com preenchimento colorido construídos entre os valores de dois canais de Keltner numa mesma barra.