Aide à la mise à niveau vers MetaTrader 5 sans perte de données - page 12
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
Un peu de peinture sur les niveaux de Murray
Bon après-midi. Les personnes intelligentes doivent vraiment traduire l'indicateur de corrélation dans MT5.
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
#propriété indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrDeepSkyBlue
#property indicator_chart_window
double UpBuffer[] ;
double DnBuffer[] ;
int OnInit()
{
SetIndexBuffer(0,UpBuffer) ;
SetIndexBuffer(1,DnBuffer) ;
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE) ; PlotIndexSetInteger(0,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3) ; PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE) ;
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE) ; PlotIndexSetInteger(1,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE) ;
retour(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,const int prev_calculated,const datetime &time[],const double &open[],const double &high[],const double &low[],const double &close[],const long &tick_volume[],const long &volume[],const int &spread[])
{ int i ;
for(i=1000;i>0;i--)
{ UpBuffer[i]=1.428 ; DnBuffer[i]=1.41 ;
}
retour(0) ;
}
Pourquoi les lignes ne sont-elles pas tracées ?
Ça devrait être quelque chose comme ça, croyez-le ou non, ça marche.
Cet indicateur a été téléchargé. Lors de la compilation, une erreur s'est produite à la ligne 228. Je n'ai pas pu faire d'image, alors croyez-moi sur parole. Je veux utiliser l'indicateur que j'utilise sur MT5, c'est pourquoi je suis ici, je n'ai pas pu le faire moi-même. Peut-être que tu peux le réécrire pour moi. Merci.
Aidez-moi, s'il vous plaît.
J'ai essayé de réécrire WATL, j'ai presque réussi. Les lignes ne sont pas tracées correctement, c'est à cause d'un calcul LWMA tordu. Et surtout, le graphique réserve parfois des surprises :
Une ligne de points est parfois identique aux points sur lesquels le WATL est calculé.
Ou parfois, le graphique est tourné et tous les points sont dupliqués sur la barre adjacente.
Merci d'avance pour toute aide =)
Peut-être que quelqu'un a vu cet indicateur dans des transformations MQL5 ? http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=67
Bonjour,
Je ne pouvais pas faire ce que je voulais.
J'ai un tampon de mouillage différent dans ma tête, j'ai une paire différente, que celle que j'avais dans ma tête.
[code]
#propriété indicator_separate_window
#property indicator_buffers 6
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#propriété indicator_color1 clrBlue
#property indicator_color2 clrRed
#propriété indicator_style1 STYLE_SOLID
#propriété indicator_style2 STYLE_SOLID
entrée int period_1 = 20 ;
entrée int period_2 = 100 ;
entrée ENUM_MA_METHOD ma_method = MODE_SMA ;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE ;
double ExtMapBuffer1[] ;
double ExtMapBuffer2[] ;
int EMHandle1=0 ;
int EMHandle2=0 ;
int EMHandle11=0 ;
int EMHandle22=0 ;
MqlParam params[] ; // Structure pour la sauvegarde des paramètres de l'indicateur
double ma1[],ma2[],ma3[],ma4[];//tampons temporels
int OnInit()
{
//--- cartographie des tampons indicateurs
SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA) ;
SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA) ;
SetIndexBuffer(2, ma1, INDICATOR_DATA) ;
SetIndexBuffer(3, ma2, INDICATOR_DATA) ;
SetIndexBuffer(4, ma3, INDICATOR_DATA) ;
SetIndexBuffer(5, ma4, INDICATOR_DATA) ;
PlotIndexSetInteger(0, PLOT_SHIFT, 0) ;
PlotIndexSetInteger(1, PLOT_SHIFT, 0) ;
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID) ;
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID) ;
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue) ;
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed) ;
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE) ;
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE) ;
IndicatorSetString(INDICATOR_SHORTNAME, "2_2_MA") ;
//--- définir la précision
IndicatorSetInteger(INDICATOR_DIGITS,4) ;
//---
ArrayResize(params,4) ;
params[0].type =TYPE_INT ;
params[0].integer_value=period_1 ;
// Décalage
params[1].type =TYPE_INT ;
params[1].integer_value=0 ;
// Méthode de calcul : moyenne simple
params[2].type =TYPE_INT ;
params[2].integer_value=MODE_SMA ;
// type de prix pour le calcul : prix de clôture
params[3].type =TYPE_INT ;
params[3].integer_value=PRICE_CLOSE ;
EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params ;)
ArrayResize(params,4) ;
params[0].type =TYPE_INT ;
params[0].integer_value=period_2 ;
params[1].type =TYPE_INT ;
params[1].integer_value=0 ;
params[2].type =TYPE_INT ;
params[2].integer_value=MODE_SMA ;
params[3].type =TYPE_INT ;
params[3].integer_value=PRICE_CLOSE ;
EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params ;)
ArrayResize(params,4) ;
params[0].type =TYPE_INT ;
params[0].integer_value=period_1 ;
params[1].type =TYPE_INT ;
params[1].integer_value=0 ;
params[2].type =TYPE_INT ;
params[2].integer_value=MODE_SMA ;
params[3].type =TYPE_INT ;
params[3].integer_value=PRICE_CLOSE ;
EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params ;)
ArrayResize(params,4) ;
params[0].type =TYPE_INT ;
params[0].integer_value=period_2 ;
params[1].type =TYPE_INT ;
params[1].integer_value=0 ;
params[2].type =TYPE_INT ;
params[2].integer_value=MODE_SMA ;
params[3].type =TYPE_INT ;
params[3].integer_value=PRICE_CLOSE ;
EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params ;)
retour(0) ;
}
int OnCalculate (const int rates_total,// taille du tableau price[] ;
const int prev_calculated,// nombre de barres disponibles ;sur l'appel précédent ;
const int begin,// quel index dans le tableau price[] commencera les données valides ;
const double &price[]) // tableau, sur lequel l'indicateur sera calculé ;
{
int i ;
ArraySetAsSeries(ma1, true) ;
ArraySetAsSeries(ma2, true) ;
ArraySetAsSeries(ma3, true) ;
ArraySetAsSeries(ma4, true) ;
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());}
int limite ;
//if(prev_calculated<1)
//limite=period_1 ;
limit=prev_calculated-1 ;
for( i=0 ; i<limit ; i++)
ExtMapBuffer1[0]=calculé ;
ExtMapBuffer2[0]=calculer ;
Commentaire(
"\n=====================",
"\n ma1[0] : ",DoubleToString(ma1[0],5),
"\n ma2[0] : ",DoubleToString(ma2[0],5),
"\n ma3[0] : ",DoubleToString(ma3[0],5),
"\n ma4[0] : ",DoubleToString(ma4[0],5),
"\n ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
) ;
retour(taux_total) ;
}
void OnDeinit(const int reason)
{
Commentaire (") ;
}
[/code]
Lorsque 0 au lieu de i (pour une barre) je vois le résultat, lorsque la barre (courant = i) montre que je ne peux pas trouver de données pour la deuxième paire.
Le graphique de la paire est ouvert, dans la fenêtre du marché, je ne sais pas où je confonds les choses.
Deux paires différentes dans un seul indicateur - alors où est mon erreur ?
J'essaie de mettre 0 et de voir le résultat sous forme de commentaire, mais je n'ai pas de ligne.
Pour clarifier : j'ai mis ma1 et ma2 sur une paire et ma3 et ma4 sur l'autre paire.
Merci.