[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 1129

 

Veuillez expliquer pourquoi rien n'est affiché dans la fenêtre de l'indicateur en conséquence.

Code :

#propriété indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- tampons
double Buf_0[] ;

int init()
{
//---- indicateurs

SetIndexBuffer(0,Buf_0) ;
SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,2) ;
//----
retour(0) ;
}

int start()
{
int i, counted_bars=IndicatorCounted() ;
i=Bars-counted_bars-1 ;


while(i>=0)
{
Buf_0[i]=Close[i]/Close[i+1];
i-- ;
}
retour(0) ;
}
//+------------------------------------------------------------------+

 
Abzasc:
? ?? est exactement le bon ?


Cette condition devrait filtrer si (up>=1|down>=1), les alertes, au moins l'un d'entre eux doit être supérieur à zéro, mais il ne l'est pas.

Voici

 
Dimka-novitsek:


Cette condition devrait filtrer si (up>=1||down>=1), les alertes, au moins une d'entre elles, devraient être supérieures à zéro, mais elles ne le sont pas.

Ici


int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (y=1; y>=0;y--) // первое выражение 
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}

return(0);
}
 
Galion:


Vous venez de diviser la fenêtre de l'éditeur en deux parties :) OK, oublions le double clic. Avez-vous activé la coloration syntaxique pour les fichiers MQL4 ? Si non, après avoir ouvert un fichier contenant du code MQL dans l'éditeur, vous devez appuyer sur Syntaxe - et tout en bas de la liste, sélectionnez MQL4 - la mise en évidence sera exactement la même que dans MetaEditor.

 
Mais je ne comprends pas où je fais fausse route ?
 
Non, mais l'ignorer ou y mettre y=1 ne change rien, j'ai vérifié !
 
Dimka-novitsek:
Mais je ne comprends pas où je fais fausse route ?

J'ai enlevé l'excédent.

int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
// for (y=5;y>=0;y--)
//{ 
double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}
//}
//----

//----
return(0);
}

et c'est comme ça.

C'est tout ?

 
dzhini:

Je n'ai probablement pas posé la question correctement. Le trading se fait sur une échelle horaire et on ne sait pas quand une transaction aura lieu, mais il faut qu'elle ait lieu dans la journée. Je voudrais que cette fonction soit commutable. Peut-être que quelqu'un a un tel morceau de code ?


Vous n'avez pas besoin de chercher un morceau de code - vous pouvez passer toute votre vie à le chercher et ne rien trouver. Vous devriez chercher un moyen de construire un fragment de code par vous-même. Le code que je vous ai donné n'est pas fait pour être copié bêtement, mais pour que vous le compreniez du début à la fin, d'autant plus qu'il est très simple. Voici comment fonctionne ce code. Il parcourt la liste des ordres au marché et additionne leur montant avec les ordres historiques ouverts aujourd'hui. Si la somme est supérieure à zéro, les ordres ont déjà été ouverts aujourd'hui et la négociation n'est pas autorisée. Si vous avez besoin d'un commutateur qui vous permette de prendre en compte le nombre de commandes pouvant être ouvertes aujourd'hui, vous pouvez l'ajouter au code par une simple opération. Votre problème est que vous n'avez pas l'algorithme de votre programme, vous ne comprenez pas comment et dans quel ordre votre programme doit fonctionner. Inventez un algorithme, sinon votre tête sera en désordre.

 
Voilà, je vous ai parlé et j'ai tout obtenu d'un seul coup ;)) j'ai regardé les réglages - vous aviez raison (je ne pouvais pas sortir de mon algorithme de résolution de problèmes). Merci pour tous ces conseils. Maintenant, j'ai déjà compris toutes les options proposées : laquelle fonctionne dans quel cas.
 
dzhini:
Eh bien, je vous ai parlé et j'ai immédiatement compris tout ce que )))) avait l'air de faire - vous aviez raison (je ne pouvais pas sortir de mon algorithme de résolution de problèmes). Merci pour tous ces conseils. Maintenant, j'ai compris toutes les options proposées : laquelle fonctionne dans quel cas.

Veuillez noter que les boucles de recherche d'ordre que je vous ai montrées ne tiennent pas compte du maître d'ordre - il s'agit d'une caractéristique par laquelle l'EA peut distinguer ses propres ordres des autres ordres. C'est un numéro qui peut être attribué à un ordre lorsqu'il est ouvert par un EA - tous ses ordres ont le même numéro (ou, si nécessaire, des numéros différents générés automatiquement). Les ordres qui sont ouverts manuellement par le trader ont toujours un nombre magique de zéro ! Cela signifie que si nous ajoutons magic = 0 à l'EA, l'EA interférera avec les trades manuels du trader. Si vous voulez que l'EA ne touche pas aux ordres du négociant et ne manipule que ses propres ordres, vous devez donner à l'assistant une valeur différente de zéro. Dans ce cas, le Conseiller Expert considérera tous les ordres qui n'ont pas une telle magie comme ceux de quelqu'un d'autre et ne les touchera pas.
Raison: