comment ajouter le code de l'indicateur dans le code du conseiller-expert ?

 

comme je l'ai mentionné plus haut, je souhaite faire une ea avec un codage stochastique.

Le problème est de savoir comment ajouter le code de l'indicateur dans l'ea ?

 
albert_lim83:

le problème est de savoir comment ajouter un code indicateur dans un ea ?

Vous pouvez, avec certaines limites, mais utiliser iCustom est beaucoup plus facile.

Mais si vous voulez vraiment le faire : Transférer un code d'indicateur dans un code de conseiller expert. Structure des indicateurs - MQL4 Articles

 

Pour le stochastique, ce n'est pas nécessaire iCustom

double iStochastic( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
Calcule l'oscillateur stochastique et renvoie sa valeur.
Paramètres :
symbole - Symbole dont les données doivent être utilisées pour calculer l'indicateur. NULL signifie le symbole actuel.
timeframe - Cadre temporel. Il peut s'agir de n'importe quelle valeur de l'énumération Timeframe. 0 signifie la période actuelle du graphique.
%Kperiod - Période de la ligne %K.
%Dperiod - Période de la ligne %D.
ralentissement - Valeur de ralentissement.
méthode - Méthode MA. Il peut s'agir de n'importe quelle valeur de l'énumérationMoving Average method.
champ_prix - Paramètre du champ de prix. Peut être l'une de ces valeurs : 0 - Bas/Haut ou 1 - Fermé/Fermé.
mode - Indice de la ligne de l'indicateur. Il peut être l'une des valeurs de l 'énumération Indicators line identifiers.
shift - Index de la valeur prise dans le tampon de l'indicateur (décalage par rapport à la barre actuelle d'un nombre donné de périodes).
Exemple :
 if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)) return(0) ;
Une aide au codage est ici pour trouver l'index alphabétique des fonctions MQL4 https://www.mql5.com/en/forum/122679.

 

comment ajouter l'indicateur rvi dans l'ea ?

En utilisant le même code que pour l'ajout du stochastique?

 
Lisez la documentation
 
albert_lim83:

comment ajouter l'indicateur rvi dans l'ea ?

En utilisant le même code que pour l'ajout du stochastique ?


iCustom() ou iRVI()

 
albert_lim83:

comment ajouter l'indicateur rvi dans l'ea ?

J'utilise également le même code que pour l'ajout du stochastique ?


  1. Explication détaillée de iCustom - MQL4 forum
 

J'essaie d'ajouter l'indicateur RVI dans escape EA, mais échec...

il montre

expression sur la portée globale non autorisée

définition defonction inattendue

parenthèses déséquilibrées

comment corriger ces erreurs ?

 

Voici le code que j'ai fait ce matin.

Quelqu'un peut-il m'aider à le réparer ?


//+------------------------------------------------------------------+
int init()
{
//---- cartographie des tampons d'indicateurs
SetIndexBuffer(0,Buffer) ;
SetIndexBuffer(1,SignalBuffer) ;
//---- ligne de l'indicateur
SetIndexStyle(0,DRAW_LINE) ;
SetIndexStyle(1,DRAW_LINE) ;
//---- paramètres de dessin
SetIndexDrawBegin(0,RVIPeriod+3) ;
SetIndexDrawBegin(1,RVIPeriod+7) ;
//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur
IndicatorShortName("RVI("+RVIPeriod+")") ;
SetIndexLabel(0, "RVI") ;
SetIndexLabel(1, "RVIS") ;
//---- initialisation terminée
retour(0) ;
}
{
double bid =MarketInfo(Symbol(),MODE_BID) ; // Demande la valeur de Bid
double ask =MarketInfo(Symbol(),MODE_ASK) ; // Demande de la valeur de Ask
double point =MarketInfo(Symbol(),MODE_POINT);//Requête de Point
return ; // Sortie de start()
if(AccountFreeMargin()<100)
Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin()) ;
return(0) ;
}

int start()
{
{
int i,j,nLimit,nCountedBars ;
double dValueUp,dValueDown,dNum,dDeNum ;
//----
if(Bars<=RVIPeriod+8) return(0) ;
//----
nCountedBars=IndicatorCounted() ;
//---- vérifier les erreurs éventuelles
if(nCountedBars<0) return(-1) ;
//---- dernière barre comptée sera recomptée
nLimit=Bars-RVIPeriod-4 ;
si(nCountedBars>RVIPeriod+4)
nLimit=Bars-nCountedBars ;
//---- RVI comptées dans le 1er tampon
for(i=0 ; i<=nLimit ; i++)
{
dNum=0.0 ;
dDeNum=0.0 ;
for(j=i ; j<i+RVIPeriod ; j++)

{
dValueUp=((Close[j]-Open[j])+2*(Close[j+1]-Open[j+1])+2*(Close[j+2]-Open[j+2])+(Close[j+3]-Open[j+3]))/6;
dValueDown=((High[j]-Low[j])+2*(High[j+1]-Low[j+1])+2*(High[j+2]-Low[j+2])+(High[j+3]-Low[j+3]))/6;
dNum+=dValueUp ;
dDeNum+=dValueDown ;
}
si(dDeNum!=0.0)
Buffer[i]=dNum/dDeNum ;
sinon
Buffer[i]=dNum ;
}
//---- ligne de signal comptée dans le 2ème tampon
nLimit=Bars-RVIPeriod-7 ;
si(nCountedBars>RVIPeriod+8)
nLimit=Bars-nCountedBars+1 ;
for(i=0 ; i<=nLimit ; i++)
SignalBuffer[i]=(Buffer[i]+2*Buffer[i+1]+2*Buffer[i+2]+Buffer[i+3])/6;
//----
return(0) ;
}
{
OrderSend(Symbole,LotSize,Ask,StopLoss,TakeProfit,0,0) ;
si (Close<i)
OpenBuy() ;
retour(0) ;

OrderSend(Symbole,LotSize,Bid,StopLoss,TakeProfit,0,0) ;
si (Close>i)
OpenSell() ;
return(0) ;
}


double GetSizeLot() { return(LotSize) ; }
double GetTakeProfitBuy() { return(Ask+TakeProfit*Point) ; }
double GetTakeProfitSell() { return(Bid-TakeProfit*Point) ; }
double GetStopLossBuy() { return(Bid-StopLoss*Point) ; }
double GetStopLossSell() { return(Ask+StopLoss*Point) ; }
string GetCommentForOrder() { return();}

return(0) ; }

 

Avant de poster, lisez les autres fils de discussion... vous y verrez de nombreuses demandes comme celle-ci :

S'il vous plaît utilisez ceci pour poster le code . . il est plus facile à lire.

 
albert_lim83:

Voici le code que j'ai fait ce matin.

Quelqu'un peut-il m'aider à le réparer ?

Vous ne pouvez pas utiliser le code d'un indicateur dans un EA... lisez le fil de discussion dont j'ai posté le lien. Vous devez avoir un nombre égal de { et } et un nombre égal de ( et )... ne l'ai-je pas déjà dit une fois ? https://www.mql5.com/en/forum/139447 Je suppose que vous ne prenez pas la peine d'apprendre des autres messages ?
Raison: