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

 
TheXpert:

A compacidade prejudica a legibilidade. Para ser justo, a versão de Roman também não é exatamente boa, mesmo se você ignorar a lógica.

Qual é o objetivo de salvar linhas?

A cada um de seus próprios... É muito mais conveniente para mim ler o código quando tudo está diante dos meus olhos. Eu não tento salvar linhas: como saiu - então saiu...

É tudo uma questão de gosto de cada indivíduo e de decidir o que é mais conveniente e o que não é vazio...

Meu principal é ter todas as linhas em seu lugar habitual e não mais... Acho que o resto de nós deveria fazer o mesmo, mas a nosso próprio critério.

Não há cor e sabor, como você sabe.

 

mas para projetar assim... O pesadelo de um codificador.

         
             if (ticket>0)                                               // 
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  
      
                             OrderDelete(ticket,CLR_NONE); // и удаляете их                       
                     
                            
                    }

       
      return (0);
 
artmedia70:
Sim... Alexey, posso imaginar como seria a linha 807 EA que acabei de dar a um cliente se fosse escrita no estilo de Roman... :))))
Parabéns! Se você olhar o meu código postado no contexto da minha resposta à pergunta, ou seja, do meu último post nesta página, talvez sua idéia de como uma linha 807 EA teria mudado. Eu corrigi meu código do meu EA, onde muitas coisas estão localizadas, em particular, nas linhas em falta no laço, se declaração e ainda mais entre parênteses curvos ao sair do laço, o fato de que o tratamento do erro por não excluir o atraso não é feito - isto também está no contexto da minha pergunta e minha resposta a ela, IMHO - é normal.
 
sergeev:

mas para projetar assim... O pesadelo de um codificador.

Para mim - um projeto assim é normal. Esta não é uma EA personalizada, mas a resposta à pergunta, e em vez de OrderDelete() - você poderia tê-la escrito em palavras - você coloca aqui para apagar uma ordem e chamar a função para lidar com possíveis erros. A pessoa está esperando, eu abri meu código, removi todos os "desnecessários", sem prestar atenção à presença ou ausência de espaços após as mudanças e lhe dei uma versão funcional para sua posterior conexão com sua EA de acordo com suas condições comerciais. Eu acho que tudo está dentro da norma, IMHO.
Aqui está a mesma trama - a original - para a questão de um pesadelo.

          ....
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenTime();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();                                   
                                  
                     //---------------------Запоминаем значения сл и тп ордера
                     // При количестве итераций выше 3-х увеличиваем уровень ТР для выхода в профит. 
                        if (orderType == OP_BUY) 
                           {
                            //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500;                
                            V_StopLossPips = NormalizeDouble(OpenPrice  - (StopLossPips * Point), Digits);
                            V_TakeProfitPips = NormalizeDouble(OpenPrice + (TakeProfitPips * Point), Digits);
                           }
            
                        if (orderType == OP_SELL) 
                           {
                            //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500;        
                            V_StopLossPips = NormalizeDouble(OpenPrice  + (StopLossPips * Point), Digits);
                            V_TakeProfitPips = NormalizeDouble(OpenPrice - (TakeProfitPips * Point), Digits);
                           }                               
                   }     
    
     // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
       // Проверка на необходимость закрытия открытой позиции (ордера) по стоп-лоссу      
     
      if ( V_StopLossPips != 0 )
        {
          if (orderType == OP_BUY && Bid <=  V_StopLossPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_StopLossPips закрываем по сл = ", V_StopLossPips);
             }
             
          if (OrderType()== OP_SELL && Ask >=  V_StopLossPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_StopLossPips закрываем по сл = ", V_StopLossPips);
             }  
        }          
        // Проверка на необходимость закрытия открытой позиции (ордера) по тейку
        
        if ( V_TakeProfitPips != 0 )
        {
          if (orderType == OP_BUY && Bid >=  V_TakeProfitPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_TakeProfitPips закрываем по ТР = ", V_TakeProfitPips);
             }
             
          if (OrderType()== OP_SELL && Ask <=  V_TakeProfitPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_TakeProfitPips закрываем по ТР = ", V_TakeProfitPips);
             }  
        }      
     
       
   //-----------------------------------ВЫВОДИМ ТЕКУЩУЮ ИНФОРМАЦИЮ О ТОРГАХ НА ЭКРАН------------------------------------------------------------ 
     
      string messageLoss = "";
      if (orderProfit < 0.0)
      {
         messageLoss = "Просадка = " + DoubleToStr(loss, 1) + "% (макс. " + MaxLoss + "%)";
      }
   
      // Вывод текущего состояния
      Comment("Прибыль = ", DoubleToStr(orderProfit, 1), " (лот ", orderLots, ")  ", messageLoss, " Iteration= ", Iteration, "  Sum_Loss + Delta= ", MathAbs (Sum_Loss) +  Delta_Sum_Loss * 10 * orderLots, " Ширина канала = ", StopLossPips, " Профит по рыночному ордеру =   ", orderProfit, "  k = ", k);
      return (0);
   }
   
   Comment ("");   
 
artmedia70:

Não existe gosto ou cor.


Somos todos tão diferentes, mas ainda estamos juntos. ))) Estamos todos no mesmo pote cósmico. )))
 
tol64:

Somos todos tão diferentes, mas ainda estamos juntos. ))) Estamos no mesmo pote cósmico. )))
O meu já está vazando caldo... Vou tirar uma soneca... Até de manhã).
 

Já que estamos no clima (eu escrevo código da maneira que quero/cano), vou cortar o último pepino:

Eu escrevo todos os órgãos "executivos" e "legislativos" como funções separadas (tentadas muitas vezes).

Como as funções e suas habilidades são bem conhecidas por mim, eu as coloquei em algum lugar distante no final do código.

Na função de início() eu só prescrevo o que deve acionar o que.

Eu li apenas o início(), e tudo se torna claro de uma só vez.

É conveniente.

 
DhP:

Já que estamos no clima (eu escrevo código da maneira que quero/cano), vou cortar o último pepino:

Eu escrevo todos os órgãos "executivos" e "legislativos" como funções separadas (tentadas muitas vezes).

Como as funções e suas habilidades são bem conhecidas por mim, eu as coloquei em algum lugar distante no final do código.

Na função de início() eu só prescrevo o que deve acionar o que.

Eu li apenas o início(), e tudo se torna claro de uma só vez.

É conveniente.


Não cometa erros ao compilar código, porque primeiro você escreve uma função para execução e depois em algum lugar no final você escreve seu conteúdo, claro que eu não uso funções, eu uso principalmente comentários, mas com variáveis este problema está presente
 
LazarevDenis:

Não há um erro ao compilar o código? Primeiro você escreve a função para execução e depois, em algum lugar no final, escreve o conteúdo.


Não pode haver nenhum erro neste caso.

Ao compilar, pode haver apenas uma indicação/ lembrete de que alguma função não é utilizada.

Nesse caso, ou faço vista grossa ou apago a função não utilizada.

 
LazarevDenis:

Não cometa erros ao compilar código, porque primeiro você escreve uma função para execução e depois em algum lugar no final você escreve seu conteúdo, claro que eu não uso funções, eu uso principalmente comentários, mas com variáveis este problema está presente

O que é isso? ))) É uma piada ou o quê? Se assim for, é uma boa)).