ajuste no indicador de linhas horizontal quem eh bom em indicadores mql5

 

alguem por favor pode me ajudar...

montei um indicador, mas ele não funcionou como eu queria no EA,  eu gostaria que o indicador mostrasse as linha horizontais(isso ele faz) e gostaria que essas linhas eu conseguisse utilizar elas como suporte e resistência,(isso não deu).

com indicadores eh o meu primeiro código(desculpa a bagunça do código)  se alguém conseguir me dar um suporte...


//--------------------------------------------------------------------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------


//+------------------------------------------------------------------+

//|                                                       Máxima.mq5 |

//|                        Copyright 2020, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2020, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property indicator_chart_window

#property indicator_chart_window

#property indicator_buffers 7

#property indicator_buffers 7


MqlRates diario[];

double bufferdoindicador1[];

double bufferdoindicador2[];

double bufferdoindicador3[];

double bufferdoindicador4[];

double bufferdoindicador5[];

double bufferdoindicador6[];

double bufferdoindicador7[];


double fechamento;


//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- indicator buffers mapping

   ArraySetAsSeries(diario,true);

   ArraySetAsSeries(bufferdoindicador1,true);

   ArraySetAsSeries(bufferdoindicador2,true);

   ArraySetAsSeries(bufferdoindicador3,true);

   ArraySetAsSeries(bufferdoindicador4,true);

   ArraySetAsSeries(bufferdoindicador5,true);

   ArraySetAsSeries(bufferdoindicador6,true);

   ArraySetAsSeries(bufferdoindicador7,true);

   SetIndexBuffer(0,bufferdoindicador1,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador2,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador3,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador4,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador5,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador6,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador7,INDICATOR_DATA);

   

//---

   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[])

  {

//--

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 3",OBJ_HLINE,0,0,diario[0].close + 3438*_Point);

   ObjectSetInteger(0,"posição + 3",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 3",OBJPROP_COLOR,clrBlue);

   ObjectSetInteger(0,"posição + 3",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 2.5",OBJ_HLINE,0,0,diario[0].close + 2865*_Point);

   ObjectSetInteger(0,"posição + 2.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 2.5",OBJPROP_COLOR,clrBlueViolet);

   ObjectSetInteger(0,"posição + 2.5",OBJPROP_WIDTH,2);

   

    CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 2",OBJ_HLINE,0,0,diario[0].close + 2292*_Point);

   ObjectSetInteger(0,"posição + 2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 2",OBJPROP_COLOR,clrGreen);

   ObjectSetInteger(0,"posição + 2",OBJPROP_WIDTH,2);

 


   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 1.5",OBJ_HLINE,0,0,diario[0].close + 1719*_Point);

   ObjectSetInteger(0,"posição + 1.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 1.5",OBJPROP_COLOR,clrGreenYellow);

   ObjectSetInteger(0,"posição + 1.5",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 1",OBJ_HLINE,0,0,diario[0].close + 1146*_Point);

   ObjectSetInteger(0,"posição + 1",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 1",OBJPROP_COLOR,clrBlue);

   ObjectSetInteger(0,"posição + 1",OBJPROP_WIDTH,2);

 

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 0.5",OBJ_HLINE,0,0,diario[0].close + 573*_Point);

   ObjectSetInteger(0,"posição + 0.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 0.5",OBJPROP_COLOR,clrYellow);

   ObjectSetInteger(0,"posição + 0.5",OBJPROP_WIDTH,2);


   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição 0.0",OBJ_HLINE,0,0,diario[0].close);

   ObjectSetInteger(0,"posição 0.0",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição 0.0",OBJPROP_COLOR,clrWhite);

   ObjectSetInteger(0,"posição 0.0",OBJPROP_WIDTH,2);

   

    CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 0.5",OBJ_HLINE,0,0,diario[0].close - 573*_Point);

   ObjectSetInteger(0,"posição - 0.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 0.5",OBJPROP_COLOR,clrGreen);

   ObjectSetInteger(0,"posição - 0.5",OBJPROP_WIDTH,2);


   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 1",OBJ_HLINE,0,0,diario[0].close - 1146*_Point);

   ObjectSetInteger(0,"posição - 1",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 1",OBJPROP_COLOR,clrBlue);

   ObjectSetInteger(0,"posição - 1",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 1.5",OBJ_HLINE,0,0,diario[0].close - 1719*_Point);

   ObjectSetInteger(0,"posição - 1.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 1.5",OBJPROP_COLOR,clrRed);

   ObjectSetInteger(0,"posição - 1.5",OBJPROP_WIDTH,2);

 

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 2",OBJ_HLINE,0,0,diario[0].close - 2292*_Point);

   ObjectSetInteger(0,"posição - 2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 2",OBJPROP_COLOR,clrBrown);

   ObjectSetInteger(0,"posição - 2",OBJPROP_WIDTH,2);

   

    CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 2.5",OBJ_HLINE,0,0,diario[0].close - 2865*_Point);

   ObjectSetInteger(0,"posição - 2.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 2.5",OBJPROP_COLOR,clrBisque);

   ObjectSetInteger(0,"posição - 2.5",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 3",OBJ_HLINE,0,0,diario[0].close - 3438*_Point);

   ObjectSetInteger(0,"posição - 3",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 3",OBJPROP_COLOR,clrBrown);

   ObjectSetInteger(0,"posição - 3",OBJPROP_WIDTH,2);

 

 

//--- return value of prev_calculated for next call

   return(rates_total);

  }

Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
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
 
saulocosta83:

alguem por favor pode me ajudar...

montei um indicador, mas ele não funcionou como eu queria no EA,  eu gostaria que o indicador mostrasse as linha horizontais(isso ele faz) e gostaria que essas linhas eu conseguisse utilizar elas como suporte e resistência,(isso não deu).

com indicadores eh o meu primeiro código(desculpa a bagunça do código)  se alguém conseguir me dar um suporte...


//--------------------------------------------------------------------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------


//+------------------------------------------------------------------+

//|                                                       Máxima.mq5 |

//|                        Copyright 2020, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2020, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property indicator_chart_window

#property indicator_chart_window

#property indicator_buffers 7

#property indicator_buffers 7


MqlRates diario[];

double bufferdoindicador1[];

double bufferdoindicador2[];

double bufferdoindicador3[];

double bufferdoindicador4[];

double bufferdoindicador5[];

double bufferdoindicador6[];

double bufferdoindicador7[];


double fechamento;


//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- indicator buffers mapping

   ArraySetAsSeries(diario,true);

   ArraySetAsSeries(bufferdoindicador1,true);

   ArraySetAsSeries(bufferdoindicador2,true);

   ArraySetAsSeries(bufferdoindicador3,true);

   ArraySetAsSeries(bufferdoindicador4,true);

   ArraySetAsSeries(bufferdoindicador5,true);

   ArraySetAsSeries(bufferdoindicador6,true);

   ArraySetAsSeries(bufferdoindicador7,true);

   SetIndexBuffer(0,bufferdoindicador1,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador2,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador3,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador4,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador5,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador6,INDICATOR_DATA);

   SetIndexBuffer(0,bufferdoindicador7,INDICATOR_DATA);

   

//---

   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[])

  {

//--

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 3",OBJ_HLINE,0,0,diario[0].close + 3438*_Point);

   ObjectSetInteger(0,"posição + 3",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 3",OBJPROP_COLOR,clrBlue);

   ObjectSetInteger(0,"posição + 3",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 2.5",OBJ_HLINE,0,0,diario[0].close + 2865*_Point);

   ObjectSetInteger(0,"posição + 2.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 2.5",OBJPROP_COLOR,clrBlueViolet);

   ObjectSetInteger(0,"posição + 2.5",OBJPROP_WIDTH,2);

   

    CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 2",OBJ_HLINE,0,0,diario[0].close + 2292*_Point);

   ObjectSetInteger(0,"posição + 2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 2",OBJPROP_COLOR,clrGreen);

   ObjectSetInteger(0,"posição + 2",OBJPROP_WIDTH,2);

 


   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 1.5",OBJ_HLINE,0,0,diario[0].close + 1719*_Point);

   ObjectSetInteger(0,"posição + 1.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 1.5",OBJPROP_COLOR,clrGreenYellow);

   ObjectSetInteger(0,"posição + 1.5",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 1",OBJ_HLINE,0,0,diario[0].close + 1146*_Point);

   ObjectSetInteger(0,"posição + 1",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 1",OBJPROP_COLOR,clrBlue);

   ObjectSetInteger(0,"posição + 1",OBJPROP_WIDTH,2);

 

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição + 0.5",OBJ_HLINE,0,0,diario[0].close + 573*_Point);

   ObjectSetInteger(0,"posição + 0.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição + 0.5",OBJPROP_COLOR,clrYellow);

   ObjectSetInteger(0,"posição + 0.5",OBJPROP_WIDTH,2);


   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição 0.0",OBJ_HLINE,0,0,diario[0].close);

   ObjectSetInteger(0,"posição 0.0",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição 0.0",OBJPROP_COLOR,clrWhite);

   ObjectSetInteger(0,"posição 0.0",OBJPROP_WIDTH,2);

   

    CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 0.5",OBJ_HLINE,0,0,diario[0].close - 573*_Point);

   ObjectSetInteger(0,"posição - 0.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 0.5",OBJPROP_COLOR,clrGreen);

   ObjectSetInteger(0,"posição - 0.5",OBJPROP_WIDTH,2);


   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 1",OBJ_HLINE,0,0,diario[0].close - 1146*_Point);

   ObjectSetInteger(0,"posição - 1",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 1",OBJPROP_COLOR,clrBlue);

   ObjectSetInteger(0,"posição - 1",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 1.5",OBJ_HLINE,0,0,diario[0].close - 1719*_Point);

   ObjectSetInteger(0,"posição - 1.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 1.5",OBJPROP_COLOR,clrRed);

   ObjectSetInteger(0,"posição - 1.5",OBJPROP_WIDTH,2);

 

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 2",OBJ_HLINE,0,0,diario[0].close - 2292*_Point);

   ObjectSetInteger(0,"posição - 2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 2",OBJPROP_COLOR,clrBrown);

   ObjectSetInteger(0,"posição - 2",OBJPROP_WIDTH,2);

   

    CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 2.5",OBJ_HLINE,0,0,diario[0].close - 2865*_Point);

   ObjectSetInteger(0,"posição - 2.5",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 2.5",OBJPROP_COLOR,clrBisque);

   ObjectSetInteger(0,"posição - 2.5",OBJPROP_WIDTH,2);

   

   CopyRates(_Symbol,PERIOD_CURRENT,0,4,diario);

   ObjectCreate(0,"posição - 3",OBJ_HLINE,0,0,diario[0].close - 3438*_Point);

   ObjectSetInteger(0,"posição - 3",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"posição - 3",OBJPROP_COLOR,clrBrown);

   ObjectSetInteger(0,"posição - 3",OBJPROP_WIDTH,2);

 

 

//--- return value of prev_calculated for next call

   return(rates_total);

  }

vamos comecar,

1) voce declarou 7 buffers e nenhum plot (dado de saida do indicador).

2) Como nao definiu nenhum plot, tambem nao definiu que os buffers eram para ser linhas.

3) Nao tendo definido nenhum plot, voce simplesmente ignorou os buffers e optou por fazer os desenhos como objetos graficos como se tu tivesse fazendo um script.

Se quiser 7 plots de linhas horizontais seu codigo nao pode utilizar ObjectCreate, voce tem que enviar o dado ali para o buffer que possivelmente fara o desenho.

Recomendaria comecar entedendo o que acontece aqui: https://www.mql5.com/pt/docs/customind/indicators_examples/draw_line

E depois revisitar seu codigo para adapta-lo.

Documentação sobre MQL5: Indicadores Customizados / Estilos de Indicador em Exemplos / DRAW_LINE
Documentação sobre MQL5: Indicadores Customizados / Estilos de Indicador em Exemplos / DRAW_LINE
  • www.mql5.com
DRAW_LINE - Estilos de Indicador em Exemplos - Indicadores Customizados - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
//+------------------------------------------------------------------+
//|                                                       Máxima.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 7

#property indicator_plots   7



obrigado pelas informações...

eu tinha visto   https://www.mql5.com/pt/docs/customind/indicators_examples/draw_line, mas nao consegui entender que tipo de conta eu precisaria fazer para que a linha ficasse reta, pois essa linha vai fazendo medias nos preços...

quando eu copiei deve ter dado algum erro pois eu coloquei os plots...

sim eu nao achei um jeito de vincular os buffers com as linhas isso eu tinha percebido por isso pedi ajuda...

to na luta ainda esse ta complicado...


Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
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
 
saulocosta83 #:
//+------------------------------------------------------------------+
//|                                                       Máxima.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 7

#property indicator_plots   7



obrigado pelas informações...

eu tinha visto   https://www.mql5.com/pt/docs/customind/indicators_examples/draw_line, mas nao consegui entender que tipo de conta eu precisaria fazer para que a linha ficasse reta, pois essa linha vai fazendo medias nos preços...

quando eu copiei deve ter dado algum erro pois eu coloquei os plots...

sim eu nao achei um jeito de vincular os buffers com as linhas isso eu tinha percebido por isso pedi ajuda...

to na luta ainda esse ta complicado...

Se você não tiver a base da linguagem e como ela funciona, serão milhares de cabeçadas... Comece pequeno e com fundamentação da Linguagem, principalmente como é o Paradigma que o MQL5 usa, pois é uma confusão...

Sempre poste Código usando o ícone

E, você está usando uma abordagem no OnTick() de criar indiscriminadamente objetos que já estão criados...

Sinceramente, estude TODA a linguagem antes de se aventurar...

Se você tiver pressa, contrate alguém...

Se estiver realmente a fim de aprender MQL5, comece pequeno e leia atentamente a documentação... Qualquer código errado ou mal feito pode colocar de joelhos o MT5...

Não quero tirar teu estímulo de aprender, mas a sua abordagem não tem processo e etapas de aprendizado... MQL5 é muito mala de se aprender... se você não aprender aos poucos, você só vai dar cabeçadas...

Exemplo, alguns tipos de Linhas desenhadas no gráfico não são "pintadas" durante o backteste... portanto seu robô ficará cego se tentar lê-las...

E por aí vai...

Baby Steps...