Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
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

TypeToBytes - biblioteca para MetaTrader 5

Visualizações:
1061
Avaliação:
(40)
Publicado:
2017.01.09 09:16
Atualizado:
2017.07.17 17:19
\MQL5\Include\ \MQL5\Scripts\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Esta biblioteca multi-plataforma permite realizar convenientemente a operação um-byte-de-cada-vez com estruturas e tipos de dados padrão.

Caraterísticas

  • Comparação de um-byte-de-cada-vez (== e !=) entre as estruturas e tipos de dados padrão (em MQL, os operadores para comparar estruturas estão ausentes por padrão).
  • Definição do deslocamento de bytes de uma estrutura arquivada pelo seu nome.
  • Leitura do valor de qualquer tipo padrão pelo deslocamento de bytes nos dados de origem.
  • Registro de estruturas e tipos padrão (através do operador =) por deslocamento de bytes (através do operador []) em dados de origem.
  • Atribuição por bytes (através do operador =).
  • Conversão de estruturas e tipos de dados padrão em uma matriz de bytes.
Tudo mencionado se aplica a estruturas simples.

Um script com comentários detalhados é anexado para demonstrar as capacidades da biblioteca
// MQL4&5-code

#property strict

#include <TypeToBytes.mqh>

#define PRINT(A) ::Print(#A + " = " + (string)A);

void OnStart( void )
{
  MqlTick Tick;
  ::SymbolInfoTick(::Symbol(), Tick);

  MqlTick CloneTick = Tick;

// Trabalho com estruturas
  if (_R(Tick) == CloneTick)             // Agora é possível comparar estruturas
    ::Print("Equal");

// Obtenção do valor do tipo exigido segundo o deslocamento
  PRINT(_R(Tick)[(datetime)0])           // Verificamos o valor datetime om o deslocamento zero no objeto da estrutura MqlTick - Tick.time

// Obter o deslocamento do campo de estrutura
  const int Offset = _OFFSET(Tick, bid); // Encontrado o deslocamento em bytes do campo de lance no objeto MqlTick

  PRINT(Tick.bid)                        // Verificamos o valor Tick.bid
  _W(Tick)[Offset] = 1.23456;            // Registramos de acordo com o deslocamento encontrado o valor (double)1.23456

  PRINT(Tick.bid)                        // Confira que Tick.bid seja igual a 1.23456

  PRINT(_R(Tick)[(double)Offset])        // Imprimimos o valor double, que se encontra na deslocaçao Offset, isto é novamente Tick.bid

  PRINT(_R(Tick).Bytes[8])               // Verificamos o valor de byte com deslocamento 8 no objeto da estrutura MqlTick
  PRINT(_R(Tick)[(uchar)8])              // É igual, mas de outra maneira

  PRINT(CloneTick.bid)                   // Verificamos o valor CloneTick.bid
  _W(CloneTick)[0] = Tick;               // Registramos no CloneTick por deslocamento zero o valor do objeto de estrutura Tick
  PRINT(CloneTick.bid)                   // Conferimos que CloneTick.bid == Tick.bid

// Trabalho com tipos padrão
  color Color = C'241,248,255';

  PRINT(_R(Color)[(uchar)1])             // Green-cor de componente - 248

  _W(Color)[2] = (uchar)230;             // Registramos por deslocamento 2 o valor (uchar)230.
  PRINT(Color)                           // Conferimos que Color agora é C'241,248,230'

// Trabalho simultâneo com tipos padrão
  if (_R(Tick) != Color)                 // É possível comparar estruturas com os tipos padrão
    ::Print("Not equal");

// Operador de byte de atribuição
  int i = 0;
  _W(i) = (float)12.34;                  // Registramos na variável int a apresentação por byte do número (float)12.34
  PRINT(i)                               // verificamos que é 1095069860

  float f = 0;
  _W(f) = i;                             // Registramos na variável float a apresentação por byte do número obtido anteriormente (int)1095069860
  PRINT(f)                               // Conferimos que o numero é igual ao original - (float)12.34

  return;
}

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

PriceLines PriceLines

Script para a elaboração de layout de preços.

StochasticDiff_HTF StochasticDiff_HTF

Indicador StochasticDiff com possibilidade de alterar o timeframe do indicador nos parâmetros de entrada.

Monthly Weekly Levels Monthly Weekly Levels

O script exibe no gráfico os níveis semanais e mensais.

PricePosition PricePosition

Indicador PricePosition mostra estatísticas segundo o preço no ponto de canto, após o qual o preço sobe acima (COMPRAR) ou cai abaixo (VENDER).