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
Init_Sync - biblioteca para MetaTrader 5
- Visualizações:
- 942
- Avaliação:
- Publicado:
- 2017.05.03 10:39
- 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
O indicador mostra o spread atual usando uma linha colorida.
Exp_XFatlXSatlCloudSistema de negociação Exp_XFatlXSatlCloud construído com base nas alterações da direção da tendência exibida pelo indicador XFatlXSatlCloud.
Dois retângulos com preenchimento colorido construídos entre os valores de dois canais de Bollinger numa mesma barra.
XMA_Keltner_PivotDois retângulos com preenchimento colorido construídos entre os valores de dois canais de Keltner numa mesma barra.