Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
- www.mql5.com
MQL5: linguagem de estratégias de negociação inseridas no Terminal do Cliente MetaTrader 5. A linguagem permite escrever seus próprios sistemas automáticos de negócios, indicadores técnicos, scripts e bibliotecas de funções
Winy010:
Bom dia!
Alguns comandos do código estão em português. Provavelmente o tradutor automático estava habilitado quando você copiou esse código. Vá à página do código e copie-o novamente sem habilitar o tradutor . . .
Vinicius de Oliveira:
Olá, bom dia vinicuis. Eu não tinha reparado nessa ferramenta de tradução automática, ja corrigi a postagem do codigo.
Bom dia!
Alguns comandos do código estão em português. Provavelmente o tradutor automático estava habilitado quando você copiou esse código. Vá à página do código e copie-o novamente sem habilitar o tradutor . . .
Winy010:
Olá, bom dia vinicuis. Eu não tinha reparado nessa ferramenta de tradução automática, ja corrigi a postagem do codigo.
Olá, bom dia vinicuis. Eu não tinha reparado nessa ferramenta de tradução automática, ja corrigi a postagem do codigo.
Identifiquei o seguinte:
//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2020, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #property copyright "Winycius" #property link "https://mql5.com" #property version "2.0" #property indicator_chart_window #property indicator_buffers 7 #property indicator_plots 2 #property indicator_label1 "Media40" #property indicator_type1 DRAW_COLOR_LINE #property indicator_color1 clrRed, clrGreen, clrOrange,C'0,0,0',C'0,0,0',C'0,0,0' #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #property indicator_label2 "Candles" #property indicator_type2 DRAW_COLOR_CANDLES #property indicator_color2 clrCrimson, clrDodgerBlue,C'0,0,0',C'0,0,0' #property indicator_style2 STYLE_SOLID #property indicator_width2 1 input int Periodo1 = 40; double Media40Color[]; double Media40Value[]; double CandleColors[]; double candlesOpenBuffer[], candlesHighBuffer[], candlesLowBuffer[], candlesCloseBuffer[]; int handle_media40; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0, Media40Value, INDICATOR_DATA); SetIndexBuffer(1, Media40Color, INDICATOR_COLOR_INDEX); SetIndexBuffer(2, candlesOpenBuffer, INDICATOR_DATA); SetIndexBuffer(3, candlesHighBuffer, INDICATOR_DATA); SetIndexBuffer(4, candlesLowBuffer, INDICATOR_DATA); SetIndexBuffer(5, candlesCloseBuffer, INDICATOR_DATA); SetIndexBuffer(6, CandleColors, INDICATOR_COLOR_INDEX); PlotIndexSetString(0, PLOT_LABEL, "Media40" + DoubleToString(Periodo1, 0)); handle_media40 = iMA(_Symbol, _Period, Periodo1, 0, MODE_SMA, PRICE_CLOSE); if(handle_media40 == INVALID_HANDLE) { Print("Erro nos handles!"); return INIT_FAILED; } //---- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { int start = prev_calculated == 0 ? 1 : prev_calculated -1; //--- Moving Average indicator if(CopyBuffer(handle_media40, 0, 0, rates_total, Media40Value) <= 0) { printf("Erro no CopyBuffer handle_media!"); return(-1); } for(int i = start; i < rates_total; i++) { candlesOpenBuffer[i] = EMPTY_VALUE; candlesHighBuffer[i] = EMPTY_VALUE; candlesLowBuffer[i] = EMPTY_VALUE; candlesCloseBuffer[i] = EMPTY_VALUE; CandleColors[i] = EMPTY_VALUE; Media40Color[i] = 2; //coloração if(close[i] > Media40Value[i]) { Media40Color[i] = 1; if(close[i] != open[i]) { candlesOpenBuffer[i] = open[i]; candlesHighBuffer[i] = high[i]; candlesLowBuffer[i] = low[i]; candlesCloseBuffer[i] = close[i]; CandleColors[i] = 1; } } if(close[i] < Media40Value[i]) { Media40Color[i] = 0; if(close[i] != open[i]) { candlesOpenBuffer[i] = open[i]; candlesHighBuffer[i] = high[i]; candlesLowBuffer[i] = low[i]; candlesCloseBuffer[i] = close[i]; CandleColors[i] = 1; } } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ void DefineColorMedia(double &bufferValue[], double &bufferColor[], int index, const double &close[]) { bool fechamentoMaiorQueMediaeMediaAscendente = (close[index] > bufferValue[index] && bufferValue[index] > bufferValue[index - 1]); bool fechamentoMenorQueMediaeMediaDescendente = (close[index] < bufferValue[index] && bufferValue[index] < bufferValue[index - 1]); if(fechamentoMaiorQueMediaeMediaAscendente) { bufferColor[index] = 1; // verde } else { if(fechamentoMenorQueMediaeMediaDescendente) { bufferColor[index] = 0; // vermelho } else { bufferColor[index] = 2; // amarelo } } } //-------------- void DefineColorCandle(double &mediavalue[], int index, const double &close[], const double &open[], const double &high[], const double &low[]) { DefineBuffersCandle(index, close, open, high, low); //bool candleDeForcaMediaAscendente=close[index]>mediavalue[index] && close[index]>open[index]; bool candleDeForcaMediaAscendente = close[index] > close[index - 1] && mediavalue[index] > mediavalue[index - 1]; //bool candleDeForcaMediaDescendente=close[index]<mediavalue[index] && close[index]<open[index]; bool candleDeForcaMediaDescendente = close[index] < close[index - 1] && mediavalue[index] < mediavalue[index - 1]; if(candleDeForcaMediaAscendente) { CandleColors[index] = 1; // Verde } else { if(candleDeForcaMediaDescendente) { CandleColors[index] = 0; // Vermelho } } } //-------------- void DefineBuffersCandle(int index, const double &close[], const double &open[], const double &high[], const double &low[]) { candlesOpenBuffer[index] = open[index]; candlesHighBuffer[index] = high[index]; candlesLowBuffer[index] = low[index]; candlesCloseBuffer[index] = close[index]; } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Boa sorte!!!
Vinicius de Oliveira:
Muito obrigado, deu certo aqui. Deus te abençoe sempre
Identifiquei o seguinte:
Boa sorte!!!
Winy010:
Muito obrigado, deu certo aqui. Deus te abençoe sempre
Muito obrigado, deu certo aqui. Deus te abençoe sempre
👍
Identifiquei também ausência de parênteses no trecho abaixo (já corrigido no código acima):
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se