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 133

 
skyjet:


Mas estou comparando 3,2 e 1 barras, então o cálculo é limitado a x >=1?

E isso significa que barras com o mesmo preço simplesmente não são consideradas, não lhes são atribuídos números?

Ao definir os parâmetros de otimização: início 1, passo 1, fim 4; em H1 e H4 a guia de resultados está simplesmente vazia, em D1 a mesma rentabilidade em diferentes números de barras analisadas.

Talvez o que eu entendi de sua pergunta seja diferente do que você quis dizer. Meu exemplo compara os preços de abertura entre 3 e 2 barras, e 2 e 1. As barras 3 e 1 não são comparadas. Caso os valores comparados sejam iguais - nada acontece, basta passar para a próxima comparação.
Por que x>1 (não >=). A primeira iteração compara Open[3]==Open[3-1], ou seja, Open[3]==Open[2]. OK. No segundo (x=2), Open[2]==Open[1]. OK. Não há uma terceira iteração. Em x>==1 haverá uma comparação Open[1]==Open[0], não está OK, porque haverá uma comparação com 0 bar.
 
T-G:

Os profissionais não podem ir a lugar algum sem você.

Ajuda com a função. O que conta o último número de pedidos perdidos na história como um pedido mais.

Ou seja, a história mostra 3 últimos pedidos em menos, depois 1 em mais e 2 em menos.

Esta função deve contar os três últimos (antes da ordem positiva)

int Number=0;
//---
if (OrdersHistoryTotal()>0)
{  for (int i=OrdersHistoryTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {  if (OrderProfit()<0.0)
         Number+=1;
         else break;
}  }  }
As encomendas fechadas apenas em déficit são contadas aqui. Se os ganhos = 0 (zero), a contagem é interrompida.
 
paladin80:
As encomendas fechadas apenas em déficit são contadas aqui. Se os ganhos = 0 (zero), a contagem é interrompida.
Pode acontecer que eles não vão necessariamente na ordem em que você os lê. Para ser exato e inequívoco, as ordens devem ser somadas em uma matriz bidimensional: na primeira dimensão é o tempo de fechamento, e na segunda é o ticket de ordem. Em seguida, classifique a matriz pela primeira dimensão, corte-a em três e as verifique (as três últimas).
 
chief2000:
Quero reformular e acrescentar à minha pergunta anterior.
Abaixo está o código para um conjunto de 4 elementos. Na verdade, o número de itens na matriz é uma variável.
Como posso mudar o código para que o número de laços aninhados 'para' se torne variável, um 'para' por item de matriz?
Obrigado!

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}


Olhando para esta situação, comecei a me perguntar. Quando um monte de laços aninhados está disponível. Como são feitos os cálculos? Do mais fundo do ninho ou vice versa?

Isto é, o primeiro a ser calculado:

 for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);

Ou do outro lado? Quero entender como tudo isso funciona.

 
como fazer uma EA levar em conta os níveis de indicadores técnicos. Por exemplo, cci. Se a linha estiver acima do nível 0, então execute ações. Como fazer?
 
webip:
Como fazer uma EA levar em conta os níveis de indicadores técnicos. Por exemplo, cci. Se a linha for maior que 0, então execute ações. Como fazer?

Se cci é maior que zero, então ... Se cci é menor que zero. então ...

Função iCCI();

 

Gurus, diga-me como resolver um problema. Precisamos de um número positivo ao calcular a diferença entre abertura e fechamento. Por exemplo, se o preço aumenta e subtrai o preço de fechamento do preço de abertura, você recebe um número negativo.

 
artmedia70:

Se cci é maior que zero, então ... Se cci for menor que zero. então ...

Função iCCI();



Não. Eu conheço a função, mas não sei como refleti-la no código. Que tal isso?

 if(iCCI() > 0)
  {
    //остальной код?
  }
 
Forexman77:

Gurus, diga-me como resolver um problema. Precisamos de um número positivo ao calcular a diferença entre abertura e fechamento. Por exemplo, se o preço subir e eu subtrair um número negativo do preço de abertura, eu recebo um número negativo.


duplo MathAbs( valor duplo)
A função retorna o valor absoluto (valor modulo) do número passado a ela
 
hoz:

Olhando para esta situação, comecei a me perguntar. Quando um monte de laços aninhados está disponível. Como são feitos os cálculos? Do mais fundo do ninho ou vice versa?

Isto é, o primeiro a ser calculado:

Ou do outro lado? Quero entender como tudo isso funciona...


Você pode ver os resultados que eu dei anteriormente durante 4 ciclos, aí o ciclo mais interno é acionado uma vez para obter 1234.
Razão: