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 890

 
evillive:

É mais ou menos assim:


Obrigado, mas não é bem assim. Você tem várias condições de fechamento para um mágico e quer o oposto.

Eu me lembrei disso:

void CritCloseBuy()
   {
    if (OrderSelect(Ord, SELECT_BY_POS, MODE_TRADES)==true)
    {
      if ((OrderMagicNumber()==10011&&10033)&&(...условия1...)
      {
        ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);
          if (ord_close = false)
          {
            Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError());
          }
            else 
              {           
              Ord=0;              
              }
           return;
           }
           if ((OrderMagicNumber()==10022&&10044&&10066)&&(...новые условия...))
      {
        ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);
          if (ord_close = false)
          {
            Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError());
          }
            else 
              {           
              Ord=0;              
              }
           return;
           }           
          }
         }
Será que vai funcionar? Ou o que está errado?
 
rapid_minus:


Obrigado, mas não é bem isso que você precisa. Você tem várias condições de fechamento para um mágico, mas precisa do oposto.

Foi assim que eu cheguei a essa conclusão:

Será que vai funcionar? Ou o que está errado?

É... Como posso dizer isto delicadamente...

Para que serve então atroca, se o código é para um mágico?

Mas você poderia usar "se quiser", mas teríamos que pensar em condições.

Por exemplo

if ((OrderMagicNumber()==10011&&10033)&&(...)

não seria culpado na hora da compilação?

 
evillive:

Isto é... Como posso dizer suavemente...

Para que serve então o interruptor, se o código é para um mágico?

Talvez eu não entenda a chave, mas em sua expressão há um mágico, que é comparado a várias variantes de condições de fechamento.

ZS: serra a seqüência. Eu ainda não o compilei, pois ainda não terminei o código. Os números não podem ser numerados usando uma operação AND?

Então, como posso sair disso? Repetir para cada mágico?

ZZZY: Na verdade, não é AND, mas OR.

 
rapid_minus:

Então, como você sai disso? Repetir para cada feiticeiro?

Sim.


E sobre um interruptor ainda você deve ler uma cartilha, lá pelo contrário, qualquer número de variantes é processado (caso 0:..., caso 1:..., caso N:..., onde número = valor de um mágico). Eu era preguiçoso demais para escrever no exemplo, então eu só tive tempo suficiente para escrever dois mágicos e a variante padrão ;)

 
evillive:
Sim

Acho que afinal você não precisa escrever o OR para cada mágico?
 
rapid_minus:

Acho que você não tem que escrever um OR para cada mágico, tem?
Nós deveríamos, Fedya, nós deveríamos (c)
 
evillive:

Sim.


E ainda se lê uma cartilha sobre um interruptor, lá pelo contrário, qualquer número de variantes é processado (caso 0:..., caso 1:..., caso N:..., onde número = valor de um mágico). Eu era preguiçoso demais para escrever no exemplo, então eu só tive tempo suficiente para escrever dois mágicos e a variante padrão ;)

Obrigado pelo esclarecimento do interruptor. Eu entendi mal.
 

E ainda assim, no interruptor você obtém a mesma repetição da mesma condição de fechamento para diferentes magos que você obtém com os ifs.

A única questão é qual variante irá comer mais pedaços.

 
rapid_minus:

E ainda assim, no interruptor você obtém a mesma repetição da mesma condição de fechamento para diferentes magos que você obtém com os ifs.

A única questão é qual variante irá comer mais pedaços.

Eu perdi alguma coisa - já estamos otimizando o código?
 
rapid_minus:

E ainda assim, no interruptor você obtém a mesma repetição da mesma condição de fechamento para diferentes magos que você obtém com os ifs.

A única questão é qual variante irá comer mais pedaços.

Esta é a mesma ramificação como se(), apenas parece mais limpa e é mais fácil de codificar se houver três ou mais escolhas individuais de inteiros para escolher. Se houver apenas duas opções, ou se expressões não numéricas estiverem sendo comparadas, então apenas se(). E por if() você pode combinar várias opções (if( opção1 && opção2 ||| opção3 ) {ação;}), enquanto a chave não pode ser usada diretamente, apenas uma de cada vez.

interruptor
se()
interruptor (x)
{
caso 1: Aja de acordo com a variante 1; pausa;
caso 2: ação na opção 2; pausa;
caso 3: ação na opção 3; pausa;
padrão: ação padrão; pausa;
}
if( opção1 ) { ação na opção 1; }
senão se( opção2 ) { ações por opção 2; }
senão se( opção3 ) { ações por opção 3; }
senão { ação padrão; }
Razão: