Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 9

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
J'essaie de donner un sens à tout ça. Donc, à votre avis, l'option correcte est SVA_03, n'est-ce pas ?
Oui, je suppose. Mais _02 est définitivement faux.
Hmmm... j'ai trouvé une erreur en moi, maintenant il n'y a presque plus de divergence, voici l'original
//| SVA_04.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
//---- input parameters
extern int RSIPeriod=14;
extern int Levl=50;
extern int TF=0;
//---- buffers
double MABuffer[];
double PosBuffer[];
double NegBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers(1);
SetIndexBuffer(0,MABuffer);
SetIndexBuffer(1,PosBuffer);
SetIndexBuffer(2,NegBuffer);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
//----
//---- name for DataWindow and indicator subwindow label
// short_name="RSI("+IntegerToString(RSIPeriod)+")";
short_name="RSI("+RSIPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"U");
SetIndexLabel(2,"D");
return(0);
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double rel,negative,positive,sma,x,y,Pos,Neg;
//----
if(Bars<=RSIPeriod) return(0);
if(TF!=0)
{
string name=WindowExpertName();
for(i=0; i<Bars-counted_bars+1; i++)
{
int barIndex=iBarShift(NULL,TF,Time[i],false);
MABuffer[i]=iCustom(Symbol(),TF,name,RSIPeriod,Levl,0,0,barIndex);
}
return(0);
}
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double sumn=0.0,sump=0.0;
if(i==Bars-RSIPeriod-1)
{
int k=Bars-2;
//---- initial accumulation
while(k>=i)
{
rel=Close[k]-Close[k+1];
if(rel>0) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
//---- smoothed moving average
rel=Close[i]-Close[i+1];
if(rel>0) sump=rel;
else sumn=-rel;
positive=(PosBuffer[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(NegBuffer[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
}
PosBuffer[i]=positive;
NegBuffer[i]=negative;
i--;
}
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
x=PosBuffer[i+1];
y=NegBuffer[i+1];
if(x>0)sma=Close[i+1]+x;
else sma=Close[i+1]-y;
MABuffer[i]=sma;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Voici la version de SVA_03 avec la correction.
//| SVA_03.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//---- input parameters
extern int RSIPeriod=14;
extern int Levl=50;
extern int TF=0;
//---- buffers
double MABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers(1);
SetIndexBuffer(0,MABuffer);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
//----
//---- name for DataWindow and indicator subwindow label
// short_name="RSI("+IntegerToString(RSIPeriod)+")";
short_name="RSI("+RSIPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
return(0);
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double rel,negative,positive,sma,x,y,Pos,Neg;
//----
if(Bars<=RSIPeriod) return(0);
if(TF!=0)
{
string name=WindowExpertName();
for(i=0; i<Bars-counted_bars+1; i++)
{
int barIndex=iBarShift(NULL,TF,Time[i],false);
MABuffer[i]=iCustom(Symbol(),TF,name,RSIPeriod,Levl,0,0,barIndex);
}
return(0);
}
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double sumn=0.0,sump=0.0;
if(i==Bars-RSIPeriod-1)
{
int k=Bars-2;
//---- initial accumulation
while(k>=i)
{
rel=Close[k]-Close[k+1];
if(rel>0) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
//---- smoothed moving average
rel=Close[i]-Close[i+1];
if(rel>0) sump=rel;
else sumn=-rel;
positive=(Pos*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(Neg*(RSIPeriod-1)+sumn)/RSIPeriod;
}
x=Pos;
y=Neg;
Pos=positive;
Neg=negative;
if(x>0)sma=Close[i+1]+x;
else sma=Close[i+1]-y;
MABuffer[i]=sma;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
il a été remplacé
y=negative;
à .
y=Neg;
Bonjour !
Au secours ! J'ai besoin d'un code pour ouvrir un ordre en attente. Et dans 20 minutes après l'ouverture de l'ordre, s'il n'est pas fermé, le SL passera à 50 pips. Merci !
Bon après-midi
Veuillez m'aider à répondre à une question très simple (probablement). Il existe une fonction standard :
Que signifie "const void &" et comment l'utiliser ? ? Même une simple tentative d'écrire une fonction similaire conduit à une erreur de compilation :
return ArraySize(array);
}
Erreur de compilation :'const' - utilisation illégale du type 'void'.
Comment utiliser correctement "const void &" lorsque j'écris mon propre code? Est-il possible de le faire ?
Bon après-midi
Veuillez m'aider à répondre à une question très simple (probablement). Il existe une fonction standard :
Que signifie "const void &" et comment l'utiliser ? ? Même une simple tentative d'écrire une fonction similaire conduit à une erreur de compilation :
return ArraySize(array);
}
Erreur de compilation :'const' - utilisation illégale du type 'void'.
Comment utiliser correctement "const void &" lorsque j'écris mon propre code? Ou peut-on l'utiliser tout court ?
Remplacez void par le type de données qui doit stocker le tableau. La fonction standard est conçue comme un modèle.
En fait, cette fonction système est une fonction surchargée, et l'implémentation complète d'une telle surcharge est cachée au développeur de MQL4 :
intArraySize(
void&array[]// tableau à vérifier
);
En fait, le compilateur MQL4 insère une implémentation nécessaire pour chaque appel de cette fonction, par exemple, pour les tableaux de type entier comme ceci
intArraySize(
int&array[]// tableau avec des éléments de type int
);
Et pour un tableau de type MqlRates permettant de travailler avec des cotations au format de données historiques, la fonction ArraySize() peut être représentée comme suit
intArraySize(
MqlRates&array[]// tableau rempli de valeurs de type MqlRates
);
Bonjour !
Au secours ! J'ai besoin d'un code qui ouvre un ordre en attente. Et dans 20 minutes après l'ouverture de l'ordre, s'il n'est pas fermé, le SL passera à 50 pips. Merci !
Remplacez void par le type de données qui doit stocker le tableau. La fonction standard est conçue comme un modèle.
En fait, cette fonction système est une fonction surchargée, et l'implémentation complète d'une telle surcharge est cachée au développeur de programmes dans MQL4.
Ai-je bien compris qu'en MQL4/MQL5, la construction "const void &"... - est en fait une notation symbolique pour la référence et en pratique, elle ne peut pas être utilisée dans vos propres fonctions ?
Merci d'avance
Ai-je bien compris qu'en MQL4/MQL5, la structure "const void &"... - est en fait une notation symbolique pour le livre de référence et en pratique, elle ne peut pas être utilisée dans vos propres fonctions ?
Merci d'avance