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

 
Boa noite .
 if(count==0)comment+="No symbols for trading!";
      Comment(comment);
      MqlTick tick;
      tick.ask=SymbolInfoDouble(structPairs.name,SYMBOL_ASK);
      tick.bid=SymbolInfoDouble(structPairs.name,SYMBOL_BID);
      tick.time=TimeCurrent();
      Trade(false,structPairs, tick, Orders, inputs);
O que diz este pedaço de código? Quando isso aparece? Todos os pares da lista estão lá e todo o histórico está carregado.
 
Darirunu:
Boa noite. O que diz este pedaço de código? Quando isso aparece? Todos os pares estão na lista e todo o histórico está carregado.

Senha do investidor?

 
Darirunu:
Boa noite. O que diz este pedaço de código? Quando isso aparece? Todos os pares da lista estão lá e todo o histórico está carregado.
Se algum contador for 0 (acho que é o resultado de uma corrida anterior), então uma linha é adicionada ao comentário
No symbols for trading!

o resto são negócios como sempre...

 
Taras Slobodyanik:

Obrigado

Verificação de que não há nenhum objeto na segunda barra

         for(int jj=i;jj<obj_total;jj++)
           {
            nameARs=ObjectName(jj);
            if(ObjectType(nameARs)!=OBJ_RECTANGLE) continue;
            if(StringFind(nameARs,"QUADRO",0)!=-1)
              {

               time_ars=ObjectGetInteger(0,nameARs,OBJPROP_TIME);//break;

              }
           }
         //===---===
         if(time_ars!=Time[i+2])
           {
           //....
           }
Como posso verificar se não há objetos nas dez barras?
 

Indicador.

Para cada barra, calcular a soma dos tamanhos das barras em alta e a soma dos tamanhos das barras em baixa

No buffer, escreva a diferença dessas somas.

O que está errado aqui?

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum=0, down_sum=0;
   for(int i=0;i<limit;i++)
   {
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }
 
Roman Sharanov:

Indicador.

Para cada barra, calcular a soma dos tamanhos das barras em alta e a soma dos tamanhos das barras em baixa

No buffer, escreva a diferença dessas somas.

O que está errado aqui?

Transferência

double up_sum=0, down_sum=0;

dentro do primeiro ciclo - antes de anunciar o segundo ciclo.

 
Roman Sharanov:

Indicador.

Para cada barra, calcular a soma dos tamanhos das barras em alta e a soma dos tamanhos das barras em baixa

No buffer, escreva a diferença dessas somas.

O que está errado aqui?

Tente redefinir as variáveisup_sum=0, down_sum=0;

antes do segundo, loop interno.

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum, down_sum;
   for(int i=0;i<limit;i++)
   {
    up_sum=0; 
    down_sum=0;
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }

Assim

 
Alekseu Fedotov:

Tente redefiniracima_sum=0, abaixo_sum=0;

antes do segundo, loop interno.

Assim

fez isso, e sim, faz sentido, mas agora não é mais exibido de forma alguma

 
Ghabo:

Obrigado

Verificação de que não há nenhum objeto na segunda barra

Como posso verificar se não há objetos nas dez barras?

Se você souber como criar o nome exato de um objeto, então não há sentido em passar por todos os objetos do gráfico.
Basta passar por estes (supostos) nomes.

for(int i=0;i<10;i++)
   {
   if (ObjectFind(0,"QUADRO"+Time[i])<0)
      Print("Нет объекта на баре № ",IntegerToString(i));
   else
      Print("Найден oбъект на баре № ",IntegerToString(i));
   }
 
Roman Sharanov:

Eu fiz, e sim, faz sentido, mas agora não é mais exibido de forma alguma

Sim, assim também, conserte-o.

No laço interno

for(int f = 0+i; f < Period+i; f++)

Razão: