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

 

Bonjour à tous, existe-t-il une commande prête à l'emploi pour afficher l'historique des transactions à l'écran ?

similaire au fait de faire glisser une transaction de l'historique vers le graphique



il serait possible de parcourir l'historique des transactions et d'assigner des objets, mais je pense qu'il y a un moyen plus simple.

 
Mickey Moose:

Bonjour à tous, existe-t-il une commande prête à l'emploi pour afficher l'historique des transactions à l'écran ?

similaire au fait de faire glisser une transaction de l'historique vers le graphique

La même chose, mais avec la touche de contrôle enfoncée. Ctrl ou Shift - je ne me souviens pas - j'écris depuis un téléphone portable.
 
Artyom Trishkin:
La même chose, mais avec la touche de contrôle enfoncée. Je ne sais plus si c'est Ctrl ou Shift - j'écris depuis un téléphone portable.



Je veux mettre cette pièce dans mon robot non commercial pour la mettre sur un graphique et voir ce qui se passe.

Pour le mettre sur le graphique et voir combien de craps ont été produits par an pour ce symbole.
 
Ihor Herasko:

Il n'y a aucun moyen d'obtenir cette information par le biais du MQL. Vous devez accéder aux contrôles DateTimePricker, ce qui se fait via WinAPI.

Merci, je l'ai eu !

Peut être utile pour quelqu'un :

#import "user32.dll"
   int      SendMessageA(int hWnd,int Msg,int wParam,int &lParam[]);
#import

#define  DTM_GETSYSTEMTIME 0x1001

int SystemTime[4];

.....

//+------------------------------------------------------------------+
//|          Функция преобразования в формат datetime                |
//+------------------------------------------------------------------+
datetime FormatDateTime(int &DT[]){
   string sMonth,sDay,sHour,sMin,sSec;
      int nYear,nMonth,nDay,nHour,nMin,nSec;   
      
   //---- parse date and time from array
         nYear=DT[0]&0x0000FFFF;
         nMonth=DT[0]>>16;
         nDay=DT[1]>>16;
         nHour=DT[2]&0x0000FFFF;
         nMin=DT[2]>>16;
         nSec=DT[3]&0x0000FFFF;
         
   //---- format date and time items
         sMonth=100+nMonth;
         sMonth=StringSubstr(sMonth,1);
         sDay=100+nDay;
         sDay=StringSubstr(sDay,1);
         sHour=100+nHour;
         sHour=StringSubstr(sHour,1);
         sMin=100+nMin;
         sMin=StringSubstr(sMin,1);
         sSec=100+nSec;
         sSec=StringSubstr(sSec,1);

   //----
         return(StrToTime(StringConcatenate(nYear,".",sMonth,".",sDay," ",sHour,":",sMin,":",sSec)));
  }
  
void OnInit(void){
  if (IsTesting()){
    SendMessageA(0x0000000000010288,DTM_GETSYSTEMTIME,0, SystemTime);
    Print("date From: ",TimeToString(FormatDateTime(SystemTime)));
    
    SendMessageA(0x000000000001028E,DTM_GETSYSTEMTIME,0, SystemTime);
    Print("date To: ",TimeToString(FormatDateTime(SystemTime)));
  }
  .....
}

void OnTick(void){
  .....
}
//+------------------------------------------------------------------+
 
mrumskiy:

Merci, je l'ai eu !

Cela peut être utile à quelqu'un :

Puis une contre-question : pourquoi est-il nécessaire d'obtenir la date d'intervalle des tests, où cela peut-il être utile ?

 
Artyom Trishkin:

Si i est un multiple de deux.

C'est le reste de i divisé par 2.

Merci. Comment, dans l'indicateur, exclure des calculs les bougies de 19 à 11 heures ?

 
PolarSeaman:

Merci. Comment l'indicateur peut-il exclure de ses calculs les bougies situées entre 19 et 11 heures ?

Il est facile de surveiller l'heure et de sauter si l'on ne respecte pas les limites fixées.

La logique est simple : vous savez que le magasin est fermé pour le déjeuner entre 14 et 15 heures. Vous regardez votre montre et vous n'allez pas au magasin si c'est l'heure du déjeuner. Alors pourquoi tu t'embrouilles ici ? Quelle est la différence ?

 
Bonjour, je voudrais créer une condition selon laquelle
Pendant la période de temps 0-8 pas sera égal à 5 pips, pendant le reste de la journée 10 pips. Mais si j'ai des ordres qui ont été ouverts le jour précédent, alors dans la période 0-8 le pas sera aussi de 10 pips.


 
Artyom Trishkin:

Il est facile de surveiller le temps et de le sauter s'il n'est pas dans les limites fixées.

La logique est simple : vous savez qu'entre 14 et 15 heures, le magasin est fermé pour le déjeuner. Vous regardez votre montre et vous n'allez pas au magasin si c'est l'heure du déjeuner. Alors pourquoi tu t'embrouilles ici ? Quelle est la différence ?

Le fait est que si vous définissez un intervalle de temps comme dans l'EA

if(Hour()>=17&&Hour()<=11)return(0);

J'ai besoin d'exclure de l'historique, les chandeliers qui sont dans l'intervalle, des calculs.

 
Tigerfreerun:
Bonjour, je voudrais créer une condition selon laquelle
Pendant la période 0-8, le pas sera égal à 5 pips, pendant le reste de la journée 10 pips. Mais s'il y a des ordres ouverts le jour précédent, alors dans la période de temps 0-8 le pas sera aussi égal à 10 pips.


C'est peut-être le cas :

  if(Hour()>=0&&Hour()<=8&&OrdersTotal()==0)step = 5; else step =10;
Raison: