[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 51

 
vikon писал(а) >>

Je sais comment ouvrir une commande en utilisant un code.

Je dois créer un système semi-automatique avec des propriétés de gestion.

J'ouvre une position manuellement, mais l'EA surveille la taille du lot et la modifie par défaut dans MT (service/settings/trading/default volume).

Est-il possible de le faire ?

Non. Du moins pas dans MQL4

 
granit77 >> :

Une référence serait utile :

double iWPR( string symbol, int timeframe, int period, int shift)

Par conséquent, le correct est :

THANKS A LOT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 
Les gens, comment extraire le temps de formation d'une colonne particulière dans le MACD sans utiliser le graphique des prix ?
 
Noterday >> :
Les gens, comment faire pour obtenir le temps de formation d'une barre particulière dans MACD sans utiliser le graphique des prix ?

La colonne correspond au moment de la formation de la barre sur le graphique des prix,

C'est-à-dire que vous avez besoin de connaître le numéro d'une barre particulière.

 

Quelles sont les règles d'optimisation du code? Je m'intéresse aux règles d'écriture, pas à l'algorithme.

Pour être plus précis, laissez-moi vous donner un exemple :

il y a deux scripts "identiques" :

int start()
  {
//----
  int start=GetTickCount();
  int Massiv[100000000];
  int x=ArraySize( Massiv);
  for (int a=0; a<= x; a++)
    {
    Massiv[ a]= a;
    }
  Alert("прошло времени: ",GetTickCount()- start);
//----
   return(0);
  }

и

int start()
  {
//----
  int start=GetTickCount();
  int Massiv[100000000];
  for (int a=0; a<=ArraySize( Massiv); a++)
    {
    Massiv[ a]= a;
    }
  Alert("прошло времени: ",GetTickCount()- start);
//----
   return(0);
  }

le premier est deux fois plus rapide que le second. (pour moi, c'est 4 secondes)

Il est clair que les tableaux de cent millions d'unités ne sont pas souvent utilisés :-) et qu'en réalité le gain est de quelques millisecondes pour un tableau ordinaire et que le problème principal réside dans les algorithmes bogués et non dans ces broutilles, mais néanmoins...

 
beruk >> :

Quelles sont les règles d'optimisation du code ? Je m'intéresse aux règles d'écriture, pas à l'algorithme.

Pour être plus précis, laissez-moi vous donner un exemple :

il y a deux scripts "identiques" :

и

le premier est deux fois plus rapide que le second. (pour moi, c'est 4 secondes)

Il est clair que les tableaux de cent millions d'unités ne sont pas souvent utilisés :-) et qu'en réalité le gain sera de quelques millisecondes pour un tableau ordinaire et que le problème principal réside dans les algorithmes bogués et non dans des détails aussi infimes, mais quand même...

Il n'y a pas de règles en tant que telles. C'est-à-dire que vous pouvez l'écrire comme bon vous semble et qu'il fonctionnera. Bien sûr, il fonctionnera avec une efficacité différente.

Pour chaque opération, son coût en termes d'expression temporelle est connu - vous pouvez le trouver dans les normes de langage, ainsi que le déroulement des boucles et autres constructions de langage (la norme C - je la mentionne parce que je doute que vous ayez essayé de la comprendre, en commençant par les bases - le producteur a recommandé de consulter cette même norme de langage dans tous les cas non spécifiés).

Dans le second cas, vous appelez constamment la fonction ArraySize(Massiv) - c'est l'opération la plus coûteuse (appel de fonction - n'importe laquelle, pas celle-ci), alors que l'opération de comparaison est appelée dans chaque boucle.

Dans ce cas : la boucle

for (int a=ArraySize(Massiv)-1;a>0;a--)

fera la même chose, mais beaucoup plus rapidement. Je veux dire la façon dont la boucle est organisée. Si vous avez des calculs volumineux en boucle, il n'y aura pas de grande différence.

Il y a un "mais" : si vous utilisez un testeur ou des réseaux réentraînés, la différence sera très significative et apparaîtra très, très .....

Oui, encore une chose : vous avez une erreur dans le premier script - dépassement des limites du tableau. Lisez les manuels - tout y est écrit. Tu devrais l'écrire comme ça :

int x=ArraySize(Massiv) ;
for (int a=0;a<x;a++)

Bonne chance.

 

Bon après-midi

Veuillez expliquer comment interpréter ce passage dans le tutoriel FileOpen.

===

Le contenu des entrées dans les fichiers

Avec n'importe quelle combinaison de modes, les enregistrements de données sont écrits dans le fichier sans interruption. Lorsque les fichiers sont formés en mode FILE_BIN, les enregistrements de données sont écrits consécutivement. Selon le type de données écrites dans le fichier (et les fonctions d'enregistrement utilisées à cet effet), une combinaison de caractères de fin de ligne ("\r\n") peut être écrite entre les groupes d'enregistrements. Lorsque les fichiers sont générés en mode FILE_CSV, les enregistrements de données sont séparés par un délimiteur de fichier (généralement ';'), et les groupes d'enregistrements (composés de chaînes de caractères) sont séparés par une combinaison de caractères de fin de ligne ("\r\n").

===

Tout est clairavec "int FileOpen(string filename, int mode, int delimiter=';')".

Où dois-je mettre ("\r\n") ? Peut-on l'utiliser avec FILE_CSV ? Donnez-moi un exemple avec ("\r\n") s'il vous plaît, je suis tellement bête.

 
Bonjour, j'ai besoin d'écrire un Expert Advisor pour cet indicateur : https://www.mql5.com/ru/code/8663 , je veux dire HP.mq4 (s'il monte acheter, s'il descend vendre). Il y a des découverts, mais en cas de périodes importantes, par exemple 100-200, c'est supportable. Ou vous pouvez ajouter un signal MA ; si le signal est inférieur à cet indicateur - acheter, s'il est supérieur - vendre.
 
teetrinker >> :

Bon après-midi

Veuillez expliquer comment interpréter ce passage dans le tutoriel FileOpen.

===

Le contenu des entrées dans les fichiers

Avec n'importe quelle combinaison de modes, les enregistrements de données sont écrits dans le fichier sans interruption. Lorsque les fichiers sont formés en mode FILE_BIN, les enregistrements de données sont écrits consécutivement. Selon le type de données écrites dans le fichier (et les fonctions d'enregistrement utilisées à cet effet), une combinaison de caractères de fin de ligne ("\r\n") peut être écrite entre les groupes d'enregistrements. Lorsque les fichiers sont générés en mode FILE_CSV, les enregistrements de données sont séparés par un séparateur de fichier (généralement ';'), et les groupes d'enregistrements (composés de chaînes de caractères) sont séparés par une combinaison de caractères de fin de ligne ("\r\n").

===

tout est clairavec "int FileOpen(string filename, int mode, int delimiter=';')".

mais où doit-on utiliser "\r\n" ? Peut-on l'utiliser avec FILE_CSV ?

Nulle part. Le manuel dit en russe clair : "les groupes d'enregistrements (formant des chaînes de caractères) sont séparés par une combinaison de caractères de fin de ligne ("\r\n")".

 

Vous pouvez me donner un indice ?

dans mon EA, plusieurs alertes sont alignées dans un bloc, et plusieurs alignées dans un autre bloc.

dans le journal du test ils ne sont pas dans l'ordre mais triés - 2 alertes du premier bloc, 3 du second, puis 3 du premier et les 2 derniers du second

mettre un laps de temps de 500 secondes après chacun d'entre eux, c'est-à-dire une demi-seconde et aucune action - tous sont encore aléatoires et en 1 seconde, les 10 peuvent être placés.

quelle en est la raison ?

comment faire pour que les alertes se déroulent dans l'ordre ?