Questions des débutants MQL5 MT5 MetaTrader 5 - page 1197

 
Alexey Viktorov:

Pour l'affichage dans le testeur ? Oui. Créez un modèle avec tous les indicateurs dont vous avez besoin et enregistrez-le avec le nom de l'EA ou le nom du testeur et le test s'ouvrira avec ces paramètres.

Sur les graphiques du compte réel et du compte de démonstration.

 

Salutations !

Quelqu'un sait-il comment contacter Maxim Gutman ?

Trader, développeur d'un système de trading automatisé

 
odyn:

Sur les graphiques du compte réel et du compte de démonstration.

Voici le MACD, par exemple

Tous les autres sont les mêmes.

 

Bonjour, veuillez me conseiller ou m'envoyer un lien pour voir

Je dois sélectionner parmi les postes ouverts ceux dont la durée de vie dépasse une certaine période.

Comment puis-je comparer correctement l'heure d'ouverture d'une position avec l'heure actuelle ?

J'ai lancé cette fonction, que faire ensuite je n'arrive pas à réfléchir (peu d'expérience), comment comparer le temps ?

//+------------------------------------------------------------------+
bool Selected_Positions_Time_Life(datetime time_life, int &array_base[][observations])
{
int n = 0;
int size = ArrayRange(array_base,0);

for(int i=0; i<size; i++)
{
   int index  = Arr_Position[i][0];
   int ticket = m_position.SelectByIndex(index);
   datetime tl = m_position.Time();
   datetime tc = TimeCurrent();
 //Вот тут наверное нужно сравнить tl и tc 
 //и если разница превышает time_life, то это наша позиция
}

return(n>0);
}
//+------------------------------------------------------------------+
 
Sergey Voytsekhovsky:

Bonjour, pourriez-vous me conseiller ou m'envoyer un lien pour voir...

Je dois sélectionner parmi les postes ouverts ceux dont la durée de vie dépasse une certaine période.

Comment puis-je comparer correctement l'heure d'ouverture d'une position avec l'heure actuelle ?

J'ai créé cette fonction, mais je n'ai aucune idée de ce qu'il faut faire ensuite (manque d'expérience), comment comparer les temps ?

Dans la boucle, sélectionnez une position et obtenez son ticket.

ulong posTicket = PositionGetTicket(i);

Ensuite, obtenez l'heure d'ouverture du poste

PositionGetInteger(POSITION_TIME)
et comparer avec le temps de référence ±.
 
Alexey Viktorov:

Choisir une position dans la boucle et obtenir un ticket pour celle-ci

Obtenez ensuite l'heure d'ouverture de la position

Et comparez avec le temps de référence ±.

Juste cette procédure de comparaison jeter s'il vous plaît, avec la position du billet, l'heure d'ouverture et l'heure du serveur, je pense que j'ai compris, je ne peux pas comparer. J'ai regardé le commentaire, je n'ai que des dates.

 
Sergey Voytsekhovsky:

C'est exactement la procédure de comparaison s'il vous plaît, avec le ticket de position, l'heure d'ouverture et l'heure du serveur je pense avoir compris, je ne peux pas comparer. J'ai regardé dans le commentaire, je n'ai que les dates.

Donc vous comparez les dates. Mais vous devez tenir compte de l'écart. Il est préférable de comparer la différence entre l'heure d'ouverture et l'heure de référence avec un écart admissible.

fabs(время_позиции - эталонное_время) < допустимого_отклонения // например 600 секунд
 
Alexey Viktorov:

Comparez donc les dates. Mais il faut tenir compte de l'écart. Il est préférable de comparer la différence entre l'heure d'ouverture et l'heure de référence avec un écart de tolérance.

Alexey Viktorov:

Comparez donc les dates. Mais il faut tenir compte de l'écart. Il est préférable de comparer la différence entre l'heure d'ouverture et l'heure de référence avec la tolérance.

Bien reçu, merci, je vais essayer dès que je serai devant mon ordinateur (je suis sur mon portable en ce moment).

 

Bon après-midi.

Je veux trier les lignes verticales par temps sur le graphique. J'ai écrit un petit script. Mais le résultat n'est pas ce que je veux.

Veuillez me conseiller sur ce que je fais de mal.

void OnStart()
{
int      vlines            = 0;
string   vlines_name[];
string   vlines_name_sort[];
datetime tm[];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   if(vlines < 20 * 2)
   {
      Print("вертикальных линий меньше необходимиого. (",vlines," < ",20 * 2,")");
      return;
   }
   ArrayResize(vlines_name,vlines);
   ArrayResize(vlines_name_sort,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      vlines_name[i] = ObjectName(ChartID(),i,0,OBJ_VLINE);
   }
   ArrayPrint(vlines_name);
   
   for(int i = 0, n = 0; i < 9000; i++)
   {
      ArrayFree(tm);
      CopyTime(Symbol(),Period(),i,1,tm);
      
      for(int a = 0; a < vlines - 1; a++)
      {
         datetime tml = (datetime)ObjectGetInteger(ChartID(),vlines_name[a],OBJPROP_TIME);
         if(tml == tm[0])
         {
            vlines_name_sort[n++] = vlines_name[a];
            break;
         }
      }
   }
   ArrayPrint(vlines_name_sort);
}

Le résultat :

(GBPUSD,H6)     [ 0] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"  "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
(GBPUSD,H6)     [10] "H6 Vertical Line 28756" "H6 Vertical Line 29445" "H6 Vertical Line 30340" "H6 Vertical Line 31840" "H6 Vertical Line 32885"
(GBPUSD,H6)     [15] "H6 Vertical Line 33779" "H6 Vertical Line 34048" "H6 Vertical Line 38532" "H6 Vertical Line 38756" "H6 Vertical Line 39075"
(GBPUSD,H6)     [20] "H6 Vertical Line 39458" "H6 Vertical Line 39649" "H6 Vertical Line 40385" "H6 Vertical Line 41116" "H6 Vertical Line 4150" 
(GBPUSD,H6)     [25] "H6 Vertical Line 41900" "H6 Vertical Line 42820" "H6 Vertical Line 43071" "H6 Vertical Line 46245" "H6 Vertical Line 48196"
(GBPUSD,H6)     [30] "H6 Vertical Line 50258" "H6 Vertical Line 50374" "H6 Vertical Line 55171" "H6 Vertical Line 56003" "H6 Vertical Line 56400"
(GBPUSD,H6)     [35] "H6 Vertical Line 57565" "H6 Vertical Line 59075" "H6 Vertical Line 59881" "H6 Vertical Line 59969" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 63540" "H6 Vertical Line 63904" "H6 Vertical Line 64359" "H6 Vertical Line 64420" "H6 Vertical Line 65200"
(GBPUSD,H6)     [45] "H6 Vertical Line 6695"  "H6 Vertical Line 7743"  "H6 Vertical Line 8707"  "H6 Vertical Line 9491"  "H6 Vertical Line 9662" 

(GBPUSD,H6)     [ 0] "H6 Vertical Line 46245" "H6 Vertical Line 39075" "H6 Vertical Line 40385" "H6 Vertical Line 55171" "H6 Vertical Line 31840"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 63904" "H6 Vertical Line 6695"  "H6 Vertical Line 59075" "H6 Vertical Line 28358" "H6 Vertical Line 10884"
(GBPUSD,H6)     [10] "H6 Vertical Line 38532" "H6 Vertical Line 29445" "H6 Vertical Line 23365" "H6 Vertical Line 64420" "H6 Vertical Line 7743" 
(GBPUSD,H6)     [15] "H6 Vertical Line 30340" "H6 Vertical Line 39649" "H6 Vertical Line 38756" "H6 Vertical Line 34048" "H6 Vertical Line 42820"
(GBPUSD,H6)     [20] "H6 Vertical Line 64359" "H6 Vertical Line 50374" "H6 Vertical Line 14306" "H6 Vertical Line 48196" "H6 Vertical Line 57565"
(GBPUSD,H6)     [25] "H6 Vertical Line 20277" "H6 Vertical Line 41116" "H6 Vertical Line 12743" "H6 Vertical Line 50258" "H6 Vertical Line 41900"
(GBPUSD,H6)     [30] "H6 Vertical Line 17907" "H6 Vertical Line 4150"  "H6 Vertical Line 59881" "H6 Vertical Line 56400" "H6 Vertical Line 10771"
(GBPUSD,H6)     [35] "H6 Vertical Line 63540" "H6 Vertical Line 65200" "H6 Vertical Line 9491"  "H6 Vertical Line 16501" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 32885" "H6 Vertical Line 1371"  "H6 Vertical Line 33779" null                     null                    
(GBPUSD,H6)     [45] null                     null                     null                     null                     null                    
 
Сергей Таболин:

Bon après-midi.

Je veux trier les lignes verticales par temps sur le graphique. J'ai écrit un petit script. Mais le résultat n'est pas ce que je veux.

Veuillez me conseiller sur ce que je fais de mal.

Le résultat :

Logiquement, vous devez d'abord rassembler toutes les lignes dans un tableau, je ferais immédiatement à deux dimensions, bien, ou structure de tableau, dans la première dimension ajouter un temps de création, dans la seconde - le nom de la ligne.

Dans la boucle pour une exécution, remplir le tableau, en dehors de la boucle après avoir rempli le tableau est trié par la première dimension, c'est-à-dire, le temps.

Le résultat est imprimé dans la deuxième boucle.

Par conséquent, nous avons 2 cycles et un tri entre eux.

C'est tout, si j'ai bien compris le problème :)