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

 
Vitaly Muzichenko #:

Não consigo descobrir como resolver o problema

Preciso de uma tabela de carrapatos, ou seja, um carrapato veio - deslocar o buffer por um e sacar

Precisamos tirar 60 últimos carrapatos, ou seja, 60 barras.

---

Deve ser feito como é implementado na janela "carrapatos".


Para resolver este problema, precisamos de outra matriz. Pode ser de um comprimento fixo, por exemplo, 60. Deve ser preenchido com carrapatos, cada vez que os dados são trocados por 1 com a ajuda do laço. Após cada tick ser escrito, esta matriz deve ser copiada para a matriz tampão, e seus dados serão exibidos no gráfico.

 
Valeriy Yastremskiy #:

Não são barras, é uma linha.

O código desenha as barras em uma nova janela. Isso pode ajudar.

Eu não consegui tirar nada disso. Talvez eu esteja vendo do lado errado?


Mihail Matkovskij #:

Você precisa de mais um conjunto para resolver este problema. Pode ser de um comprimento fixo, por exemplo, 60. Deve ser preenchido com carrapatos, cada vez que os dados são trocados por 1 com a ajuda de um laço. Após cada tick ser escrito, esta matriz deve ser copiada para a matriz de Buffer e seus dados serão exibidos no gráfico.

Não consigo descobrir como fazer o turno.

Se você não se importa, mostre-me o código

 
Vitaly Muzichenko #:

Eu não consegui tirar nada disso. Talvez eu esteja vendo do lado errado.


Não consigo descobrir como fazer uma mudança.

Se você não se importa, poderia me mostrar o código

A[0]=Licite;

for(i=0;i<60;i++){A[i+1]=A[i]}

 
Valeriy Yastremskiy #:

A[0]=Licite;

for(i=0;i<60;i++){A[i+1]=A[i]}

Eu fiz isso, funciona.

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[])
{
  if(prev_calculated==0) {
    ArrayInitialize(Buffer1,EMPTY_VALUE);
  }
  double b=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  Buffer1[0]=b;
  for(int j=10; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
  }
  return(rates_total);
}

---

Algo me diz que eu posso passar sem o laço.

É assim?

 
Vitaly Muzichenko #:

Eu fiz isso, funciona.

---

Algo me diz que você pode passar sem o ciclo.

Isso é verdade?

Em séries temporais, este loop está escondido. não faz diferença de qual lado se mover. faz mais sentido para mim a partir do 0. Eu não vi nenhuma função de turno na MKL. É um trabalho de índice. É o primeiro a entrar, o último a sair. Faz em píton. Parece não existir em MCL.

 

O que está errado?

Começa a funcionar bem, mas em cada novo bar há uma compensação e fora de alcance.

Como evitá-lo?

---

P.S. Eu acho que é isso, está funcionando bem, eu acrescentei

  if(rates_total-prev_calculated==1) {
    Buffer1[H+1]=EMPTY_VALUE;
  }
 
Vitaly Muzichenko #:

O que está errado?

Começa a funcionar bem, mas em cada novo bar há uma compensação e fora de alcance.

Como evitá-lo?

---

P.S. Parece funcionar bem, acrescentou

No lado menor do índice, verifique se há menos de zero, no lado maior, se há mais do que a dimensionalidade da matriz. O zeramento da matriz ou último valor não é um pouco lógico em cada tic tac.

 
Valeriy Yastremskiy #:

no lado menor da verificação do índice para menos de zero, no lado maior, para mais do que a dimensão da matriz. Zerar a matriz ou o último valor não é lógico.

Array para toda a história disponível, eu não preciso disso.

Preciso literalmente de 50-100 barras.

Assim


 

Boa tarde .

Estou exibindo o valor do fractal diário na forma de seu valor ou de uma linha vertical. A linha não é exibida e o valor é 0.

Aqui está um pedaço de código

 double FractalDayUpper = iFractals(Symbol(), PERIOD_D1, MODE_UPPER, 0);
   ObjectCreate("signal00",OBJ_LABEL,0,0,0,0,0);
   ObjectSet("signal00",OBJPROP_XDISTANCE,600);
   ObjectSet("signal00",OBJPROP_YDISTANCE,100);
   ObjectSetText("signal00",DoubleToString(FractalDayUpper,5),18,"Times New Roman", clrRed);


Por favor, diga-me o que está errado.

 
EVGENII SHELIPOV #:

Boa tarde .

Estou exibindo o valor do fractal diário na forma de seu valor ou de uma linha vertical. A linha não é exibida e o valor é 0.

Aqui está um pedaço de código


Por favor, diga-me o que está errado.

Porque o valor é 0. O fractal é formado após n candelabros.

Razão: