Comment coder ? - page 317

 

Bonjour,

Je me demande comment je peux coder cet indicateur/outil.

J'ai besoin d'un indicateur, d'un script ou quelque chose comme ça où je peux décider d'une certaine plage de jours (ex 12/10/2012-15/10/2012 ou 15/10/2012-15/10/2012) et après il écrit dans un fichier csv ou excel l'ouverture, le haut, le bas et la fermeture pour la bougie affichée dans le graphique en fonction de la TF (ex. si je décide seulement d'un jour et l'attache dans 1hr TF il écrit 24 bougies avec leur spécification).

Merci d'avance pour votre aide

 

Problème de signal d'alerte.

Bonjour à tous, il y a ce petit problème avec un code MT4 que j'ai écrit. Ce code est supposé surveiller trois indices, stoichastic, RSI et CCI. Si le stoichastic croise sa ligne de signal vers le haut ou vers le bas ET que le RSI de période 70 et 6 se croise vers le haut ou vers le bas et que le CCI est au-dessus ou en dessous de zéro, il devrait y avoir un signal d'achat si l'ensemble des 3 indices sont au-dessus de leurs lignes de signal ou il devrait y avoir un signal de vente si les 3 indices sont en dessous de leurs lignes de signal........Ce code fonctionne mais à chaque fois qu'il y a une alerte, elle se répète à chaque ticks de la bougie. Que puis-je faire pour que cette alerte ne retentisse qu'une seule fois si les trois conditions sont remplies sur la bougie actuelle et qu'elle ne se répète pas. voici le code ci-dessous.

if(Period()==240){

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0) ;

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0) ;

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0) ;

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0) ;

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1) ;

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0) ;

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1) ;

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0) ;

// alertes

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&nowenCCI>b4enCCI)&&(nowtrCCI>0&nowtrCCI>b4trCCI)){

Alert("Flèche d'achat","\n"," L'heure actuelle est ",TimeToStr(CurTime()),"\n",Symbol()) ;

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&(nowtrCCI<0&nowtrCCI<b4trCCI)){

Alert("Flèche de vente","\n", "L'heure actuelle est ",TimeToStr(CurTime()),"\n",Symbol()) ;

}

}

 
mladen:
pooh

C'est simplement parce que les valeurs des différents symboles peuvent être très différentes (par exemple, la valeur de GBPJPY est d'environ 126 aujourd'hui et celle d'EURUSD est environ 100 fois moins élevée - lorsque vous tracez ces valeurs sur le même graphique, la valeur d'EURUSD est simplement " hors champ " parce que metatrader prend les valeurs de GBPJPY comme critère pour la mise à l'échelle du graphique).

Jetez un œil à ce fil de discussion : https://www.mql5.com/en/forum/178052. Il y a déjà quelques solutions à des problèmes similaires dans ce fil de discussion.

Merci Mladen. J'ai suivi votre lien et trouvé l'indicateur qui répond à mon besoin.

pooh

 

Essayez comme ceci :

if(Period()==240)

{

static datetime lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// alerts

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI >0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Buy Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI <0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Sell Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

}
Mastercash:
Si le stoichastic croise sa ligne de signal vers le haut ou vers le bas ET que le RSI de période 70 et 6 se croise vers le haut ou vers le bas et que le CCI est au-dessus ou au-dessous de zéro, il devrait y avoir un signal d'achat si les 3 indys sont au-dessus de leurs lignes de signal ou il devrait y avoir un signal de vente si les 3 indys sont au-dessous de leurs lignes de signal........Ce code fonctionne mais à chaque fois qu'il y a une alerte, elle se répète à chaque tic-tac de la bougie. Que puis-je faire pour que cette alerte ne retentisse qu'une seule fois si les trois conditions sont remplies sur la bougie actuelle et qu'elle ne se répète pas.

if(Period()==240){

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0) ;

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0) ;

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0) ;

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0) ;

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1) ;

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0) ;

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1) ;

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0) ;

// alertes

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&nowenCCI>b4enCCI)&&(nowtrCCI>0&nowtrCCI>b4trCCI)){

Alert("Flèche d'achat","\n", "L'heure actuelle est ",TimeToStr(CurTime()),"\n",Symbol()) ;

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&(nowtrCCI<0&nowtrCCI<b4trCCI)){

Alert("Flèche de vente","\n", "L'heure actuelle est ",TimeToStr(CurTime()),"\n",Symbol()) ;

}

}
 

Problèmes d'alerte

Merci mladen, je vais essayer.je n'ai jamais pris note de la fonction LastAlert() et s'il vous plaît vous pouvez me faire savoir où obtenir le répertoire de toutes ces fonctions mt4 "tranche rouse".

 

Mastercash

Attention : ce n'est pas une fonction mais une variable statique qui est utilisée pour stocker l'heure (heure de la barre) de la dernière alerte et ainsi éviter les alertes multiples sur la même barre. Malheureusement, il n'y a pas de fonction comme LastAlert() dans metatrader, donc nous devons trouver des solutions de contournement comme celle de l'exemple pour résoudre le manque de fonctions.

Mastercash:
Merci mladen, je vais essayer. je n'ai jamais pris note de la fonction LastAlert() et s'il vous plaît vous pouvez me faire savoir où obtenir le répertoire de toutes ces fonctions mt4 "tranche rouse".
 

Salut mladen.

J'ai besoin d'assigner 24 variables chacune pour les 24 bougies de la dernière heure du jour.

J'ai besoin de faire quelques calculs avec la bougie et le résultat sera assigné à un tampon.

Comment puis-je coder pour travailler avec chacune des bougies de 24 heures du jour précédent ?

Merci pour votre aide.

 

dasio

Vous pouvez utiliser quelque chose de similaire à ceci (ce mode n'utilise pas les tableaux). En outre, cet exemple est pour le jour actuel

datetime startTime = iTime(NULL,PERIOD_D1,0);

for (int i=iBarShift(NULL,PERIOD_H1,startTime); TimeDayOfYear(iTime(NULL,PERIOD_H1,i))==TimeDayOfYear(startTime); i--)

{

//

//

// processing the hourly data ... just an example here

//

//

double close = iClose(NULL,PERIOD_H1,i); //

double open = iOpen(NULL,PERIOD_H1,i); // and so on ...

}

dasio:
Salut mladen.

J'ai besoin d'assigner 24 variables chacune pour les 24 bougies de la dernière heure du jour.

J'ai besoin de faire quelques calculs avec les bougies et le résultat sera assigné à un tampon.

Comment puis-je coder pour travailler avec chacune des bougies de 24 heures du jour précédent ?

Merci pour votre aide.
 
mladen:
dasio

Vous pouvez utiliser quelque chose de similaire à ceci (ce mode n'utilise pas les tableaux). De plus, cet exemple concerne la journée en cours

datetime startTime = iTime(NULL,PERIOD_D1,0);

for (int i=iBarShift(NULL,PERIOD_H1,startTime); TimeDayOfYear(iTime(NULL,PERIOD_H1,i))==TimeDayOfYear(startTime); i--)

{

//

//

// processing the hourly data ... just an example here

//

//

double close = iClose(NULL,PERIOD_H1,i); //

double open = iOpen(NULL,PERIOD_H1,i); // and so on ...

}

Merci mladen.

Dans cet exemple

double close = iClose(NULL,PERIOD_H1,i) ; //

double open = iOpen(NULL,PERIOD_H1,i) ; //

Quelle bougie rappresent et comment je peux passer à la bougie suivante ? i+1 ?

Merci de votre compréhension.

 

dasio

Il boucle déjà sur toutes les heures de la journée en cours. J'ai placé le iClose() et le iOpen() juste comme un exemple d'appel à partir d'un cadre temporel différent de 1 heure. Si vous voulez accéder à un jour différent du jour actuel, remplacez le "0" de la date startTime=iTime(NULL,PERIOD_D1,0) ; par n'importe quel jour pour lequel vous souhaitez que les données soient collectées.

dasio:
Merci mladen.

Dans cet exemple

double close = iClose(NULL,PERIOD_H1,i) ; //

double open = iOpen(NULL,PERIOD_H1,i) ; //

Quelle bougie rappresent et comment je peux passer à la bougie suivante ? i+1 ?

Merci à vous