Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1515

 

Messieurs, j'ai identifié la cause. Le problème réside dans le calcul du solde, qui est nécessaire pour tenir compte de la production d'une journée, et bien que cette formule ne produise pas d'erreurs, elle ne fonctionne pas.

   datetime TimeCheck_sb = StrToTime("1:00");

   if(TimeCurrent()==TimeCheck_sb)
     {
       sb1 = AccountBalance();
     }
// и это мне вы тут насоветовали на форуме!!!!!!


   далее там условие такое if(sb1 + sb1/100*LotRisk*(DayMultiplicatorProfit/100) > AccountBalance())
                               {

                                условие открытия ордера...

                                }

Si vous le faites pour le plaisir, ça marche.

AccountBalance()>0

si tu le fais pour le plaisir, ça ne marche pas.

sb1>0

double sb1 ; - est déclaré si quelque chose...


La question devrait être résolue avec

 sb1 = AccountBalance();
 
Порт-моне тв:

Messieurs, j'ai identifié la cause. Le problème réside dans le calcul du solde, qui est nécessaire pour tenir compte de la production d'une journée, et bien que cette formule ne produise pas d'erreurs, elle ne fonctionne pas.

Si vous le faites pour le plaisir, ça marche.

si tu le fais pour le plaisir, ça ne marche pas

double sb1 ; - est déclaré si quelque chose...


Résolvez le problème avec

   datetime TimeCheck_sb = StrToTime("1:00");

   if(TimeCurrent()==TimeCheck_sb)

il n'est pas nécessaire qu'il fonctionne tous les jours... d'ailleurs, il est étrange qu'il fonctionne régulièrement du tout

 
Maxim Kuznetsov:

il n'est pas nécessaire qu'il soit déclenché tous les jours... en fait, il serait étrange qu'il soit déclenché régulièrement du tout

et comment je fixe le solde en début de journée ?

 

Désolé, mais je n'ai toujours pas compris - comment définir KEY_TILDE pour deux événements - Surligner et Désélectionner. J'obtiens soit le déclenchement simultané et l'affichage d'un message dans le terminal, soit uniquement cette option par défaut. Comment un abruti peut-il expliquer comment faire ?

if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE:
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true);
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,true);
            Print("Выделить!");
            break;
            
            default:
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,false);
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,false);
            Print("Отменить выделение!");
            break;
        }
        
     }
 
DYM:

Désolé, mais je n'ai toujours pas compris - comment définir KEY_TILDE pour deux événements - Surligner et Désélectionner. J'obtiens soit le déclenchement simultané et l'affichage d'un message dans le terminal, soit uniquement cette option par défaut. Comment une personne sans cervelle peut-elle expliquer comment faire ?

Événement détecté - vérifier le statut... S'il est sélectionné - désélectionner. Sinon, il est sélectionné.

 
DYM:

Désolé, mais je n'ai toujours pas compris - comment définir KEY_TILDE pour deux événements - Surligner et Désélectionner. J'obtiens soit le déclenchement simultané et l'affichage d'un message dans le terminal, soit uniquement cette option par défaut. Comment un abruti peut-il expliquer comment faire ?


//+------------------------------------------------------------------+
if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE: 
         TILDE(); 
         break;
        }
     }
//+------------------------------------------------------------------+
void TILDE()
  {
   if(ObjectGetInteger(0,"RectLabel",OBJPROP_SELECTABLE)==false)
     {
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true);
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,true);
      Print("Выделить!");
     }
   else
     {
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,false);
      Print("Отменить выделение!");
     }
  }
 
Порт-моне тв:

et comment fixer la valeur du solde en début de journée alors ?

Quelqu'un a-t-il une idée ?

 
Порт-моне тв:

Quelqu'un a une idée ?

   if(AccountBalance()>0)
     {
      sb1 = AccountBalance()-DayProfit();
     }
................

//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита закрытых с определённой даты позиций                                           |
//+--------------------------------------------------------------------------------------------------------------------+
double DayProfit()
  { double p = 0; datetime st=StrToTime("1:00");
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=st){p+=OrderProfit()+OrderSwap()+OrderCommission();}
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
MakarFX:


Je ne sais pas comment vous remercier... sauf pour vous dire merci beaucoup pour votre aide. Je vais essayer de ne plus vous déranger :)
 
Порт-моне тв:

Quelqu'un a une idée ?

saisir le changement de jour et calculer la valeur du solde à ce moment-là.

Ce n'est pas pour rien qu'ils ont dit "prenez le bon indicateur" - cela ne tient pas dans quelques lignes de code. C'est un algorithme assez volumineux.

attraper le changement de jour est facile, "le numéro du jour connu maintenant n'est pas égal au numéro du jour précédent", mais aller plus loin est difficile