[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 753

 
Morzh09:

Por favor, informe qual é a captura:

1) Eu preencho uma matriz bidimensional com o tempo de formação do extremo ZigZag e o próprio valor do extremo.

2) Preenchendo o segundo conjunto com um ou dois, dependendo se o extremo correspondente a um determinado elemento é um máximo ou mínimo local.

3) Eu produzo os resultados através do Alerta.

mas em um lugar onde 1 ou 2 zeros devem ser impressos são sempre impressos.

Qual é o senão?!?

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+


string TimeSave1[100][2], TimeSave2[100][2];

double A[], B[];

double Number_of_extremum[];

extern string Currency = "EURUSD";


+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//----

int k;

k=0;

double date;

int status;

for(int shift = 0; shift <= Bars-1; shift++)

{

date = iCustom(NULL, 0, "ZigZag", 12, 5, 3, 0, shift);

//----------------------------------------------------

if(date > 0)

{

TimeSave1[k][0]=TimeToStr(Time[shift]);

TimeSave1[k][1]=date;

k++;

}

}

//====================================================

for (int u=1;u<=k;u++)

{

if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1]))

{

Number_of_extremum[u]=1;// значит под номером u - нашли min

}

else

if (StrToDouble(TimeSave1[u][1])>=StrToDouble(TimeSave1[u-1][1]))

{

Number_of_extremum[u]=2;// значит под номером u - нашли max

}

}

//====================================================

for (int j=1;j<10;j++)

{

Alert("время== ",TimeSave1[j][0], " значение== ", TimeSave1[j][1], " max/min== ", Number_of_extremum[j]);

}

//----

return(0);

}

//+------------------------------------------------------------------+

E mais um esclarecimento:

como comparar datas e horas em mql (por exemplo, preciso determinar qual vértice de ZZ foi formado mais cedo - para isso preciso comparar o tempo de sua formação...)

A data é essencialmente intrigante, ela contém o número de segundos, começando em 1970 e terminando com o tempo do bar. Eu procuro mais/menos - funciona...
Não olhei para o resto - só cheguei aqui...
 

Amigos, uma pergunta:


Enfrentou este problema:

o indicador emite algumas informações via Alert.

Mas, gradualmente, o campo de saída Alerta acumula demasiada "porcaria".

Quando eu iniciarei o indicador novamente, será possível apagar todos os registros antigos em Alerta?


Obrigado de antemão.

P.S.

Por favor, comente sobre meu posto mais cedo (por que valores nulos são exibidos ao invés de 1 e 2)

 

Não o encontrei no fórum...

Pergunta - é possível alterar o comentário sobre a ordem? Bem, quando a operação OrderSend() coloco no comentário algum valor de "OrderNotModify", e fazendo outras ações com esta ordem, por exemplo fechamento parcial, mudo OrderComment para "OrderIsModify"... ou não?

 
Morzh09:

Você pode me dizer qual é o senão:

A matriz é preenchida a partir do 0, mas aqui o 0º índice é pulado, e nós preenchemos a partir do 1º, e

for (int u=1;u<=k;u++) // k при старте =0, u <= k не будет, считать счетчику незачем

{

if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1])) // выражение при старте всегда [1][1]<=[0][1]

{

Number_of_extremum[u]=1;// значит под номером u - нашли min

}

else

if (StrToDouble(TimeSave1[u][1])>=StrToDouble(TimeSave1[u-1][1])) // значит, всегда срабатывает [1][1]>=[0][1]

{

Number_of_extremum[u]=2;// значит под номером u - нашли max

}

}
 
Abzasc:

A matriz é preenchida a partir do 0, mas aqui o 0º índice é pulado e preenchido a partir do 1º, e

Não entendo bem seu comentário.

1) k - no início - não é zero! k = o número de vértices ZigZag que detectamos a uma certa profundidade da história!

2) "assim, sempre funciona [1][1]>=[0][1]" - por que sempre funciona? se o elemento anterior da matriz TimeSave1 > próximo elemento, não funcionará.

repita, por favor, o que você quis dizer.

 
Morzh09:

não entendeu bem seu comentário.

1) k - no início - não é igual a zero! k = o número de vértices ZigZag que detectamos a uma certa profundidade da história!

2) "assim, sempre funciona [1][1]>=[0][1]" - por que sempre funciona? se o elemento anterior da matriz TimeSave1 > próximo elemento, não funcionará.

Por favor, diga-me novamente o que você quer dizer.

Eu entendo k. Isto é o que eu não entendo.

for (int u=1;u<=k;u++) // на первом шаге счетчик присваивает u = 1

{

if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1])) // здесь, значит[u=1][1]<=[(u=1)-1][1]
// т. е. 1<=0, вы же от 1 еще 1 отнимаете

{

na parte certa

 
Michelangelo:

é possível alterar o comentário do pedido?

Apenas em OrderModify bilhete preço stoploss takeprofit expiração arrow_color

Parece que não.

 

então... parece que é o calor... E está afetando meu compilador também :)

veja, preciso passar por um array que registra a data de formação do max/min do ZigZ e o valor desse max/min.

Preciso entender, de fato, qual vértice de ZZ é um mínimo e qual é um máximo.

Para fazer isso, comparo o próximo ponto mais alto de ZZ com o anterior.

Se o topo consecutivo for maior, então é um topo.

se for menor, é um cocho.

Dependendo se é um vértice ou um canal, adicionamos 1 ou 2 a um elemento de outro conjunto, respectivamente.

Estou curioso a respeito disto, ONDE pode haver um erro!!!!

Arquivos anexados:
 
Eu irei aqui com arcos - mesmo assim quebrei minha calculadora. :)
Quero ser capaz de calcular os níveis de fiba com base em dois valores conhecidos:
O nível zero de fibra corresponde a 1.2807, o nível 23,6 corresponde a 1.2838.

Precisamos encontrar os outros 38,2, 50,0, 61,5, 100,0 níveis e a que preços eles correspondem.

Eu nem consegui encontrar nenhuma conexão entre 1.2807 e 1.2838 para entender os princípios de
de encontrar todos os outros valores.

Por favor, digam-me, alguém ... :)

 
IgorM:
Alguém encontrou o indicador para ver o tempo de abertura da barra em um TF baixo, não quanto tempo é interessante, e para desenhar as marcas no gráfico onde a barra começou e onde ela terminou
#property indicator_chart_window
#property link      "IgorM"

extern int num    = 10;
extern color line = White;
int init()
{return(0);
}
  
void clear(){
   for(int i=ObjectsTotal()-1; i>=0;i--) {
      string name = ObjectName(i);
      if (StringFind(name,"timeH1_") !=-1) ObjectDelete(name);
    }
}

int deinit(){
clear();
return(0);
}

int start()
{   
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)   return(-1);
   clear();
   for (int i=0;i<=num;i++){ 
      string name = "timeH1_"+TimeToStr(Time[i],TIME_DATE|TIME_MINUTES);
      ObjectCreate(name,OBJ_VLINE,0,iTime(NULL,PERIOD_H1,i),0);
      ObjectSet(name,OBJPROP_COLOR,line);
      ObjectSet(name,OBJPROP_STYLE,STYLE_DOT);
    }
return(0);
}

Acho que sim. O código não está otimizado, mas ele desenha o que eu gostaria de ver.