Aide au codage - page 301

 
sunshineh:
Bonjour,

J'utilise les fonctions de fichier et elles fonctionnent bien !

J'utilise des fichiers assez volumineux et je travaille avec une boucle for.

À chaque cycle, je lis une ligne du fichier. Parfois, je veux changer un mot dans l'une de ces lignes.

Existe-t-il un moyen simple de le faire ? Si je ferme le fichier en lecture et l'ouvre en écriture, mon pointeur de fichier va à la fin du fichier.

Mais y a-t-il une possibilité d'obtenir la position réelle du pointeur de fichier ? Ainsi, je peux aussi écrire directement, par exemple au milieu du fichier.

Il n'y a pas de moyen simple si les lignes ne sont pas de taille fixe (il faut alors réécrire tout le fichier).

Si les lignes sont de taille fixe , utilisez FileSeek(fileHandle,lineSize*(numberOfLine-1),SEEK_SET) ; et écrivez ensuite les modifications sur cette ligne spécifique.

 

Désolé si je répète mon message... mais c'est important pour moi.... j'ai besoin d'un exemple de code :

Bonjour Mladen,

Je voudrais un petit indicateur qui, sur l'image de temps 5 min, me montre quand le stoc 5-3-3 est en dessous de 20 sur l'image de temps 15 min.

Je ne veux pas que l'action soit multitrame.... mais un signal de l'image supérieure sur l'image inférieure.

Merci d'avance

 

Bonjour Mladen ,

Je veux exporter les valeurs non lag ma nrp vers un fichier CSV. Les couleurs rouges (tomates) doivent être négatives et les couleurs bleues doivent être positives... Merci.

 
nevar:
Bonjour Mladen, je veux exporter les valeurs non lag ma nrp vers un fichier CSV. Les couleurs rouges (tomates) doivent être des valeurs négatives et les couleurs bleues doivent être des valeurs positives... Merci.

nevar

Voici un script qui fait cela : export_nonlag_ma_data.mq4

Vous avez besoin du "NonLag ma nrp nmc" de ce post dans le dossier des indicateurs aussi : https://www.mql5.com/en/forum/general

Dossiers :
 
mladen:
AZRUL

Vous ne fournissez pas la valeur que vous voulez rechercher à la ligne 180 (cette ligne :

int ranking = rank() ;

donc la fonction rank ne peut comparer à aucune valeur. Votre appel doit être sous la forme suivante :

int ranking = rank(someValueToRank) ;

Cher SIR MLADEN,

J'ai essayé d'obtenir le classement pour la sortie totale de mon indicateur pour faire un RANK dans l'ordre croissant, mais je n'y arrive pas.... Je n'ai obtenu que 2 sorties et une seule d'entre elles est correcte.... ( je pense que oui..) et le reste (5 de plus) est (0) zero......

J'ai essayé tout ce à quoi je pouvais penser et je suis à court d'idées sur la façon de produire un code pour les classer dans l'ordre croissant ou décroissant serait bien.... pourriez-vous S'IL VOUS PLAÎT AIDER.........

Votre temps et votre expertise sont toujours appréciés et nécessaires.......

Votre serviteur

AZRUL...

Dossiers :
 
12BPRO:
Cher SIR MLADEN,

J'ai essayé d'obtenir le classement pour la sortie totale de mon indicateur pour faire un RANK dans l'ordre croissant mais je n'y arrive pas... Je n'ai obtenu que 2 sorties et une seule d'entre elles est correcte... ( je pense que oui..) et le reste (5 de plus) est (0) zero......

J'ai essayé tout ce à quoi je pouvais penser et je suis à court d'idées sur la façon de produire un code pour les classer dans l'ordre croissant ou décroissant serait bien.... pourriez-vous S'IL VOUS PLAÎT AIDER.........

Votre temps et votre expertise sont toujours appréciés et nécessaires.......

Votre serviteur

AZRUL...

12BPRO

Je pense que je vous l'ai déjà dit : vous devez faire un classement/tri en 2 dimensions (puisque vous avez une valeur + un nom de symbole dans chaque par que vous voulez afficher). Il n'est pas suffisant de trier seulement les valeurs puisque de cette façon vous perdez les noms de symbole ; vous devez créer votre propre procédure de tri qui déplacera le nom de symbole à la place correspondante lorsque la valeur est déplacée à sa place.

 
mladen:
12BPRO Je pense que je vous l'ai déjà dit : vous devez faire un classement/tri en 2 dimensions (puisque vous avez une valeur + un nom de symbole dans chaque par que vous voulez afficher) Il n'est pas suffisant de trier seulement les valeurs puisque de cette façon vous perdez les noms de symbole vous devez faire une procédure de tri de votre propre chef qui déplacera le nom du symbole à la place correspondante lorsque la valeur est déplacée à sa place.

Cher SIR MLADEN,

J'ai essayé ce code en ajoutant la procédure de tri et il indique une certaine valeur... malheureusement il semble avoir manqué la dernière valeur du tableau (TOTCAD)... pourriez-vous S'IL VOUS PLAÎT jeter un coup d'oeil...

Je suis vraiment2 désolé, je ne suis pas un PROGRAMMEUR .... je ne comprends pas grand chose... mon Cher GURU..... Je fais de mon mieux pour apprendre ceci......

Votre temps et votre expertise sont toujours appréciés et nécessaires.......

Votre serviteur

AZRUL...

Dossiers :
 
12BPRO:
Cher SIR MLADEN,

J'ai essayé ce code en ajoutant la procédure de tri et il indique une certaine valeur... malheureusement il semble avoir manqué la dernière valeur du tableau (TOTCAD)... pourriez-vous S'IL VOUS PLAÎT jeter un coup d'oeil...

Je suis vraiment2 désolé, je ne suis pas un programmeur .... je ne comprends pas grand chose... mon cher GURU..... Je fais de mon mieux pour apprendre ceci......

Votre temps et votre expertise sont toujours appréciés et nécessaires.......

Votre serviteur

AZRUL...

AZRUL

Voici une routine de tri qui trie des tableaux à 2 dimensions :

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

// 2 dimenzional array shell sort

//

//

//

double PR[][2];

void SortIt()

{

int size ArrayRange(PR,0);

int i,j,increment = size / 2;

double temp,temi;

//

//

//

//

//

while (increment > 0)

{

for (i = increment; i < size; i++)

{

j = i;

temp = PR;

temi = PR;

while ((j >= increment) && (PR[j-increment,0] < temp))

{

PR[j,0] = PR[j-increment,0];

PR[j,1] = PR[j-increment,1];

j = j-increment;

}

PR[j,0] = temp;

PR[j,1] = temi;

}

if (increment == 2) increment = 1;

else increment = (increment / 2.2);

}

}

Remplir le tableau PR avec des vlues et une sorte de marque pour un symbole (par exemple PR[0,0] = valeur pour eur, PR[0,1] = 1 (ce qui signifierait que 1 est une marque pour EUR). Ensuite, appelez la procédure SortIt() et lisez les valeurs et les marques correspondantes pour les symboles (par exemple, vous obtiendrez PR[5,1] == 1 (1 signifiant EUR), ce qui signifie que la valeur PR[4,0] est la valeur de EUR).

 
mladen:
AZRUL

Voici une routine de tri qui trie des tableaux à 2 dimensions :

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

// 2 dimenzional array shell sort

//

//

//

double PR[][2];

void SortIt()

{

int size ArrayRange(PR,0);

int i,j,increment = size / 2;

double temp,temi;

//

//

//

//

//

while (increment > 0)

{

for (i = increment; i < size; i++)

{

j = i;

temp = PR;

temi = PR;

while ((j >= increment) && (PR[j-increment,0] < temp))

{

PR[j,0] = PR[j-increment,0];

PR[j,1] = PR[j-increment,1];

j = j-increment;

}

PR[j,0] = temp;

PR[j,1] = temi;

}

if (increment == 2) increment = 1;

else increment = (increment / 2.2);

}

}
Remplissez le tableau PR avec des valeurs et une sorte de marque pour un symbole (par exemple PR[0,0] = valeur pour eur, PR[0,1] = 1 (ce qui signifierait que 1 est une marque pour EUR). On appelle la procédure SortIt() et on lit les valeurs et les marques correspondantes pour les symboles (par exemple, on obtient PR[5,1] == 1 (1 signifiant EUR), ce qui signifie que la valeur PR[4,0] est la valeur de EUR).

Cher SIR MLADEN,

MERCI BEAUCOUP CHER SIR(GURU).... vous êtes mon HERO ET .... 6ème Crédit...

J'AIME tellement ce FORUM.... merci aux GURU'S ici....

Cela serait bénéfique pour les autres aussi....

MERCI SIR....

Votre serviteur

AZRUL...

 
mladen, mrtool...

need help to modify/add color changing rule by 2 moving averange (MA period 8 n MA period 24).

si MA8 > MA24, histo color=vert.

si MA8 < MA24, histo color=rouge.

Voici le lien de l'indicateur : https://www.mql5.com/en/code/download/7992/BW_MFI.mq4

j'attends toujours...j'ai déjà essayé par moi-même (avant de poster cette demande) mais pas de bon résultat, besoin de plus de buffers ? ou parce que je ne suis pas codeur/manque de compétences en codage. je veux juste savoir s'il est possible de combiner le BW MFI avec celui d'un autre indic.