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
![Bibliotecas](https://c.mql5.com/i/code/library.png)
Classe para ajuste de preço, para qualquer ativo, inclusive miniindice e minidolar. - biblioteca para MetaTrader 5
- Visualizações:
- 4422
- Avaliação:
- 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.](https://c.mql5.com/i/code/indicator.png)
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)](https://c.mql5.com/i/code/library.png)
Normalize (correct) the volume (lot) according to the symbol lot step
![Painel modular simples e muito facil de usar.](https://c.mql5.com/i/code/library.png)
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](https://c.mql5.com/i/code/expert.png)
EA simples para a execução de martingale