Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 128

 

Olá! estou comparando os preços de abertura de 3 barras (3,2,1). Como posso não contar as barras onde os preços são iguais?

for( x=<3;x--)
{
 if( Open[x]==Open[x] )
  {
    x+1;
   }
  if( Open[x]<Open[x] )
   {
   ,,,
   }
 
skyjet:

Olá! estou comparando os preços de abertura de 3 barras (3,2,1). Como posso não contar as barras onde os preços são iguais?

for (int x=1; x<3; x++)
{
 if(Open[x]==Open[x+1]) continue;
 if(Open[x]<Open[x+1])
   {
   //--- action
   }
}
 
Olá, me ajude. Eu estou jogando no H1, tenho um indicador H4. Ele se mostra corretamente. Mas, se eu o executar no testador, com visualização, por exemplo, no início do ano, ele mostra as informações atuais que estão agora no mercado. Em geral, não funciona no Testador de Estratégia. Como fazer funcionar. Ou dar um link para o tópico onde ele é resolvido.
 
artmedia70:
Como ele está vazio? O resultado é alguma coisa, ou há zeros nas células da matriz?


Nada de nada.

Mesmo que você vá para Objetos não há absolutamente nada, exceto as setas e as linhas de tendência.

artmedia70:

Por que você está aumentando o i no corpo do laço?

e isto: i<=p, por que "ou igual a" ?


Eu cometi um erro por cansaço. Eu consertei desta maneira:

for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }

Este pedaço de código está na própria função:

//+-------------------------------------------------------------------------------------+
//| Закрытие ордеров, отсортированных по размеру лотов                                  |
//+-------------------------------------------------------------------------------------+
void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   if (p > 0)
   {
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}
 
hoz:


Não há absolutamente nada.

Mesmo que você vá para Objetos não há objetos, exceto as setas e as linhas de tendência.


Fui eu que estraguei tudo por cansaço. Eu consertei desta maneira:

Este pedaço de código está na própria função:

Antes e depois

if (p > 0)

Valor p sem impressão.

Tenho que escrever a seqüência de busca de falhas para você?

 
artmedia70:

Antes e depois.

Desimprimir o valor p.

Tenho que escrever a seqüência de erros para você?



De fato, sim. De qualquer forma, aqui está a situação:

void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   pr("___p = " + p);   // Значение кол-ва позиций до if..
   
   if (p > 0)
   {
      pr("p = " + p);   // Значение кол-ва позиций после if..
      
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}

Já o fiz desta maneira, mas também não sai nada nesta parte do gráfico. Embora em outros lugares tenha imprimido 0, quando uma posição estava aberta e fechada de uma vez por take. Ou seja, nesta área a kosakova funciona como se...

Aqui está uma captura de tela:

Devo imprimir todos esses valores agora?

p++;
ArrayResize(a, p);
a[p-1][0] = OrderLots();
a[p-1][1] = OrderTicket();

Parece que há muito mais a ser feito. Afinal de contas, tudo é claro e geralmente escrito ali.

 
hoz:


Na verdade, é. De qualquer forma, aqui está a situação:

Eu o corri desta maneira, mas também não sai nada nesta parte do gráfico. Embora em outros lugares tenha imprimido 0, quando uma posição estava aberta e fechada de uma vez na tomada. Ou seja, neste setor, a kosakova funciona como se...

Aqui está uma captura de tela:

Devo imprimir todos esses valores agora?

Parece que há muito mais a ser feito. Afinal de contas, está tudo claro e geralmente escrito ali.

Você entende e vê o que está contido em sua matriz imediatamente após ela ser "preenchida" com dados de garantia? Não. Você não sabe, você só assume. SPRINT o conteúdo de todas as células do array, não com seu pr(), mas com o padrão Print() e tente olhar no log do testador e ver o que você tem no array, em cada célula, logo após o seu preenchimento. Quando você souber com certeza que o conteúdo da matriz corresponde a suas idéias sobre seu conteúdo, então imprima-o com seu pr(). Se não lhe der os mesmos resultados - é seu pr(), se os dados corresponderem, então procure por um erro na próxima etapa.
 
Há erros relacionados ao lote no diário de bordo(OrderSend error 4051). Resolverá esta questão. Talvez isso ajude. Depois veremos o que acontece.
 
hoz:
Há erros relacionados ao lote no diário de bordo (OrderSend error 4051). Resolverá esta questão. Talvez isso ajude. E depois veremos.

Olhe os tanques, reinicie, talvez ajude... :-)

P.S. Estou sendo gentil aqui.

 
Esta é uma matriz unidimensional cujo tamanho pode variar.
Como fazer loop através de todas as combinações possíveis de elementos de matriz uns com os outros?
A ordem dos elementos não importa, ou seja, 123==213==321...

Aqui está um exemplo para uma matriz com 4 elementos:
[4] <=> { 1 2 3 4 }

1, 12, 13, 14, 123, 124, 134, 1234, 
2, 23, 24, 234, 
3, 34,
4
Razão: