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

Classe para ajuste de preço, para qualquer ativo, inclusive miniindice e minidolar. - biblioteca para MetaTrader 5

Visualizações:
4253
Avaliação:
(10)
Publicado:
2020.01.08 18:14
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Declaração do objeto

Como default o objeto é declado com o simbolo do gráfico. Caso deseje declarar um simbolo diferente do presente no grafico, é so declarar o objeto passando como argumento a string com o nome do simbolo, caso esse simbolo não exista, o objeto será inicializado como default.

Para verificar se o simbolo desejado foi inicializado, é so chamar a função " GetSymbolName() " que retorna uma string com o nome do simbolo.

void OnStart()
  {
  CPriceAdjustmentV1 Symbol1;   //Default -> Symbol of the graph
  CPriceAdjustmentV1 Symbol2("EURUSD"); //User Symbol
  CPriceAdjustmentV1 Symbol3("NonexistentSymbol"); //Wrong Symbol
  
  printf("Symbol1 %s",Symbol1.GetSymbolName());
  printf("Symbol2 %s",Symbol2.GetSymbolName());
  printf("Symbol3 %s",Symbol1.GetSymbolName());
   
  }

Colocando esse script no grafico do "GBPUSD"

Funções presentes

double AdjustPrice(double price)

Recebe o preco não ajustado e retorna o ajustado.

void OnStart()
  {
  CPriceAdjustmentV1 Symbol1;   //Graph "PETR4" 0.01/point
  CPriceAdjustmentV1 Symbol2("DOLG20"); // 0.5/point
  CPriceAdjustmentV1 Symbol3("WING20"); // 5/point

  
  double Prices[]={95,110.5,60.85,314.555,623.6498756};
  int n=ArraySize(Prices);
  
  for(int i=0;i<n;i++){
  printf("Symbol: %s, TickZize: %f , Unadjusted price: %f, Adjusted price: %f",Symbol1.GetSymbolName(),SymbolInfoDouble(Symbol1.GetSymbolName(),SYMBOL_TRADE_TICK_SIZE),Prices[i],Symbol1.AdjustPrice(Prices[i]));
  
  }
  
  for(int i=0;i<n;i++){
  printf("Symbol: %s, TickZize: %f , Unadjusted price: %f, Adjusted price: %f",Symbol2.GetSymbolName(),SymbolInfoDouble(Symbol2.GetSymbolName(),SYMBOL_TRADE_TICK_SIZE),Prices[i],Symbol2.AdjustPrice(Prices[i]));
  
  }
  
  for(int i=0;i<n;i++){
  printf("Symbol: %s, TickZize: %f , Unadjusted price: %f, Adjusted price: %f",Symbol3.GetSymbolName(),SymbolInfoDouble(Symbol3.GetSymbolName(),SYMBOL_TRADE_TICK_SIZE),Prices[i],Symbol3.AdjustPrice(Prices[i]));
  
  }
  
   
   
   
   
  }

Para mostrar peguei três ativos com TickSize bem diferentes e ajustei os mesmos preços.

Resultado:

As outras 4 função são:

double PointsToPriceTPBuy(int point,double price);
double PointsToPriceSLBuy(int point,double price);
double PointsToPriceTPSell(int point,double price);
double PointsToPriceSLSell(int point,double price);

Recebem dois argumentos:

(int) Point = Numero de pontos;

(double) Price = Preco de referencia (não precisa ser ajustado).

Retorna o preço ajustado em relação ao de referencia.

Exemplo:

  double UPrice=658.32564;
  printf("Symbol: %s",Symbol1.GetSymbolName());
  printf("TickSize: %f",SymbolInfoDouble(Symbol1.GetSymbolName(),SYMBOL_TRADE_TICK_SIZE));
  printf("Unadjusted price: %f",UPrice);
  printf("Adjusted price: %f",Symbol1.AdjustPrice(UPrice));
  printf("TakeProfit 10 points buy: %f",Symbol1.PointsToPriceTPBuy(10,UPrice));
  printf("StopLoss 10 points buy: %f",Symbol1.PointsToPriceSLBuy(10,UPrice));

Resultado:



Regressão linear e ajuste polinomial de qualquer grau por mínimos quadrados. Regressão linear e ajuste polinomial de qualquer grau por mínimos quadrados.

O ajuste polinomial por minimos quadrados tem como objetivo encontrar uma equação polinomial de grau N, que mais se aproxima de um conjunto de pontos tabelados. Caso o grau N seja igual a 1, esse polinomio será uma reta, podendo caracterizar esse ajuste como regressão linear.

Volume Normalize (correct it) Volume Normalize (correct it)

Normalize (correct) the volume (lot) according to the symbol lot step

Painel modular simples e muito facil de usar. Painel modular simples e muito facil de usar.

Painel modular que se adapta ao tamanho do grafico, em uma proporção desejada pelo usuário. O usuário pode adicionar quantos botões e textos quiser. Muito simples e facil de usar.

Martingale Martingale

EA simples para a execução de martingale