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

 
Amon1953:

Falhas na MQL4 ?


Erro semelhante em duas outras situações também com o operador if()

E se você pensar cuidadosamente e tentar entender a razão pela qual esta falha é a única para você? Talvez você tenha algum tipo de terminal especial?

 
Alexey Viktorov:

E se você pensar cuidadosamente e tentar entender a razão pela qual você é o único com tal falha???? Talvez você tenha algum tipo de terminal especial?

O terminal da InstaForex não é incomum. E esta falha não apareceu de imediato. No início estava bem, mas depois, de repente, desapareceu. A reinstalação do terminal não ajudou. Terei que verificar com outro corretor.
 
Amon1953:
Eu estava usando um terminal da InstaForex, nada fora do comum. E esta falha não apareceu de imediato. No início era normal, mas depois, de repente, desapareceu. A reinstalação do terminal não ajudou. Terei que verificar isso com outro corretor.

Sim, bem... Eu não recebi o código morse. Terei que tirá-lo para fora...

Talvez devêssemos procurar por erros na lógica e em nosso próprio código?

 

Uma palavra de conselho. Estou otimizando, e digamos que não preciso de nenhum parâmetro, por exemplo, existem muvings lentos e rápidos, e não preciso obter tais períodos desses muvings nos resultados da otimização que o período do rápido seja mais longo que o do lento.

Como eu posso "pular" este passo de otimização por condição?

 
Alexey Viktorov:

Sim, bem... Eu não recebi o código morse. Terei que tirá-lo para fora...

Talvez se deva procurar por erros na lógica e no próprio código?

Este pedaço de código é independente do algoritmo geral.

Aqui está o mesmo bloco, mas está funcionando corretamente. Ela utiliza dois operadores IF(), embora haja apenas um que pode ser utilizado conforme descrito no livro didático. Isto demonstra o funcionamento incorreto do IF()/ operador.

//+------------------------------------------------------------------+
   if((cnt_OO>=2))
     {
      for(int h=OrdersTotal()-1; h>=0; h--)
        {
         if(OrderSelect(h,SELECT_BY_POS))
           {
            if((OrderMagicNumber()==Magic))
              {
               Nextstep  = NextStep;
               BaseNext  = OrderOpenPrice();
               LotsNext  = NormalizeDouble(OrderLots()*K,lotDigit);
               if(NewPB>0)
                  PBcloseON=true;
               Alert("Pospedny Order NEXT  ",OrderTicket());
               Alert("Otkritih orderov  ",cnt_OO);
               break;
              }
           }
        }
     }
   if((cnt_OO==1))
     {
      LotsNext=NormalizeDouble(Lots*Prikup,lotDigit);
      Alert("Otkritih orderov NEXT net ");
      Alert("Otkritih orderov  ",cnt_OO);
     }
//+------------------------------------------------------------------+
 
Amon1953:

Este pedaço de código é independente do algoritmo geral.

Aqui é o mesmo bloco, mas funciona corretamente. Ela utiliza dois operadores IF(), embora um possa ser utilizado como descrito no livro didático. Isto demonstra o funcionamento incorreto do IF()/ operador.


Isto é apenas uma demonstração de um bug. Antes de falar em operação incorreta, você deve imprimir os valores das variáveis utilizadas nos operadores if() e compará-los com os valores esperados.

E aprenda a inserir o código para que possa ser lido normalmente.

 
Alexey Viktorov:

Isto só mostra que temos um bug. Antes de dizer que não funciona corretamente, você deve imprimir os valores das variáveis utilizadas nas declarações if() e compará-los com os valores esperados.

E aprenda a inserir o código para que possa ser lido normalmente.

Eu acabei de copiar o texto do programa. No primeiro post você pode ver claramente que há 5 pedidos e a mensagem de que não há pedidos como Próximo. este é o segundo terceiro pedido, etc.

O programa é simples como um prego, cnt_OOO é o número de ordens abertas, se houver mais de uma significa que há uma ordem Seguinte, Isto é parte do bloco para restaurar os parâmetros em caso de falha e reinício da EA

 
Amon1953:

Eu acabei de copiar o texto do programa. No primeiro post você pode ver claramente que há 5 pedidos e a mensagem de que não há pedidos como Próximo. este é o segundo terceiro pedido, etc.

O programa é tão simples quanto um prego, cnt_OOO é um número de ordens abertas, se houver mais de uma significa que há uma ordem Seguinte, Isto é parte do parâmetro bloco de recuperação em caso de falha e reinício da EA

Onde está a garantia de que este é o caso?

 
Amon1953:

Eu acabei de copiar o texto do programa. No primeiro post você pode ver claramente que há 5 pedidos e a mensagem de que não há pedidos como Próximo. este é o segundo terceiro pedido, etc.

O programa é simples como um prego, cnt_OOO é o número de ordens abertas, se houver mais de uma significa que há uma ordem Seguinte, Isto é parte do bloco para recuperar parâmetros em caso de falha e reinício da EA

  1. Use Alt+S para colar o código, ou use os botões de barra de formato em seu correio:



  2. Sua lógica não funciona, não o operador condicional se()
  3. Eu corrigi o código em seu posto para o normal para aqueles que o ajudam - respeite-os, por favor. Da próxima vez, as pessoas não tentarão ajudar vendo as receitas que você oferece.
 
Artyom Trishkin:
  1. Use Alt+S para colar o código, ou use os botões de barra de formato em seu correio:



  2. Sua lógica não funciona, não o operador condicional se()
  3. Eu corrigi o código em seu posto para o normal para aqueles que o ajudam - respeite-os, por favor. Da próxima vez, as pessoas não tentarão ajudar vendo as receitas que você oferece.
Obrigado pelo conselho. Não sou um programador muito experiente. e uso um estilo que é confortável para mim, ainda não aprendi como trazê-lo a um estilo comum neste site. - Zeitnote.
Razão: