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 724

 
borilunad:
Se eu entendi o problema corretamente.
int n,Nn;
switch(n)
  {case 1:Nn=1;break;case 2:Nn=3;break;case 3:Nn=6;break;case 4:Nn=10;break;case 5:Nn=15;break;default :Nn=0;}
Não está claro de onde n deve ser tirado...
 
valeryk:
Se entendi bem o problema, não está claro de onde n deve ser tirado...
Obrigado por seu feedback! O número de ordens em aberto é igual a n. Quando o sinal para abrir é repetido, a exigência de ter lucro nas posiçõesabertas aumenta. Assim, evito drawdowns irrazoáveis. É resolvido simplesmente no laço, mas não é conveniente inseri-lo em condições de abertura, como com ointerruptor.Precisamos de um "factorial", mas somando um, não multiplicando! Fórmula! Até agora, estou usando a fórmula acima com MathMax.
 
borilunad:
Obrigado por seu feedback! O número de ordens em aberto é igual a n. Quando o sinal para abrir é repetido, a exigência de ter lucro em posições já abertas aumenta. Assim, evito drawdowns irrazoáveis. É resolvido simplesmente no laço, mas não é conveniente inseri-lo nas condições de abertura. Preciso de uma espécie de "fatorial", mas deveria ser uma soma, não uma multiplicação!
Estou vendo. Bem, é assim que eu faria se o número de pedidos fosse limitado a 5. A varredura, neste caso, é o caminho mais rápido.
 
valeryk:
Entendo. Bem, eu o faria dessa forma se o número de pedidos fosse limitado a 5. O pergaminho, neste caso, é o caminho mais rápido.

Ouch ;) ?

const int iN[] = {1,3,6,10,15};

Nn = iN[n];
 
valeryk:
Entendo. Bem, eu faria isso se o número de pedidos fosse limitado a 5. Neste caso, uma varredura é a maneira mais rápida.
Não quero limitá-lo, é por isso que estou procurando uma fórmula. Talvez me venha à mente eventualmente, mas sem uma varredura e sem um loop!
 
VladislavVG:

Ouch ;) ?

De acordo. Mas se ele pede um valor de índice 7, por exemplo? Precisa ser verificado. Mas em qualquer caso, não há erros.
 
borilunad:
Só não quero ser restritivo, então estou procurando por algum tipo de fórmula. Talvez venha até mim a tempo, mas sem uma varredura e sem um loop!
Em seguida, o exemplo acima, no laço no inite para preencher a matriz. E redimensionar a partir de pedidos máximos.
 
VladislavVG:

Ouch ;) ?

О! Muito obrigado! Isso é mais perto e mais fácil! Vou fazer experiências com isto, como eu entendo a matriz. Mas não será possível fazer indefinidamente com o número. Ou você poderia se n===2, então pegar o 2º membro, e se n===6 ou mais, então colocar mais membros na matriz. Espero ter acertado!

 
borilunad:

Sim, o conjunto pode ser aumentado deliberadamente, por exemplo, medindo 100 ou mais - o número de pedidos que você dificilmente receberá, mas ainda assim será limitado.

Se você quiser obtê-lo sem limites, você só precisará de um loop. Faça dela uma função separada, será normal chamá-la em qualquer lugar. Haverá uma perda de velocidade: infelizmente, não há funções em linha na MKL.

 
borilunad:
Me pegou)))
input int MaxOrders = 5;  // внешняя

int Nn[];  // глобальная

int OnInit()
  {
   string txt="";
   int i=0,temp=0;
   ArrayResize(Nn,MaxOrders+1);
   for(i=1;i<=MaxOrders;i++) 
     {
      temp+=int(MathMax(i-1,0));
      Nn[i]=temp;
      txt=StringConcatenate(txt,"\n",temp);
     }
   Comment(txt);
   return(INIT_SUCCEEDED);
  }