Comment coder ? - page 222

 

Merci Roger09

Posté à l'origine par ForExTyro

J'essaie d'ajouter un code à un EA qui limitera le nombre de transactions qu'il effectue par jour à seulement deux (2). Seulement UNE transaction longue et UNE transaction courte par jour. C'est le code que j'ai jusqu'à présent, mais sur un back test il ne fonctionne pas.

Pouvez-vous m'aider ?

Réponse postée par Roger09

Remplacer

datetime LongTrade=0 ;

datetime ShortTrade=0 ;

en

static datetime LongTrade=0 ;

statique datetime ShortTrade=0 ;

C'est tout ?

C'est ça !

MERCI Roger09

 

Bonjour,

C'est un bel exemple, comment se présente l'EA décompilé et l'Ind.

b.

 
Kalenzo:
Voilà, profitez-en !

Bonjour Kalenzo,

J'ai encore besoin de votre aide, pouvez-vous coder pour moi une info supplémentaire comme vous l'avez fait auparavant ?

supplémentaire comme vous l'avez fait avant, je voudrais mettre l'information de barre de LSMA.

Quand la barre LSMA Woodie est verte, elle montre le mot LONG (couleur verte),

et quand la barre Woodie est rouge, le mot Short est affiché (couleur rouge).

Voir l'image ci-jointe.

http://i98.photobucket.com/albums/l277/compobey/CCIinfo.jpg

Merci,

compobey

 

Demande d'aide

Bonjour à tous

J'ai utilisé un système très simple qui fait environ +100 pips par mois.

J'aimerais le transformer en EA mais je suis très novice en matière de codage et je me sens perdu . Peut-être que vous pourriez m'aider à créer cet EA et que nous pourrions tous l'utiliser ?

Veuillez me faire savoir si vous êtes intéressé et je posterai les détails de ce que l'EA doit faire.

Je vous remercie

 

Kalenzo

Kalenzo:
Voilà, profitez-en !

Rebonjour Kalenzo,

J'ai observé l'indi que vous avez réparé pour moi.

En général, il fonctionne bien, mais de temps en temps il arrive de mettre une mauvaise couleur sur la ligne.

Comme vous pouvez le voir sur l'image, il y a des endroits où il devrait être Tomate ou Rouge, mais il s'avère DodgerBlue à la place.

Les règles étaient les suivantes ;

Quand la valeur (à la clôture de la barre) est > à la clôture précédente de la barre (en hausse) = DodgerBlue.

DodgerBlue lorsque la valeur est < 0

Bleu quand la valeur est > 0

Lorsque la valeur (à la clôture de la barre) < à la clôture précédente de la barre (baisse) = DodgerBlue.

Tomate lorsque la valeur est > 0

Rouge quand la valeur est < 0

J'ai marqué avec des flèches rouges où les erreurs sont exactes.

Pouvez-vous jeter un coup d'œil au code, s'il vous plaît.

J'ai essayé d'expliquer aussi bien que possible, mais faites-moi savoir si vous avez besoin de plus d'informations.

Merci.

Dossiers :
 
Klondyke:
Salut encore Kalenzo,

J'ai observé l'indi que vous avez réparé pour moi.

En général, elle fonctionne bien, mais il arrive parfois qu'elle mette une mauvaise couleur sur la ligne.

Comme vous pouvez le voir sur l'image, il y a des endroits où il devrait y avoir de la tomate ou du rouge, mais où il s'agit de DodgerBlue.

Les règles étaient les suivantes ;

Quand la valeur (à la clôture de la barre) est > à la clôture précédente de la barre (en hausse) = DodgerBlue.

DodgerBlue lorsque la valeur est < 0

Bleu quand la valeur est > 0

Lorsque la valeur (à la clôture de la barre) < à la clôture précédente de la barre (baisse) = DodgerBlue.

Tomate lorsque la valeur est > 0

Rouge quand la valeur est < 0

J'ai marqué avec des flèches rouges où les erreurs sont exactes.

Pouvez-vous jeter un coup d'œil au code, s'il vous plaît.

J'ai essayé d'expliquer aussi bien que possible, mais faites-moi savoir si vous avez besoin de plus d'informations.

Merci.

Désolé, j'ai oublié le fichier.

Dossiers :
 

Comment accéder à une étiquette de ligne ?

Comment puis-je accéder à une étiquette de ligne dans Metatrader 4 ?

