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

 
psyman:

Eu li sua correspondência decorrente de meu tópico, é tudo divertido :-) mas e a pergunta que causou todo esse burburinho?

Declarar um array viaSetIndexBuffer(1, tmp1) não me dá nada. É claro que posso aumentar o tamanho da matriz no mesmo loop, mas quero saber de uma maneira mais simples e eficiente.

Mostre-me o código na íntegra - o que você fez lá, o que você queria e o que você tem.

 

Eu quero estar atento à volatilidade. Pelo menos de forma aberta para começar, o cálculo da média durante um período é feito usando SMAs.


//+------------------------------------------------------------------+
//|                                                        _null.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot OC
#property indicator_label1  "O-C"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrSteelBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         ip1Buf[];

input int ip1=100;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  
string s_name1;

s_name1="O-C (" + IntegerToString(ip1) + ")";

IndicatorShortName(s_name1);
SetIndexLabel(0, s_name1);


//--- indicator buffers mapping
   SetIndexBuffer(0,ip1Buf);
   
//---
   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 i;
double tmp1[];

SetIndexBuffer(1, tmp1);


      Print("rates_total = ",rates_total);
      for(i=1; i<rates_total-1; i++)
      {
      tmp1[i]=close[i];      
      ip1Buf[i]=iMA(NULL,0,100,0,0,tmp1[i],0);
      
      }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
psyman:

Eu quero estar atento à volatilidade. Pelo menos de forma aberta, para começar, o cálculo da média ao longo de um período é feito com SMA.


SetIndexBuffer(1, tmp1) porque não no OnInit() ?

Por que nenhum IndicatorBuffers(2) ?

Por que você não o calcula de forma otimizada? Há um loop completo em cada tic-tac.

Por que iMA() e não iMAOnArray() ?

 

=Por quenão há IndicatorBuffers(2) ?


#propriedade estrita não reclama disso, provavelmente por isso não escrevi.


=PorquêiMA() e não iMAOnArray() ?


Eu não tenho conhecimentos suficientes e o livro didático não diz nada sobre isso.

A falta de conhecimento do sistema é uma séria limitação.


=Laço completoem cada carrapato.


Eu não entendo nada sobre isso, por favor explique por que ou me dê um link para onde é feito.

Tenho um TF mínimo de uma hora.

 
=На cada carrapato é um ciclo completo.


Não entendo nada disso, por favor explique ou me dê um link para onde é feito.

Eu tenho um TF mínimo de uma hora.

A cada chamada para a OnCalculate você tem o loop for whizzing através dos dados de 1 a tarifas_total, ou seja, fazendo o mesmo trabalho. Isto, é claro, é uma coisa ruim.

 
psyman:

=Por quenão há IndicatorBuffers(2) ?


#propriedade estrita não reclama disso, provavelmente por isso não escrevi.


=PorquêiMA() e não iMAOnArray() ?


Eu não tenho conhecimentos suficientes e o livro didático não diz nada sobre isso.

A falta de conhecimento do sistema é uma séria limitação.


=Laço completoem cada carrapato.


Não entendo nada sobre isso, por favor me explique ou me dê um link para onde é feito.

Tenho um TF mínimo de uma hora.

Sabe, eu anexei um modelo de indicador bem neste fio - em algum lugar no meio dele - você pode encontrá-lo e fazer o que quiser com ele. Procure-o. Também escrevi que muitas vezes as pessoas estão interessadas no que está acontecendo, então decidi fazer um modelo de indicador e colocá-lo neste tópico.

 

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos

Andrei Novichkov, 2018.10.17 22:06

A cada chamada para a OnCalculate você tem para loop para escanear dados de 1 a tarifas_total, ou seja, fazer o mesmo trabalho. Isto é certamente uma coisa ruim.


Se você diz que é ruim, diga-me como fazê-lo bem. Você gostaria de mover os cálculos para o OnInit?

 

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta para iniciantes em MQL4, ajuda e discussão sobre algoritmos e códigos

Artyom Trishkin, 2018.10.17 22:10

Sabe, eu diretamente neste ramo - em algum lugar no meio dele, anexei um modelo indicador - você pode encontrá-lo, e fazer diretamente dele o que quiser. Procure-o. Escrevi que muitas pessoas estão interessadas em como funciona e decidi fazer um modelo indicador e colocá-lo neste tópico.


Procurando as palavras "modelo indicador" e seu nome não encontra nada, e escreveu aqui já no volume Guerra e Paz.

Qualquer combinação de palavras do correio vem à mente.

 
Como criar uma série de instâncias de classe?
Made ClassName* className[], então ArrayResize sobre ele, mas não dá acesso a métodos com ponteiro inválido
 
Roman Sharanov:
Como criar uma série de instâncias de classe?
Made ClassName* className[], então ArrayResize sobre ele, mas não dá acesso a métodos com ponteiro inválido

Há um exemplo noCArrayObj