Savez-vous comment construire un indicateur pour le marché ?
J'ai un fichier avec l'extension .mq5 et quelques fichiers d'inclusion avec l'extension .mqh.
D'après ce que j'ai compris, il est impossible de joindre un fichier .mqh à un fichier .mqh via les ressources. Dois-je vraiment tout convertir en un seul fichier manuellement ?
Et s'il y a une nouvelle version : ? C'est fou +))))
Merci.
Vous envoyez le fichier compilé (.ex5) au Marché. Ce fichier contiendra déjà tous vos fichiers d'inclusion.
C'est ça le problème, l'EA plane sur un autre symbole. Et j'ai besoin de mettre à jour les cotations pour EURUSD.m
J'ai trouvé cette solution mais je ne pense pas qu'elle soit correcte
Ecrire le symbole EURUSD.m dans InInit pour m_symbol. Ou dites-moi ce que vous faites et comment vous le faites - pendant que j'essaie de jouer aux devinettes.
Comment la fonction TimeCurrent() peut-elle transmettre les valeurs des heures et des minutes aux variables afin qu'elles puissent travailler avec ces valeurs ?
Ou par exemple je veux passer les heures et les minutes avec la chaîne (12:15) et passer 12 et 15 aux variables. Comment faire ?
Comment la fonction TimeCurrent() peut-elle transmettre les valeurs des heures et des minutes aux variables afin que vous puissiez travailler avec ces valeurs ?
Ou par exemple je veux passer l'heure et les minutes avec la chaîne (12:15) et passer 12 et 15 aux variables. Comment faire ?
Bonjour, J'ai converti l'indicateur de Metatrader 4 à Metatrader 5, mais maintenant il montre les flèches dans les mauvais endroits comme dans Metatrader 4 sur l'échelle de temps minute. Ai-je fait une erreur quelque part ou est-ce à cause des différentes cotations sur le graphique en minutes des versions 4 et 5 du terminal d'un courtier ?
#property strict#property indicator_chart_window#property indicator_buffers2#property indicator_plots2#property indicator_color1clrBlue#property indicator_color2clrRed#property indicator_width11#property indicator_width21//+------------------------------------------------------------------+double SignalBufferRed[];
double SignalBufferBlue[];
datetime TimeAlert=0;
ENUM_TIMEFRAMES tf0,tf1,tf2,tf3,tf4,tf5; // Было интint S=0;
//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,SignalBufferBlue);
SetIndexBuffer(1,SignalBufferRed);
//--- задать рисование линии PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW);
//--- задание стиля для рисования линии PlotIndexSetInteger(0,PLOT_ARROW,233);
//--- задать рисование линии PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_ARROW);
//--- задание стиля для рисования линии PlotIndexSetInteger(1,PLOT_ARROW,234);
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,5);
PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-5);
//--- установим в качестве пустого значения 0 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- установим в качестве пустого значения 0 PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
tf0=Period();
tf1=next_period(tf0+1);
tf2=next_period(tf1+1);
tf3=next_period(tf2+1);
tf4=next_period(tf3+1);
tf5=next_period(tf4+1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,// обработано баров на предыдущем вызове constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
limit=rates_total-prev_calculated-1;
if(rates_total<1) return(0);
double d=(high[1]-low[1]+high[2]-low[2])/2;
for(i=limit; i>=0; i--)
{
if(S<1 && NormalizeDouble(open[i]-close[i],_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))-iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))-iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))-iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))-iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))-iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)),_Digits)<0)
{
SignalBufferBlue[i]=low[i]-d;
...
S=1;
}
if(S>-1 && NormalizeDouble(open[i]>close[i],_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))-iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))-iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))-iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))-iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))-iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)),_Digits)>0)
{
SignalBufferRed[i]=high[i]+d;
...
S=-1;
}
}
return(rates_total);
}
//+------------------------------------------------------------------+ENUM_TIMEFRAMES next_period(int per) // Было инт
{
if(per > PERIOD_W1) return(PERIOD_MN1); // Былы цифры вместо период_if(per > PERIOD_D1) return(PERIOD_W1); // Былы цифры вместо период_if(per > PERIOD_H4) return(PERIOD_D1); // Былы цифры вместо период_if(per > PERIOD_H1) return(PERIOD_H4); // Былы цифры вместо период_if(per > PERIOD_M30) return(PERIOD_H1); // Былы цифры вместо период_if(per > PERIOD_M15) return(PERIOD_M30); // Былы цифры вместо период_if(per > PERIOD_M5) return(PERIOD_M15); // Былы цифры вместо период_if(per > PERIOD_M1) return(PERIOD_M5); // Былы цифры вместо период_if(per == PERIOD_M1) return(PERIOD_M1); // Былы цифры вместо период_return(Period());
}
//+------------------------------------------------------------------+
Yevgen Butov: Bonjour ! j'ai retravaillé l'indicateur de metatrader 4 à metatrader 5, mais maintenant il montre les flèches aux mauvais endroits comme dans metatrader 4 sur une période de minutes. Ai-je fait une erreur quelque part ou est-ce à cause des différentes cotations sur le graphique en minutes des versions 4 et 5 du terminal d'un courtier ?
Faites un test simple dans l'indicateur MQL5 et MQL4 - imprimez le temps de barre #0 :
Faites un test simple dans l'indicateur MQL5 et MQL4 - imprimez le temps de barre #0 :
Cela aidera à comprendre ce qui est quoi...
Ajouté ce texte à OnCalculate, l'heure de la barre change toutes les minutes maintenant, mais il n'y a plus de flèches du tout. Quelle pourrait être l'erreur ?
J'ai ajouté ce texte à OnCalculate, l'heure de la barre change toutes les minutes maintenant, mais il n'y a plus de flèches du tout. Quelle pourrait être l'erreur ?
Tu n'as pas bien compris. Comparez les valeurs imprimées. Comparez le temps de barre #0 et le temps de barre #rates_total-1. Comparez à la fois là et là...
Bonjour !
Savez-vous comment construire un indicateur pour le marché ?
J'ai un fichier avec l'extension .mq5 et quelques fichiers d'inclusion avec l'extension .mqh.
D'après ce que j'ai compris, il est impossible de joindre un fichier .mqh à un fichier .mqh via les ressources. Dois-je vraiment tout convertir en un seul fichier manuellement ?
Et s'il y a une nouvelle version : ? C'est fou +))))
Merci.
Vous envoyez le fichier compilé (.ex5) au Marché. Ce fichier contiendra déjà tous vos fichiers d'inclusion.
Une contre-question : "Pourquoi faut-il attribuer explicitement un symbole ici ?
Si vous utilisez cette fonction, vous devez affecter un symbole à m_symbol dans OnInit :
Dans ce cas, si vous exécutez l'EA sur le symbole "EURUSD.m", "EURUSD.m" sera automatiquement défini pour m_symbol.
Le truc, c'est que l'Expert Advisor plane sur un symbole différent. Et j'ai besoin de mettre à jour les cotations pour EURUSD.m
J'ai trouvé cette solution mais je pense qu'elle est erronée.
C'est ça le problème, l'EA plane sur un autre symbole. Et j'ai besoin de mettre à jour les cotations pour EURUSD.m
J'ai trouvé cette solution mais je ne pense pas qu'elle soit correcte
Les amis, s'il vous plaît, conseillez-nous ! !!
Comment la fonction TimeCurrent() peut-elle transmettre les valeurs des heures et des minutes aux variables afin qu'elles puissent travailler avec ces valeurs ?
Ou par exemple je veux passer les heures et les minutes avec la chaîne (12:15) et passer 12 et 15 aux variables. Comment faire ?Les amis, s'il vous plaît, conseillez-nous ! !!
Comment la fonction TimeCurrent() peut-elle transmettre les valeurs des heures et des minutes aux variables afin que vous puissiez travailler avec ces valeurs ?
Ou par exemple je veux passer l'heure et les minutes avec la chaîne (12:15) et passer 12 et 15 aux variables. Comment faire ?TimeToStruct
TimeToStruct
Bonjour ! j'ai retravaillé l'indicateur de metatrader 4 à metatrader 5, mais maintenant il montre les flèches aux mauvais endroits comme dans metatrader 4 sur une période de minutes. Ai-je fait une erreur quelque part ou est-ce à cause des différentes cotations sur le graphique en minutes des versions 4 et 5 du terminal d'un courtier ?
Faites un test simple dans l'indicateur MQL5 et MQL4 - imprimez le temps de barre #0 :
Cela aidera à comprendre ce qui est quoi...
Faites un test simple dans l'indicateur MQL5 et MQL4 - imprimez le temps de barre #0 :
Cela aidera à comprendre ce qui est quoi...
Ajouté ce texte à OnCalculate, l'heure de la barre change toutes les minutes maintenant, mais il n'y a plus de flèches du tout. Quelle pourrait être l'erreur ?
J'ai ajouté ce texte à OnCalculate, l'heure de la barre change toutes les minutes maintenant, mais il n'y a plus de flèches du tout. Quelle pourrait être l'erreur ?
Tu n'as pas bien compris. Comparez les valeurs imprimées. Comparez le temps de barre #0 et le temps de barre #rates_total-1. Comparez à la fois là et là...