[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 8

 
TheXpert:

La compacité nuit à la lisibilité. Pour être juste, la version de Roman n'est pas vraiment bonne non plus, même si on ignore la logique.

Quel est l'intérêt d'économiser des lignes ?

A chacun son métier... Pour moi, il est beaucoup plus pratique de lire le code quand il est sous mes yeux. Je n'essaie pas d'économiser les lignes : comme c'est sorti - comme c'est sorti...

C'est une question de goût pour chaque individu et décider ce qui est plus pratique et ce qui ne l'est pas est vide...

Mon objectif principal est que chaque ligne soit à sa place habituelle et pas plus... Je pense que le reste d'entre nous devrait faire de même, mais à notre propre discrétion.

Il n'y a pas de couleur et de goût, comme vous le savez.

 

mais pour concevoir comme ça... Le cauchemar d'un codeur.

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

       
      return (0);
 
artmedia70:
Ouais... Alexey, je peux imaginer à quoi ressemblerait l'évaluation environnementale de 807 lignes que je viens de donner à un client si elle était écrite dans le style de Roman ... :))))
Félicitations ! Si vous regardez mon code posté dans le contexte de ma réponse à la question, à savoir de mon dernier message sur cette page, peut-être que votre idée de ce à quoi aurait ressemblé un EA de 807 lignes aurait changé. J'ai corrigé mon code à partir de mon EA, où beaucoup de choses se trouvent, en particulier, dans les lignes manquantes dans la boucle, l'instruction if et plus loin dans les crochets curly lors de la sortie de la boucle, le fait que la gestion des erreurs pour la non suppression retardée n'est pas faite - c'est aussi dans le contexte de ma question et ma réponse à celle-ci, IMHO - est normal.
 
sergeev:

mais pour concevoir comme ça... Le cauchemar d'un codeur.

Pour moi - un tel design est normal. Il ne s'agit pas d'une EA personnalisée, mais de la réponse à la question, et au lieu de OrderDelete() - vous auriez pu l'écrire en toutes lettres - vous mettez ici la suppression d'un ordre et l'appel de la fonction de traitement des erreurs éventuelles. La personne attend, j'ai ouvert mon code, supprimé tous les "inutiles", sans faire attention à la présence ou l'absence d'espaces après les modifications et je lui ai donné une version fonctionnelle pour qu'il puisse ensuite connecter son EA selon ses conditions de trading. Je pense que tout est dans la norme, IMHO.
Voici la même intrigue - l'originale - à la question d'un mauvais rêve.

          ....
          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:

Le goût et la couleur n'existent pas.


Nous sommes tous si différents, mais nous sommes toujours ensemble. ))) Nous sommes tous dans le même pot cosmique. )))
 
tol64:

Nous sommes tous si différents, mais nous sommes toujours ensemble. ))) Nous sommes dans le même pot cosmique. )))
Le mien fuit déjà du bouillon... Je vais faire une sieste... Jusqu'au matin.)
 

Puisque nous sommes dans l'ambiance (j'écris le code comme je veux/peux), je vais couper le dernier concombre :

J'écris tous les organes "exécutifs" et "législatifs" comme des fonctions distinctes (essayées plusieurs fois).

Comme les fonctions et leurs capacités me sont bien connues, je les ai placées loin, quelque part à la fin du code.

Dans la fonction start(), je prescris seulement ce qui doit déclencher quoi.

Je ne lis que le début(), et tout devient clair tout de suite.

C'est pratique.

 
DhP:

Puisque nous sommes dans l'ambiance (j'écris le code comme je veux/peux), je vais couper le dernier concombre :

J'écris tous les organes "exécutifs" et "législatifs" comme des fonctions distinctes (essayées plusieurs fois).

Comme les fonctions et leurs capacités me sont bien connues, je les ai placées loin, quelque part à la fin du code.

Dans la fonction start(), je prescris seulement ce qui doit déclencher quoi.

Je ne lis que le début(), et tout devient clair tout de suite.

C'est pratique.


N'obtenez-vous pas des erreurs lors de la compilation du code, parce que vous écrivez d'abord une fonction pour l'exécution, puis quelque part à la fin vous écrivez son contenu, bien sûr je n'utilise pas de fonctions, j'utilise surtout des commentaires, mais avec les variables ce problème est présent
 
LazarevDenis:

N'y a-t-il pas une erreur lors de la compilation du code ? Vous écrivez d'abord la fonction pour l'exécution, puis quelque part à la fin, vous écrivez le contenu.


Il ne peut y avoir d'erreur dans ce cas.

Lors de la compilation, il se peut qu'il y ait seulement une indication/un rappel qu'une certaine fonction n'est pas utilisée.

Dans ce cas, soit je ferme les yeux, soit je supprime la fonction inutilisée.

 
LazarevDenis:

N'obtenez-vous pas des erreurs lors de la compilation du code, parce que vous écrivez d'abord une fonction pour l'exécution, puis quelque part à la fin vous écrivez son contenu, bien sûr je n'utilise pas de fonctions, j'utilise surtout des commentaires, mais avec les variables ce problème est présent

Qu'est-ce que c'est ? ))) C'est une blague ou quoi ? Si c'est le cas, c'est un bon)).