Erros, bugs, perguntas - página 32

 
Agora também tenho uma falha ... Até à sua recompilação, as últimas barras são renderizadas.
 
Interesting:

A única forma correcta de o fazer é muito simples.

Escreve-se um indicador de funcionamento a 100%, e é feito classicamente sem o parâmetro "Símbolo", ou seja, é calculado usando o símbolo e o período actuais.

Depois disso, essa calculadora BASIC é chamada em Expert Advisor (se for fornecido trabalho mecânico) ou calculadora (se quiser exibir informação no gráfico de INSTRUMENTO DE NÃO CÁLCULO).

PS

Caso contrário, se a calculadora ou uma função separada tiver de fazer um cálculo adicional, e depois ligar os resultados aos dados gráficos actuais...

Sugestão digna de consideração,

Mas claro que do ponto de vista da lógica comum é como coçar a orelha esquerda com a mão direita (mas não é para si, é para os criadores),

Porque preciso de chamar os dados de um instrumento não nativo?

Se tiver de criar indicadores personalizados e chamá-los a partir de um símbolo exigido, em geral, a conclusão é que vou comprá-los.

Mas mais uma vez, chamo um indicador pronto para EUR com dados sobre o JPY (por exemplo, não há história suficiente para o iene)

Se eu procurar o mesmo indicador e ele não contiver dados para este comprimento, o que me dirá?

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Eis uma opção exequível:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot LRma
#property indicator_label1  "LRma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
input string             symbol      ="EURJPY";
input int                MA_Period   =25;          // период MA
input int                MA_shift    =0;           // сдвиг индикатора
input ENUM_APPLIED_PRICE price       =PRICE_OPEN;  // тип цены 
//--- indicator buffers
double  LRma[],L[],S[],iPoint,iiMA;

int Lwma,Sma;// Хендлы машек
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,LRma,INDICATOR_DATA);
   Lwma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_LWMA,price);
   Sma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_SMA,price);
   iPoint=1.0/SymbolInfoDouble(symbol,SYMBOL_POINT);
   iiMA=1.0/MA_Period;
   IndicatorSetString(INDICATOR_SHORTNAME,"LRma_symbol_"+symbol);
//---
   int count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(S,true);
   ArraySetAsSeries(LRma,true);
   return(0);
  }
//+------------------------------------------------------------------+
//| 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 count=rates_total-prev_calculated;
   if(count>1)count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   if(count==0)count=1;
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   if(CopyBuffer(Lwma,0,0,count,L)!=-1)
     {
      if(CopyBuffer(Sma,0,0,count,S)!=-1)
        {
         for(int i=0;i<MathMin(ArraySize(LRma),ArraySize(L));i++)
            LRma[i]=(L[i]-S[i])*6*iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Posso acrescentar outra dor de cabeça. Se o indicador estiver num gráfico, mas for de outro, é preciso ter em conta que o número de barras pode ser diferente:

  1. Que o número de barras pode ser diferente. Penso que já foi tido em conta.
  2. Ter em conta que pode haver lacunas na história para o instrumento, e 25 barras na história para um instrumento, pode ser segunda-feira, e para outro - sexta-feira...
  3. mesmo que tenha resolvido os dois primeiros problemas, ainda há sincronização por tempo, para um instrumento já começou uma nova barra, para outro ainda não começou...
  4. o indicador funciona apenas com a chegada de um novo tick, ou seja, se estiver pendurado no gráfico com poucos ticks, a barra 0 de outro gráfico é problemática...
  5. se parar de contar as barras 0, apenas as completas, então haverá mais algumas armadilhas...
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Prival:

Posso acrescentar outra dor de cabeça. Se o indicador está num gráfico, mas mostra a partir de outro, é preciso tê-lo em conta:

  1. Que o número de barras pode ser diferente. Penso que já tomámos isto em consideração.
  2. Ter em conta que pode haver lacunas na história para o instrumento, e 25 barras na história para um instrumento, pode ser segunda-feira, e para outro - sexta-feira...
  3. mesmo que tenha resolvido os dois primeiros problemas, ainda há sincronização por tempo, para um instrumento já começou uma nova barra, para outro ainda não começou...
  4. o indicador só funciona com a chegada de um novo carrapato, ou seja, se estiver pendurado num gráfico com poucos carrapatos, será problemático para a barra 0 de outro gráfico.
  5. Se parar de contar 0 barras, apenas as completadas, então haverá mais algumas armadilhas...

Obrigado pelas amáveis palavras :o)
 

Bug. Descrição. ATS sempre no mercado (capotamento por lote duplo 0,2)

Modo de teste todas as carraças. Tudo é normal.

Modo de teste, através da abertura de preços. a mesma peça.

Por alguma razão divide-se em 2 ofícios. talvez seja apenas a forma como é exibido, mas não é correcto. não deveria ser assim.

 
Alexandr2385:

Olá, tenho um problema sério com o terminal MT5. Quando inicio o terminal, apenas a linha de preço (licitação) está em movimento, enquanto os castiçais (barras) não estão a desenhar/mudar. Por conseguinte, o preço move-se sem alterar o gráfico. Tenho uma pergunta: Como pode este problema ser resolvido? Na verdade, tudo está a funcionar bem no MT4! Tentei reinstalar o terminal, mas não ajudou! Tive um tal problema com vários corretores... Pode dizer-me o que fazer nesta situação?
Alguém dos criadores pode responder à pergunta? Ou devo perguntar noutra linha?
Arquivos anexados:
1.png  31 kb
 
Alexandr2385:
Algum dos criadores pode responder à pergunta? Ou devo perguntar noutra linha?
+1 Eu vi a mesma coisa, mas parece estar a funcionar correctamente agora, eles devem tê-la consertado
 
SHOOTER777:

+1 Eu vi a mesma coisa, mas parece estar a funcionar correctamente agora, eles devem tê-la consertado

Sim, estranhamente, mas agora desapareceu, não sei por quanto tempo...

 
Prival:

Posso acrescentar outra dor de cabeça. Se o indicador está num gráfico, mas mostra a partir de outro, é preciso tê-lo em conta:

  1. Que o número de barras pode ser diferente. Penso que já tomámos isto em consideração.
  2. Ter em conta que pode haver lacunas na história para o instrumento, e 25 barras na história para um instrumento, pode ser segunda-feira, e para outro - sexta-feira...
  3. mesmo que tenha resolvido os dois primeiros problemas, ainda há sincronização por tempo, para um instrumento já começou uma nova barra, para outro ainda não começou...
  4. o indicador só funciona com a chegada de um novo tick, ou seja, se estiver pendurado num gráfico com poucos tick, será problemático para a barra 0 de outro gráfico...
  5. Se parar de contar 0 barras, que se lixe, apenas as completas, então haverá mais algumas armadilhas...

Concordo sobre os buracos e os problemas históricos.

Com funcionamento normal e sincronização de períodos, as novas barras devem (logicamente) começar ao mesmo tempo...