[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 282

 
MauzerVII:

Les gars, aidez-moi.

Je ne comprends pas pourquoi la ligne

Résultat : 2013.04.12 17 13 Print_v4 EURUSD,M15 : SL == 1.3068

donne quatre décimales ?

Je connais l'existence deDoubleToStr.



Si vous en êtes conscient, quelle est la question, je ne comprends pas.

 

Question sur le code du collecteur de tiques dans kodobase. Une sorte de vérification bizarre des conditions assignées dans l'en-tête des variables booléennes qui ne changent pas plus loin dans le code. Je ne comprends pas comment ça marche.

//в шапке
           bool tick.time.local        =               false;
           bool tick.chart.update      =                true;
//в init()
   if(tick.chart.update == true)
     {
     if(MT4InternalMsg == 0)  
            {
            MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); 
            }   
     }  
//в start()
     if(tick.time.local == true)//где менялось, я вообще не понял
       {
       time = TimeLocal();
       }
       else{
       time = TimeCurrent();
       }
//--------------------------------
       if(tick.chart.update == true)
         {
                   hwnd = WindowHandle(sn, 1);
         if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == false)
           {
           hwnd = 0;
           return;
           }
           PostMessageA(hwnd, MT4InternalMsg, 2, 1);             
           }                 
         } 

La valeur des variables booléennes assignées ne change nulle part dans les conditions (et plus loin dans le code). De plus, start() ne vérifie pas du tout la valeur inverse de la variable assignée. Mais ça marche. Comment ?

 

Ou s'agit-il simplement d'un code non optimisé ? GetLastError() est déclaré dans l'en-tête

#import "ntdll.dll"
 int RtlGetLastWin32Error();
 int RtlSetLastWin32Error (int dwErrCode);

Et ces fonctions NaiveAPI ne sont utilisées nulle part ailleurs dans le code...

 

Amis programmeurs, dites-moi comment résoudre un problème "simple".

Par exemple, je dois supprimer la deuxième ligne d'un fichier CSV. Je n'ai pas trouvé d'informations sur la façon de le faire dans la documentation.

Exemple :

12:30;1;1.34818;12:32;3;3;100;1.34939;18:45\r\n

14:00;1;1.32219;14:26;6;6;100;0.0000;00:00\r\n

19:00;0;1.35828;19:12;12;6;600;1.37939;19:59\r\n

 
tuner:


J'aimerais bien, mais je n'ai pas le temps de penser à autre chose, désolé.

En ce qui concerne la question sur l'endroit où ils sont changés. Je pense que ce sont des drapeaux de débogage, que le programmeur a utilisés lors de l'écriture de l'indicateur et qu'il a laissés dans le code pour le débogage, si quelqu'un en a besoin.

 

Le résultat est simple. Le swing rapide croise le swing lent. Ensuite, le prix revient au prix rapide et le conseiller expert doit alors ouvrir un ordre.

Pour le moment, j'ai écrit la fonction pour fixer le pullback comme suit :

//+-------------------------------------------------------------------------------------+
//| Получение значений МА на указанном баре                                             |
//+-------------------------------------------------------------------------------------+
double GetMA(int index, int maPeriod)
{
   return (iMA(NULL, i_TF, maPeriod, 0, MODE_EMA, MODE_CLOSE, index));
}
//+-------------------------------------------------------------------------------------+
//| Имеет ли место отскок?                                                              |
//+-------------------------------------------------------------------------------------+
void IsRebound(int crossDir[], bool& returnSign[])
{
   for (int i = 0; i < 4; i++)
   {
      if (crossDir[i] == CROSS_NO)
         continue;

      returnSign[i] = false;
      double ema = GetMA(1, g_maPeriod[i]);

      if (crossDir[i] == CROSS_UP)
      {
         if (ND(MathAbs(ema - Ask)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
         {
            returnSign[i] = true;
            Alert("CROSS_UP");
         }
      }
      if (crossDir[i] == CROSS_DN)
      {
         if (ND(MathAbs(ema - Bid)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
         {
            returnSign[i] = true;
            Alert("CROSS_DN");
         }
      }
   }
}

Est-ce correct ? Ou faut-il procéder différemment ?

Le tableaucrossDir[] stocke les valeurs concernant l'existence d'un crossover. S'il y en a un, il vérifie l'écart entre le prix d'achat ou de vente actuel et la valeur du masque. Pour certaines raisons, la condition n'est pas du tout remplie.

Voici ce dont j'ai besoin :

retour en arrière

Après qu'un bracelet a franchi la barre des 365, et dès que le prix revient au bracelet correspondant qui a franchi la barre des 365, achetez. COMMENT PUIS-JE LE LIBÉRER ?

 

Dessinez une sorte de diagramme logique de ce que vous voulez. Pour vous-même.

Une année se compose d'environ 250 barres quotidiennes.

 
Personne ne l'a mis en œuvre. Je ne pense pas que ce soit très compliqué. Je n'ai pas encore beaucoup d'expérience, je ne comprends pas bien comment formaliser ce point ...
 
hoz:
Personne ne l'a jamais fait. Je ne pense pas que ce soit très difficile. Je n'ai pas encore beaucoup d'expérience, je ne comprends pas bien comment formaliser ce point ...

Vous pourriez le faire dans un organigramme. Vous pourriez faire autre chose, mais d'une manière très approfondie et sans ambiguïté. Ainsi, je ne pourrai pas vous frapper pour l'incohérence de l'idée avec sa description.

Je ne le ferai pas.

 
tara:

Vous pourriez le faire dans un organigramme. Vous pourriez faire autre chose, mais d'une manière très approfondie et sans ambiguïté. Ainsi, je ne pourrai pas vous frapper pour l'incohérence de l'idée avec sa description.

Je ne le ferai pas.

Êtes-vous venu dans ce fil pour écrire que vous ne le ferez pas ? Pour faire quoi ? Juste pour écrire.... ?