Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 338

 

Alguém pode informar por que meu indicador é exibido nos testes e fica na janela do indicador após a conclusão dos testes, mas se eu o chamar através do iCustom em um Expert Advisor, o indicador não é exibido?

//+------------------------------------------------------------------+
//|                                             Tiscks_Window_49.mq4 |
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_buffers 1
#property  indicator_color1 clrLawnGreen

double ExtMapBuffer1[];
int Draw_Bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorShortName("Ask");
   IndicatorDigits(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0,"Ask");
//---
   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[])
  {
//---
   ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);
   for(int i=Bars-2; i>=0; i --)
     {
      ExtMapBuffer1[i+1]=ExtMapBuffer1[i];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


Talvez eu não o chame corretamente no iCustom?

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double sep_window=iCustom(Symbol(),PERIOD_CURRENT,"Tiscks_Window_49",0,0);
   Print(" sep_window= ",sep_window);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

Alguém pode informar por que meu indicador é exibido nos testes e fica na janela do indicador após a conclusão dos testes, mas se eu o chamar através do iCustom em um Expert Advisor, o indicador não é exibido?
Talvez eu não o chame corretamente no iCustom?

Você acertou. Experimente-o com outros indicadores - será o mesmo.

 
Nauris Zukas:

Alguém pode me dizer por que meu indicador é mostrado nos testes e fica na janela do indicador após o término dos testes, mas se eu o chamar através do iCustom no Expert Advisor, o indicador não é mostrado?


Talvez eu não o chame corretamente no iCustom?

ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);

tente colocar de forma simples =Ask;
ou, para verificar o fechamento[0]

e aqui, por que você precisa mover toda a história? as primeiras 100-300 barras são suficientes

for(int i=Bars-2; i>=0; i --)
 
LRA:

Está tudo bem. Tente com outros indicadores - será o mesmo...

RSI testado, tudo funciona. Há uma nuance em algum lugar, ainda não sei onde.


 
Taras Slobodyanik:

tente apenas =Ask;
ou para verificar o fechamento[0]

e aqui, por que você gostaria de mudar toda a história? As primeiras 100-300 barras são suficientes.

Mudou-o, mas também não ajuda.

 
Nauris Zukas:

Alguém pode informar por que meu indicador é exibido nos testes e fica na janela do indicador após a conclusão dos testes, mas se eu o chamar através do iCustom em um Expert Advisor, o indicador não é exibido?


Talvez eu não o chame corretamente no iCustom?

Talvez seja porque o indicador é escrito dessa forma. Qual é a probabilidade de simplesmente não ter tempo suficiente para recalcular todas as barras ao ser chamado do Expert Advisor?

Tente recalcular todas as barras apenas uma vez, e depois apenas uma nova chamada do Expert Advisor.
 
Alexey Viktorov:

Qual é a probabilidade de não ter tempo de recalcular todas as barras quando o chamo do Expert Advisor?

Imprimo em Expert Advisor e isso mostra que os preços estão lá, o que significa que as barras foram recalculadas.

Alexey Viktorov:
Tente recalcular todas as barras apenas uma vez e depois apenas uma nova chamada da EA.

Ainda não testei esta variante, ainda estou pensando em como fazê-lo.

 

Boa tarde, dando meus primeiros passos, li o tutorial, etc., posso ter a pergunta errada, mas ainda.....

Se eu quiser obter um arquivo de carrapatos para os últimos dois anos, posso precisar dele por um período de tempo maior para analisá-lo em uma aplicação de terceiros. Se não estou enganado, mas as barras contêm apenas os dados atuais do gráfico, obrigado.

 
ijonhson:

Boa tarde, dando meus primeiros passos, li o tutorial, etc., posso ter a pergunta errada, mas ainda.....

Se eu quiser obter um arquivo de carrapatos para os últimos dois anos, posso precisar dele por um período de tempo maior para analisá-lo em uma aplicação de terceiros. Se não estou enganado, mas as barras contêm apenas os dados atuais do gráfico, obrigado.

Se você não souber como usar esses registros, não tente sobregravá-los com os reais. O Google o ajudará.

 

Olá Artiom, você poderia me dizer como escrever um EA para que ele não abra pedidos até que o preço tenha passado um certo nível e depois continue a abrir pedidos mesmo depois que o preço tenha passado de novo acima do nível? Cumprimentos a Andrei.