Vou escrever o indicador gratuitamente - página 19

 
Tango_X:

Eu o implementei com OnTimer() e nada saiu dele. Infelizmente o evento onTimer() não calcula o indicador e o atraso é salvo, talvez uma declaração alta e eu tenha feito algo errado, por favor, corrija. Obrigado!

O que você tem feito não é uma implementação através do OnTimer(). Você só recebe valores lá (toda a história, e cada segundo, além disso, sem verificação). De qualquer forma, não creio que você possa implementá-lo sozinho. Aguardar a resposta do autor da filial:)
 
Alexey Kozitsyn:
O que você tem feito não é uma implementação através do OnTimer(). Você só recebe valores lá (toda a história, e a cada segundo, sem nenhum controle). Em geral, é improvável que você seja capaz de implementá-lo sozinho. Aguardar resposta do autor da filial:)
Sim, obrigado! já entrou em contato com o autor da filial, onde ele prometeu ajudar! Estou esperando por uma resposta)))
 
Tango_X:

Eu o implementei com OnTimer() e nada saiu dele. Infelizmente o evento onTimer() não calcula o indicador e o atraso é salvo, talvez uma declaração alta e eu tenha feito algo errado, por favor, corrija. Obrigado!

//+------------------------------------------------------------------+
//|                                              TestCopyBuffer3.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1  "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
bool               AsSeries=true;
int                period=15;
input ENUM_TIMEFRAMES    TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD     smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int                shift=0;
//--- indicator buffers
double                   MABuffer[];
int                      ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
   Print("Параметр AsSeries = ",AsSeries);
   Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//--- set short indicator name
   IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
   ArraySetAsSeries(MABuffer,AsSeries);
   Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//---
   ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
   EventSetTimer(1);
   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[])
  {
//--- check if all data calculated
   if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
   //int to_copy;
   if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      //--- last value is always copied
      to_copy++;
     }
//--- try to copy
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
   Print("Таймер");
  }
//+------------------------------------------------------------------+
Acho que o que quero dizer étransferir tudo naOnCalculate para aOnTimer
 
Yurij Izyumov:
Presumo que isso significamover tudo naOnCalculate para aOnTimer
Se funciona, por que não!
 
Uma solução foi sugerida aqui, mas como sou um programador novato isto é bastante difícil de implementar, e é por isso que eu pedi ajuda neste tópico.
 
Yurij Izyumov:

A fim de reescrevê-lo, todos os indicadores a serem incluídos também devem estar abaixo de mql5

E quanto à reescrita? O código é muito complicado????
 
Boa tarde. Estou no indicador Delta_RSI, ele continua desenhando (ver captura de tela) histo em ambas as direções ao mesmo tempo (procurar por erro). E é possível colorir o sinal de zero de forma diferente para acima/abaixo do zero. Você será capaz de ver(corrigir)? Obrigado.
 
Igor371:
Boa tarde. Estou no indicador Delta_RSI, tenho-o constantemente desenhando (ver captura de tela) histo em ambos os sentidos ao mesmo tempo (procurar por erro). E é possível colorir a cor sem sinal para acima/abaixo do zero. Você será capaz de ver(corrigir)? Obrigado.

descreva o que você faz para quebrá-lo ))))

gráfico, TF, seqüência, etc.

 
Yurij Izyumov:

descreva o que você faz para quebrá-lo ))))

gráfico, TF, seqüência, etc.

Não fazer realmente nada. Eu tenho grandes períodos de 1000/250 na M1, por exemplo. Em um determinado momento, a barganha se torna de zero para ambos os lados ao mesmo tempo. Não sei exatamente em que momento, mas vou dar uma olhada mais de perto. Eu não tenho problemas com isso no código, nada a corrigir?
 
Boa tarde. Parece que não consigo pegar quando o indicador quebra. Está ali parado e tudo está bem, mas depois se quebra. Não tenho visto corretores fazendo nenhuma manipulação, porque muitas vezes tenho a mesma coisa com as setas, (mas eu me limitei ao desenho de índices, e aqui RSI) vou colocar uma coruja para ficar de olho com as capturas de tela.
Arquivos anexados:
GBPUSD.mM1.png  32 kb