quelque chose comme

if(a > b) goto fred

if(c > d) goto jim

:fred

faites un peu plus de code ici

:jim

faites un peu de code ici

J'ai obtenu une réponse mais j'ai besoin d'un peu plus d'explications.

Vous pouvez écrire du code dans les fonctions à la place. Quelque chose comme ceci :

if(a > b) Valeur de retour = fred() ;

if(c > d) Valeur de retour = jim() ;

int fred()

{

faites un peu plus de code ici

}

int jim()

{

faire un peu de code ici

}

Qu'est-ce que ReturnValue ? Ce n'est pas une fonction, comment puis-je l'écrire ?

 

Dans l'exemple que vous avez publié, "ReturnValue" est simplement une variable. Elle aurait pu être appelée n'importe comment, mais la personne qui vous a donné ce code a utilisé 'ReturnValue'.

Pour être honnête, ce format n'a pas beaucoup de sens, sauf si vous avez l'intention de faire quelque chose avec la valeur renvoyée par les deux fonctions. Vous ne pouvez pas utiliser le concept de goto comme vous pouviez le faire en VB (ou était-ce Basic - c'est tellement loin que je ne m'en souviens plus !)

Juste quelque chose comme...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Alors, quoi que vous ayez l'intention de faire lorsque le programme aurait sauté en utilisant goto, vous le feriez à la place dans les deux fonctions respectives.

J'espère que cela a un sens.

Salutations

Lux

 
luxinterior:
Dans l'exemple que vous avez posté, "ReturnValue" est juste une variable. Elle aurait pu être appelée n'importe comment, mais la personne qui vous a donné ce code a utilisé 'ReturnValue'.

Pour être honnête, ce format n'a pas beaucoup de sens, sauf si vous avez l'intention de faire quelque chose avec la valeur renvoyée par les deux fonctions. Vous ne pouvez pas utiliser le concept de goto comme vous pouviez le faire en VB (ou était-ce en Basic - c'est tellement loin que je ne m'en souviens pas !)

Juste quelque chose comme...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Alors, quoi que vous ayez l'intention de faire lorsque le programme aurait sauté en utilisant goto, vous le feriez à la place dans les deux fonctions respectives.

J'espère que cela a un sens.

Salutations

Lux

Merci pour la réponse, ce que j'essaie de faire, c'est que l'EA choisisse entre deux conditions, mais choisisse celle qui change en premier.

Ainsi, dans votre exemple

if(a>b)DoThisFunction() ;

si(a<b)DoAnotherFunction() ;

il faut plus que "if do this", ou "if do that", parce que l'autre condition est "c & d" ont-ils changé avant "a & b", si c'est le cas, faites ceci et ignorez "a & b". C'est pourquoi j'ai essayé d'aller à une ligne parce que je n'arrive pas à choisir avec "if then else".

car en réalité, j'ai

if(a>b && c>d) // faire un achat ici

sinon

si (a>b && c<d) // faire un achat à la clôture ici

else

inversement faire une vente ou une vente rapprochée

mais si c & d ont changé en premier, avant a & b, alors ignorez le code ci-dessus et faites les tests ci-dessus sur c & d à la place.

Désolé, c'est aussi clair que de la boue

 

Travailler avec des fichiers CSV... je deviens fou !

Bonjour,

J'écris un EA qui fonctionne avec des fichiers CSV.

Pour les tests, je place mes fichiers CSV dans le dossier suivant :

/tester/files

Voici seulement une petite partie de mon EA :

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

Dans mon EA, je lis les fichiers CSV, puis j'écris quelques nombres entiers.

Maintenant, lorsque je fais mon test et que je lis dans le journal les messages "Print", j'obtiens souvent de vieux entiers qui ne sont plus écrits dans les fichiers CSV !

Par exemple :

D'abord il y a écrit 3 et mon EA fonctionne et écrit le 0 dans le fichier,

Je ne vois que le 3 dans ce fichier CSV ! !

Lorsque j'efface ce fichier CSV et que je place un nouveau fichier CSV avec 3 dans le dossier " /tester/files ", je ne peux lire que le 0 du test avant ! !!!. Mais je n'arrive pas à trouver où l'EA lit le 0 ! !!

Je deviens fou !!!!!

J'espère que vous comprendrez ma question et que vous me donnerez une astuce !