[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 396

 
7777877:

Sim, obrigado ajudou... Mas eu quero entender porque ObjectSet(object_name,OBJPROP_TIMEFRAMES,PERIOD_H1) não funciona (como deveria)? Há falhas no próprio idioma?

De fato, tanto PERÍODO_H1 quanto OBJ_PERIOD_H1 são apenas uma substituição alfa de algum valor numérico.

OBJ_PERIOD_H1 = 0x0010 (para construção atual) = 0001 0000 (binário)

PERÍODO_H1 = 60 (para esta construção) = 0011 1100 (binário)


Como é fácil de substituir, você coloca acidentalmente 4 prazos em vez de um - H4, H1, M30 e M15


E ao invés de chamar ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x0010) (o que você queria fazer) você chamou

ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x3C).

 
datetime last_time;   // глобальная переменная

...

int start()
{
   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(close[1]>open[1]) 
xBost_b=xBost_b+((close[1]-low[1])*10000);
   }

o que é o Tempo[0] e como ele afeta 1 tempo mais ?! apenas um pouco confuso...

 
DanLett:

o que é o Tempo[0] e como ele afeta 1 tempo mais ?! apenas um pouco confuso...

O tempo[0] é o tempo de abertura da barra mais recente (atual). Assim que um novo bar chega, ele muda.

Digite o tempo no MetaEditor e pressione F1 para obter detalhes

 
ilunga:

O tempo[0] é o tempo de abertura da barra mais recente (atual). Assim que um novo bar chega, ele muda.

Digite o tempo no MetaEditor e pressione F1 para obter detalhes

Leia-o agora! muito obrigado!
 
DanLett:
Vou lê-lo agora! Muito obrigado!

Então não se esqueça de olhar para o iTime()
 
   datetime last_time;   // глобальная переменная
  int xBost_b;
  int xBost_s;
double hi=High[1];
double op=Open[1];
double cl=Close[1];
double lo=Low[1];
int Sum_xb;
int Sum_xs;
 
 if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(Close[1]>Open[1]) 
xBost_b=(hi-cl)*10000;
Sum_xb=Sum_xb+xBost_b;<---------не плюсует,выдает такое же число как и xBost

      if(Close[1]<Open[1])
 xBost_s=(cl-lo)*10000; 
Sum_xs=Sum_xs+xBost_s;    
Comment("\n kolvo_b=",xBost_b,"\n Sum_xb=",Sum_xb,"\n kolvo_s=",xBost_s,"\n Sum_xs=",Sum_xs);

   }
como você faz para que isso lhe dê sempre uma vantagem?
 
DanLett:
como faço para que se somem todas as vezes????
Asvariáveis globais devem estar fora de todas as funções. Envie as somas para lá também. ou declare estas variáveis como estáticas
 
DanLett:
como faço para acrescentar sempre????
Tire o último_tempo do início() e declare-o estático
 
Como posso usar barras sintéticas(https://www.mql5.com/ru/articles/1353) para fazer a função dentro da EA funcionar somente com preços abertos? Em barras normais foi feito pelo tempo aberto da barra atual, assim se (Time[0] == prevtime4) voltar;
prevtime4=Time[0]; mas as barras sintéticas estão sem tempo...em teoria você pode escrever aqui se o lance é o preço de abertura, mas eu não sei como fazê-lo.
 

Como posso encontrar o máximo de caudas de castiçais para comprar?

Ou seja, o candelabro atual é construído, o candelabro de compra anterior, determinamos a cauda do candelabro de compra, depois continuamos a construir o gráfico, o candelabro de compra apareceu novamente e novamente calculamos a cauda,

agora como encontrar o máximo desses rabos e escrevê-los na variável????

int Sum_xb;
int Sum_xs;
datetime last_time;   // глобальная переменная
int Kol_vo_b;
int Kol_vo_s;
int Sr_zn_b;
int Sr_zn_s;
extern int Num_kolvo_b=10;
extern int Num_kolvo_s=10;
int Zn_b;
int Max_b;

int start()
  {
   
  int xBost_b;
  int xBost_s;
double hi=High[1];
double op=Open[1];
double cl=Close[1];
double lo=Low[1];


   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(Close[1]>Open[1])
      { 
xBost_b=(hi-cl)*10000;
Kol_vo_b++;
}
      if(Close[1]<Open[1])
      {
 xBost_s=(cl-lo)*10000; 
 Kol_vo_s++;
 
   }
   
if (Kol_vo_b==Num_kolvo_b)
{
Kol_vo_b=0;
Sum_xb=0;
}
if (Kol_vo_s==Num_kolvo_s)
{
Kol_vo_s=0;
Sum_xs=0;
}  
 
Sum_xb=Sum_xb+xBost_b;
Sr_zn_b=Sum_xb/Kol_vo_b;

Sum_xs=Sum_xs+xBost_s;
Sr_zn_s=Sum_xs/Kol_vo_s;

Zn_b=xBost_b;
if(xBost_b>Zn_b)
Max_b=xBost_b;
}




Comment("\n xBost_b=",xBost_b,"\n Sum_xb=",Sum_xb,"\n Kol_vo_b=",Kol_vo_b,"\n Sr_zn_b=",Sr_zn_b,
"\n\n\n\n kolvo_s=",xBost_s,"\n Sum_xs=",Sum_xs,"\n Kol_vo_s=",Kol_vo_s,"\n Sr_zn_s=",Sr_zn_s,"\n\n\n\n Max_b=",Max_b);

return(0);
  }

como escrever esta parte do código corretamente para encontrar o máximo!

Zn_b=xBost_b;
if(xBost_b>Zn_b)
Max_b=xBost_b;