Comment coder ? - page 44

 

Bonjour ralph.ronnquist

Je dois donc créer une autre ligne sdl du genre SDLL = long SDLS = short ?

Je pense que j'ai raison de dire que sur l'indice SDL

uptrend = tampon 1 & Index 1 couleur Bleu

dntrend = tampon 2 & Index 2 couleur Rouge

Si oui, où dois-je les mettre ? Dois-je les mettre à la fin de la ligne iCustom ?

double SDL=iCustom(NULL,0, "Slope Direction Line",period,method,price,1,1,shift) ;

ou je suis loin du compte

 

L'instruction :

double SDL=iCustom(NULL,0,"Slope Direction Line",period,method,price,1,shift);

fait que SDL maintient la valeur du deuxième tampon (Uptrend) à la barre "shift" donnée.

(Notez que vous avez répété ",1", ce qui semble être une faute de frappe. Dans tous les cas, il ne devrait pas être là).

Donc, oui, si vous voulez lire à la fois Uptrend et Dntrend, vous aurez besoin de deux variables pour contenir les valeurs. Comme vous le dites, Uptrend vaut 1 et Dntrend vaut 2.

 

Bonjour Ralph

Merci pour votre aide. Ça marche, je peux aller dormir maintenant.

Au revoir

Beno

 
wolfe:
J'espère que c'est ce que vous recherchiez.

Il m'a envoyé dans la bonne direction - merci, j'apprécie vraiment.

Mon nouveau problème est que lorsque mon instruction if est appelée.....

Il part de la valeur de la barre d'indicateur précédente par rapport à la barre actuelle, et envoie une Alert() ; que j'ai créée... environ 20 fois.

Comment puis-je faire en sorte qu'elle n'envoie qu'une seule fois ?

J'ai essayé de créer un interrupteur marche/arrêt à l'aide de variables - cela ne fonctionne pas dans MQL4 malheureusement.

Puis j'ai pensé aux minuteries... s'il y avait une minuterie que je pouvais créer et qui n'alertait qu'une fois sur une période de 20 secondes, cela fonctionnerait aussi.....

Mais je suis perdu quant à une idée qui serait réellement possible dans MQL4.

Des idées ?

 

En d'autres termes... J'ai besoin d'un moyen pour l'empêcher d'émettre des alertes après la première, parce qu'en ce moment, il émet de multiples alertes (ennuyeuses et inutiles, comme vous pouvez l'imaginer).

 
dharsant:
En d'autres termes... J'ai besoin d'un moyen d'empêcher l'alerte de se déclencher après la première, parce qu'en ce moment, elle se déclenche plusieurs fois (ennuyeux et inutile, comme vous pouvez le deviner).

Pourriez-vous nous fournir du code à examiner ?

Vous pourriez peut-être configurer un booléen vrai/faux à déclencher après le premier envoi de l'alerte.

 

Je ne suis pas sûr du code qui aurait le plus de sens. Voici mon instruction if pour l'alerte.

"Code":

latestlatestmain = 2 barres précédentes dans mon indicateur.

latestmain = barre précédente sur mon indicateur

if(MainCCI > ErgoCCI){

{signal = "SHORT" ;

if ((latestlatestmain >= 0) && (latestmain < 0)) {

PlaySound("alert2.wav") ;

}

}

if(lastsignal != signal && alertTag!=Time[0]){

alertTag = Time[0] ;

lastsignal=signal ;

}

}

if (MainCCI < ErgoCCI){

{signal = "LONG" ;

if ((lastlatestmain 0)) {

PlaySound("alert2.wav") ;

}

Ceci est l'indicateur FX Sniper, et lorsqu'il correspond à mes paramètres, il envoie l'alerte.

Comment puis-je mettre en place un système booléen vrai/faux ?

J'ai essayé de faire ceci.....

"Code avec interrupteur marche/arrêt" :

if(MainCCI > ErgoCCI){

{signal = "SHORT" ;

if ((latestlatestmain >= 0) && (latestmain < 0)) {

if (onealert == 1) {

PlaySound("alert2.wav") ;

onealert = 0 ;

} }

}

if(lastsignal != signal && alertTag!=Time[0]){

alertTag = Time[0] ;

lastignal=signal ;

}

}

if (MainCCI < ErgoCCI){

{signal = "LONG" ;

if ((latestlatestmain 0)) {

if (onealert == 0) {

PlaySound("alert2.wav") ;

onealert = 1 ;

} }

ou une variante de cela, pour créer le on/off avec des variables.

Je pourrais faire autre chose en utilisant des booléens, n'est-ce pas ? Avez-vous une idée de la manière dont je pourrais procéder ?

Pour l'instant, le système fonctionne bien en ce qui concerne l'alerte, il ne m'alerte qu'environ 5-6 fois.

J'apprécie le temps et l'aide que vous m'accordez.

-dharsant

 

Je pensais juste que j'avais trouvé la solution et que Sleep() ; fonctionnerait.... darn.

 

J'ai trouvé ceci par Codersguru ;

void AlertOnce(string alert_msg, int ref)

{

if (ref > 10)

return;

ref--;

static int LastAlert[10];

if( LastAlert[ref] == 0 || LastAlert[ref] < Bars)

{

Alert(alert_msg);

LastAlert[ref] = Bars;

}

}

Cela ressemble à ce que je recherche !

En utilisant ceci avec mon indicateur...

Est-ce que je dois juste placer la fonction dans mon script, et ensuite utiliser

AlertOnce("Sniper going LONG",10) ;

à la place de mon Alert() ; ?

Je me sens comme un petit programmeur inexpérimenté.

 

Je l'ai, merci pour l'aide ! !!

Raison: