Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Travaillant sur un tableau multidimensionnel, je bloque sur une chose si simple...
Bonjour à tous,
J'essaie juste de récupérer une cellule d'un tableau dans une ligne d'écran (même résultat message Alert), il manque quelque chose c'est sûr, mais toute la journée dessus et je ne comprends pas pourquoi...
De l'aide serait la bienvenue ... ...
C'est ici :
//| !XTEST sur arrays.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_chart_window
extern int Coin = 1 ;
extern int X_Col = 700 ;
extern int Y_Ligne = 30 ;
extern string FontCar = "Arial" ;
extern int TailCar = 14 ;
extern color Couleur = Lime ;
extern int X = 1 ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
chaîne Tab1dim[2] ;
string Tab2dim[2,2] ;
chaîne Tab3dim[2,2,2] ;
string Tab4dim[2,2,2,2] ;
// 5eme Dimension de tableau non autorisée . int Tab5dim[20,20,20,80,2] ;
int init()
{
//---- indicateurs
string Tab1dim[2]={"tab1-c0","tab1C1"};
//----
return(0) ;
}
//+------------------------------------------------------------------+
//| Fonction personnalisée de désinitialisation de l'indicateur |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("R") ;
//----
return(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int start()
{
//----
Tab1dim[2]={"tab1-c0","tab1C1"};
string affich=Tab1dim[0] ;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 ) ;
ObjectSet ("A1", OBJPROP_CORNER,Coin ) ;
ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col ) ;
ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne ) ;
ObjectSetText("A1",affich,TailCar, FontCar , Couleur ) ;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
Alerte(affich) ;
//----
return(0) ;
}
//+------------------------------------------------------------------+Merci d'avance.
...
Essayez-le comme ceci( l'initialisation du tableau est faite différemment) :
//| !XTEST sur arrays.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_chart_window
extern int Coin = 1 ;
extern int X_Col = 10 ;
extern int Y_Ligne = 10 ;
extern string FontCar = "Arial" ;
extern int TailCar = 14 ;
extern color Couleur = Lime ;
extern int X = 1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
string Tab1dim[] = {"tab1-c0","tab1C1"};
string Tab2dim[2,2];
string Tab3dim[2,2,2];
string Tab4dim[2,2,2,2];
// 5eme Dimension de tableau non autorisée . int Tab5dim[20,20,20,80,2];
int init()
{
//---- indicators
string Tab1dim[2]={"tab1-c0","tab1C1"};
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("A1");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
string affich=Tab1dim[0];
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 );
ObjectSet ("A1", OBJPROP_CORNER,Coin );
ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col );
ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne );
ObjectSetText("A1",affich,TailCar, FontCar , Couleur );
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//----
return(0);
}
//+------------------------------------------------------------------+
Bonjour messieurs,
J'essaie juste de récupérer une cellule d'un tableau dans une ligne d'écran ( même résultat message Alert), il manque quelque chose c'est sûr, mais toute la journée dessus et je ne comprends pas pourquoi....
De l'aide serait la bienvenue ... ...
C'est ici :
Merci d'avance.Essayez-le comme ceci (l'initialisation du tableau est faite différemment) :
//+------------------------------------------------------------------+
//| !XTEST sur arrays.mq4 |
//| |**************
Merci beaucoup, ça marche bien, mais je ne comprends pas pourquoi c'est nécessaire, car normalement on pourrait déclarer, ou dans la portée globale, ou dans une fonction, quelque chose comme ce qu'ils ont écrit dans le manuel : double Tab2Dim[2*n-3] ; ou alors
int [] values =new int[3] ;
valeurs[0]=5 ;
values[1]=values[0]*2;
values[2]=values[1]*2;
mais c'est bien pour ma fin de journée, merci monsieur.
...
Vous pouvez partiellement surmonter ce problème avec la fonction ArrayResize() (de cette façon, vous pouvez avoir des tableaux de taille dynamique).
Le problème est que ArrayResize() ne fonctionne que pour les tableaux à une seule dimension et la première dimension d'un tableau (par exemple, si vous avez array[][2], vous pouvez le redimensionner avec ArrayResize() en quelque chose comme array[anySize][2]). Toute autre dimension (à partir de la deuxième dimension des tableaux) doit être d'une taille constante connue au moment de la compilation.
Merci beaucoup, ça marche bien, mais je ne comprends pas pourquoi c'est nécessaire car normalement on pourrait déclarer, ou dans la portée globale, ou dans une fonction, quelque chose comme ce qu'ils ont écrit dans le manuel : double Tab2Dim[2*n-3] ; ou encore
int [] values =new int[3] ;
values[0]=5 ;
values[1]=values[0]*2;
values[2]=values[1]*2;
mais c'est bien pour ma fin de journée, merci monsieur.Aide sur mon indicateur de bande
Bonjour à tous,
Après avoir essayé de nombreux indicateurs de bande, tels que jband, tmaband, etc. J'ai finalement pris la décision d'écrire mon propre indicateur de bande,
La pièce jointe que vous trouverez est mon indicateur de bande, mais quand EA l'appelle la ligne de bande basse donne un diviseur de zéro, j'ai regardé mon code il n'y a pas de diviseur de zéro là-dedans,
Si vous avez une idée ou une expérience comme celle-ci, s'il vous plaît laissez-moi aider à résoudre le problème.
Merci d'avance....
...
Sans la source (ou sans le code pour appeler l'indicateur personnalisé) il est impossible de dire quoi que ce soit. Si votre indicateur fonctionne, alors l'erreur se trouve dans votre EA.
Bonjour à tous,
Après avoir essayé de nombreux indicateurs de bande, tels que jband, tmaband, etc. J'ai finalement pris la décision d'écrire mon propre indicateur de bande,
Vous trouverez ci-joint mon indicateur de bande, mais lorsque l'EA l'appelle, la ligne de bande basse donne un diviseur nul, j'ai regardé mon code, il n'y a pas de diviseur nul,
Si vous avez une idée ou une expérience comme celle-ci, s'il vous plaît laissez-moi aider à résoudre le problème.
merci d'avance....Besoin d'aide pour coder un EA de croisement de MA
Bonjour à tous,
Je me demande si quelqu'un pourrait m'aider à coder un EA de croisement de MA afin que je puisse l'utiliser lorsque je suis loin de l'ordinateur.
L'idée est la suivante.
Graphique 1 minute - 3 EMA et 8 SMA
Si la 3 EMA passe en dessous de la 8 SMA, vendre la paire de devises avec un TP et un SL prédéfinis dans les paramètres.
Si la 3 EMA passe au-dessus de la 8 SMA, achetez la paire de devises avec un TP et un SL prédéfinis selon les paramètres.
Je ne sais pas s'il est possible de coder une MA ea aussi simple mais j'apprécierais beaucoup si quelqu'un pouvait me donner un coup de main.
Merci d'avance !
...
Avez-vous consulté ce fil de discussion : https://www.mql5.com/en/forum/general?
Bonjour à tous,
Je me demande si quelqu'un pourrait m'aider à coder un ea de croisement de MA afin que je puisse l'utiliser lorsque je suis loin de l'ordinateur.
L'idée est la suivante.
Graphique 1 minute - 3 EMA et 8 SMA
Si la 3 EMA passe en dessous de la 8 SMA, vendre la paire de devises avec un TP et un SL prédéfinis dans les paramètres.
Si la 3 EMA passe au-dessus de la 8 SMA, achetez la paire de devises avec un TP et un SL prédéfinis selon les paramètres.
Je ne sais pas s'il est possible de coder une MA ea aussi simple mais j'apprécierais beaucoup si quelqu'un pouvait me donner un coup de main.
Merci d'avance !Bonjour à tous,
après avoir essayé de nombreux indicateurs de bande, tels que jband, tmaband, etc. J'ai finalement pris la décision d'écrire mon propre indicateur de bande,
Vous trouverez ci-joint mon indicateur de bande, mais lorsque EA l'appelle, la ligne de bande basse donne un diviseur de zéro, j'ai regardé mon code, il n'y a pas de diviseur de zéro,
Si vous avez une idée ou une expérience comme celle-ci, s'il vous plaît laissez-moi aider à résoudre le problème.
merci d'avance....Voici le code pour la bande ind.
L'EA appelle le signal moyen et haut, mais la bande basse est le problème pour moi,
//+------------------------------------------------------------------+
//| IndicatorPlan.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| Plate-forme de trading MetaTrader 5 / MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- dessin de l'indicateur dans la fenêtre principale
#property indicator_chart_window
//---- nombre de tampons d'indicateur
#property indicator_buffers 3
//---- couleur de l'indicateur
#property indicator_color1 Gold
#property indicator_color2 Magenta
#property indicator_color3 BlueViolet
//---- PARAMÈTRES D'ENTRÉE DE L'INDICATEUR
extern int MBand_Period = 15 ;
extern int UpBand_Period = 15 ;
extern int DnBand_Period = 15 ;
extern int ABand_Timeframe =15 ;
extern int shift =0 ;
//---- tampons d'indicateurs
double Ind_Buffer0[] ;
double Ind_Buffer1[] ;
double Ind_Buffer2[] ;
double Ind_Buffer3[] ;
double Ind_Buffer4[] ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)) ;
IndicatorShortName("ABand "+ABand_Timeframe) ;
//---- définissant le style d'exécution du graphique
SetIndexStyle(0, DRAW_LINE) ;
SetIndexLabel(0, "MBand "+MBand_Period) ;
SetIndexStyle(2, DRAW_LINE) ;
SetIndexLabel(2, "UpBand "+UpBand_Period) ;
SetIndexStyle(1, DRAW_LINE) ;
SetIndexLabel(1, "DnBand "+DnBand_Period) ;
//---- 3 tampons indicateurs sont utilisés pour le calcul
IndicatorBuffers(5) ;
SetIndexBuffer(0, Ind_Buffer0) ;
SetIndexBuffer(1, Ind_Buffer1) ;
SetIndexBuffer(2, Ind_Buffer2) ;
SetIndexBuffer(3, Ind_Buffer3) ;
SetIndexBuffer(4, Ind_Buffer4) ;
//---- óñòàíîâêà íîìåğà áàğà, íà÷èíàÿ ñ êîòîğîãî áóäåò îòğèñîâûâàòüñÿ èíäèêàòîğ
//---- Óñòàíîâêà ôîğìàòà òî÷íîñòè îòîáğàæåíèÿ èíäèêàòîğà
IndicatorDigits(Digits) ;
//---- ğàçìåğ êàíàëà â ïóíêòàõ
//---- fin de l'initialisation
return(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int start()
{
//---- Ïğîâåğêà êîëè÷åñòâà áàğîâ íà äîñòàòî÷íîñòü äëÿ äàëüíåéøåãî ğàñ÷¸òà
if(Bars < MBand_Period + UpBand_Period + DnBand_Period)
return(0) ;
//---- İÌÓËßÖÈß ÈÍÄÈÊÀÒÎĞÍÛÕ ÁÓÔÅĞÎÂ
if(ArraySize(Ind_Buffer0) < Bars)
{
ArraySetAsSeries(Ind_Buffer0, false) ;
ArraySetAsSeries(Ind_Buffer1, false) ;
ArraySetAsSeries(Ind_Buffer2, false) ;
ArraySetAsSeries(Ind_Buffer3, false) ;
ArraySetAsSeries(Ind_Buffer4, false) ;
//----
ArrayResize(Ind_Buffer0, Bars) ;
ArrayResize(Ind_Buffer1, Bars) ;
ArrayResize(Ind_Buffer2, Bars) ;
ArrayResize(Ind_Buffer3, Bars) ;
ArrayResize(Ind_Buffer4, Bars) ;
//----
ArraySetAsSeries(Ind_Buffer0, true) ;
ArraySetAsSeries(Ind_Buffer1, true) ;
ArraySetAsSeries(Ind_Buffer2, true) ;
ArraySetAsSeries(Ind_Buffer3, true) ;
ArraySetAsSeries(Ind_Buffer4, true) ;
}
//----+ ÂÂÅÄÅÍÈÅ ÑÒÀÒÈ×ÅÑÊÎÉ ÖÅËÎÉ ÏÅĞÅÌÅÍÍÎÉ ÏÀÌßÒÈ
static int IndCounted ;
//----+ Insertion de variables à virgule flottante
double Resalt0, Resalt1, Resalt2 ;
double prix ;
//----+ Insertion de variables entières et obtention de barres calculées
int limite, MaxBar,bar, counted_bars = IndicatorCounted() ;
int i,k ;
//---- vérification d'éventuelles erreurs
if(counted_bars < 0)
return(-1) ;
//---- la dernière barre calculée doit être recalculée
if(counted_bars > 0)
counted_bars-- ;
//---- définissant le numéro de la barre la plus ancienne,
// à partir duquel les nouvelles barres seront recalculées.
limit = Bars - counted_bars - 1 ;
//---- définissant le numéro de la barre la plus ancienne,
// à partir duquel les nouvelles barres seront recalculées.
MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period) ;
//---- initialisation de zéro
if(limite > MaxBar)
{
limit = MaxBar ;
for(bar = Bars - 1 ; bar >= MaxBar ; bar--)
{
Ind_Buffer0 = 0.0 ;
Ind_Buffer1 = 0.0 ;
Ind_Buffer2 = 0.0 ;
Ind_Buffer3 = 0.0 ;
Ind_Buffer4 = 0.0 ;
}
}
//----+ LE PREMIER CYCLE DE CALCUL DE L'INDICATEUR
i=Bars-DnBand_Period ;
if(counted_bars>DnBand_Period) i=Bars-counted_bars-1 ;
while(i>=0)
{
i=Bars-DnBand_Period ;
if(counted_bars>DnBand_Period) i=Bars-counted_bars-1 ;
alors que(i>=0)
{
double min=1000000 ;
k=i+DnBand_Period-1 ;
alors que(k>=i)
{
price=Resalt1[k] ;
if(min>price) min=price ;
k-- ;
}
Ind_Buffer1=min ;
i-- ;
}
}
for(i=0 ; i<limit ; i++)
{
// Ici code de calcul de la variable Resalt0
// basé sur les valeurs du tampon UpBand[]
// et de la variable externe0
Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i) ;
}
//----+ LE DEUXIÈME CYCLE DE CALCUL DE L'INDICATEUR
{
i=Bars-UpBand_Period ;
if(counted_bars>UpBand_Period) i=Bars-counted_bars-1 ;
while(i>=0)
{
double max=-1000000 ;
k=i+Période de la bande supérieure-1 ;
alors que(k>=i)
{
price=Resalt2[k] ;
si(max<prix) max=prix ;
k-- ;
}
Ind_Buffer2=max ;
i-- ;
}
}
//---- ligne de signal est une simple moyenne de movimg
for(i=0 ; i<limit ; i++)
{
// Ici code de calcul de la variable Resalt0
// basé sur les valeurs du buffer UpBand[]
// et de la variable externe0
Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i) ;
}
//----+ LE CYCLE PRINCIPAL DE CALCUL DE L'INDICATEUR
//---- ligne de signal est une moyenne mobile simple
for(i=0 ; i<limit ; i++)
{
// Ici code de calcul de la variable Resalt0
// basé sur les valeurs du buffer UpBand[]
// et de la variable externe0
Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2 ;
}
return(0) ;
}
//+------------------------------------------------------------------+
...
Pouvez-vous nous dire comment vous utilisez l'appel iCustom() ?
Voici le code pour la bande ind.
L'EA appelle le signal de milieu et de haut, mais la bande basse est le problème pour moi,
//+------------------------------------------------------------------+
//| IndicatorPlan.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| Plate-forme de trading MetaTrader 5 / MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- dessin de l'indicateur dans la fenêtre principale
#property indicator_chart_window
//---- nombre de tampons d'indicateur
#property indicator_buffers 3
//---- couleur de l'indicateur
#property indicator_color1 Gold
#property indicator_color2 Magenta
#property indicator_color3 BlueViolet
//---- PARAMÈTRES D'ENTRÉE DE L'INDICATEUR
extern int MBand_Period = 15 ;
extern int UpBand_Period = 15 ;
extern int DnBand_Period = 15 ;
extern int ABand_Timeframe =15 ;
extern int shift =0 ;
//---- tampons d'indicateurs
double Ind_Buffer0[] ;
double Ind_Buffer1[] ;
double Ind_Buffer2[] ;
double Ind_Buffer3[] ;
double Ind_Buffer4[] ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)) ;
IndicatorShortName("ABand "+ABand_Timeframe) ;
//---- définissant le style d'exécution du graphique
SetIndexStyle(0, DRAW_LINE) ;
SetIndexLabel(0, "MBand "+MBand_Period) ;
SetIndexStyle(2, DRAW_LINE) ;
SetIndexLabel(2, "UpBand "+UpBand_Period) ;
SetIndexStyle(1, DRAW_LINE) ;
SetIndexLabel(1, "DnBand "+DnBand_Period) ;
//---- 3 tampons indicateurs sont utilisés pour le calcul
IndicatorBuffers(5) ;
SetIndexBuffer(0, Ind_Buffer0) ;
SetIndexBuffer(1, Ind_Buffer1) ;
SetIndexBuffer(2, Ind_Buffer2) ;
SetIndexBuffer(3, Ind_Buffer3) ;
SetIndexBuffer(4, Ind_Buffer4) ;
//---- óñòàíîâêà íîìåğà áàğà, íà÷èíàÿ ñ êîòîğîãî áóäåò îòğèñîâûâàòüñÿ èíäèêàòîğ
//---- Óñòàíîâêà ôîğìàòà òî÷íîñòè îòîáğàæåíèÿ èíäèêàòîğà
IndicatorDigits(Digits) ;
//---- ğàçìåğ êàíàëà â ïóíêòàõ
//---- fin de l'initialisation
return(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int start()
{
//---- Ïğîâåğêà êîëè÷åñòâà áàğîâ íà äîñòàòî÷íîñòü äëÿ äàëüíåéøåãî ğàñ÷¸òà
if(Bars < MBand_Period + UpBand_Period + DnBand_Period)
return(0) ;
//---- İÌÓËßÖÈß ÈÍÄÈÊÀÒÎĞÍÛÕ ÁÓÔÅĞÎÂ
if(ArraySize(Ind_Buffer0) < Bars)
{
ArraySetAsSeries(Ind_Buffer0, false) ;
ArraySetAsSeries(Ind_Buffer1, false) ;
ArraySetAsSeries(Ind_Buffer2, false) ;
ArraySetAsSeries(Ind_Buffer3, false) ;
ArraySetAsSeries(Ind_Buffer4, false) ;
//----
ArrayResize(Ind_Buffer0, Bars) ;
ArrayResize(Ind_Buffer1, Bars) ;
ArrayResize(Ind_Buffer2, Bars) ;
ArrayResize(Ind_Buffer3, Bars) ;
ArrayResize(Ind_Buffer4, Bars) ;
//----
ArraySetAsSeries(Ind_Buffer0, true) ;
ArraySetAsSeries(Ind_Buffer1, true) ;
ArraySetAsSeries(Ind_Buffer2, true) ;
ArraySetAsSeries(Ind_Buffer3, true) ;
ArraySetAsSeries(Ind_Buffer4, true) ;
}
//----+ ÂÂÅÄÅÍÈÅ ÑÒÀÒÈ×ÅÑÊÎÉ ÖÅËÎÉ ÏÅĞÅÌÅÍÍÎÉ ÏÀÌßÒÈ
static int IndCounted ;
//----+ Insertion de variables à virgule flottante
double Resalt0, Resalt1, Resalt2 ;
double prix ;
//----+ Insertion de variables entières et obtention de barres calculées
int limite, MaxBar,bar, counted_bars = IndicatorCounted() ;
int i,k ;
//---- vérification d'éventuelles erreurs
if(counted_bars < 0)
return(-1) ;
//---- la dernière barre calculée doit être recalculée
if(counted_bars > 0)
counted_bars-- ;
//---- définissant le numéro de la barre la plus ancienne,
// à partir duquel les nouvelles barres seront recalculées.
limit = Bars - counted_bars - 1 ;
//---- définissant le numéro de la barre la plus ancienne,
// à partir duquel les nouvelles barres seront recalculées.
MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period) ;
//---- initialisation de zéro
if(limite > MaxBar)
{
limit = MaxBar ;
for(bar = Bars - 1 ; bar >= MaxBar ; bar--)
{
Ind_Buffer0 = 0.0 ;
Ind_Buffer1 = 0.0 ;
Ind_Buffer2 = 0.0 ;
Ind_Buffer3 = 0.0 ;
Ind_Buffer4 = 0.0 ;
}
}
//----+ LE PREMIER CYCLE DE CALCUL DE L'INDICATEUR
i=Bars-DnBand_Period ;
if(counted_bars>DnBand_Period) i=Bars-counted_bars-1 ;
while(i>=0)
{
i=Bars-DnBand_Period ;
if(counted_bars>DnBand_Period) i=Bars-counted_bars-1 ;
alors que(i>=0)
{
double min=1000000 ;
k=i+DnBand_Period-1 ;
alors que(k>=i)
{
price=Resalt1[k] ;
if(min>price) min=price ;
k-- ;
}
Ind_Buffer1=min ;
i-- ;
}
}
for(i=0 ; i<limit ; i++)
{
// Ici code de calcul de la variable Resalt0
// basé sur les valeurs du tampon UpBand[]
// et de la variable externe0
Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i) ;
}
//----+ LE DEUXIÈME CYCLE DE CALCUL DE L'INDICATEUR
{
i=Bars-UpBand_Period ;
if(counted_bars>UpBand_Period) i=Bars-counted_bars-1 ;
while(i>=0)
{
double max=-1000000 ;
k=i+Période de la bande supérieure-1 ;
alors que(k>=i)
{
price=Resalt2[k] ;
si(max<prix) max=prix ;
k-- ;
}
Ind_Buffer2=max ;
i-- ;
}
}
//---- ligne de signal est une simple moyenne de movimg
for(i=0 ; i<limit ; i++)
{
// Ici code de calcul de la variable Resalt0
// basé sur les valeurs du buffer UpBand[]
// et de la variable externe0
Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i) ;
}
//----+ LE CYCLE PRINCIPAL DE CALCUL DE L'INDICATEUR
//---- ligne de signal est une moyenne mobile simple
for(i=0 ; i<limit ; i++)
{
// Ici code de calcul de la variable Resalt0
// basé sur les valeurs du buffer UpBand[]
// et de la variable externe0
Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2 ;
}
return(0) ;
}
//+------------------------------------------------------------------+