Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 236
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
... toutes les paires de devises où l'USD est présent ...
Il n'y a pas de calcul de la"marge utilisée des fonds de commerce" dans le code ... et à la fin de mon premier message j'ai noté"changer le type de devise de dépôt dans le testeur ne résout pas le problème".
Il n'y a pas de calcul de la"marge utilisée des fonds de commerce" dans le code ... et à la fin de mon premier message j'ai noté"changer le type de devise de dépôt dans le testeur ne résout pas le problème".
Ensuite, mes pouvoirs télépathiques sont terminés - présentez le code.
Désolé pour la question, je sais comment insérer un indicateur externe dans un EA en utilisant un tampon.... Mais il n'y a pas de tampon dans cet indicateur, comment puis-je obtenir le prix supérieur et inférieur.
//+------------------------------------------------------------------+
//| trendlinesDay.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "nsi2000"
#property link "http://www.expert-mt4.nm.ru"
//----
#property indicator_chart_window
//---- input parameters
extern int nPeriod=10;
extern int Limit=350;
double Up[];
double Dn[];
///---- int Widners Oscilator
int cnt,nCurBar=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Output in Char
for(cnt=0; cnt<=5; cnt++)
{
ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);
ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);
if(cnt<5)
{
ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);
ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta);
}
//----
ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);
ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);
if(cnt<5)
{
ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);
ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
for(cnt=0; cnt<=5; cnt++)
{
ObjectDelete("Trend UP-"+cnt);
ObjectDelete("Trend DN-"+cnt);
ObjectDelete("WSO-"+cnt);
ObjectDelete("WRO-"+cnt);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//---- TODO: add your code here
double r1,r2,r3,r4,r5,r6;
int rt1,rt2,rt3,rt4,rt5,rt6;
double s1,s2,s3,s4,s5,s6;
int st1,st2,st3,st4,st5,st6;
//---- Линии сопротивления и поддержки
if(Bars<Limit) Limit=Bars-nPeriod;
for(nCurBar=Limit; nCurBar>0; nCurBar--)
{
if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])
{
s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];
st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;
}
if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])
{
r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];
rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;
}
}
//---- Move Object in Chart
ObjectMove("Trend DN-0",1,Time[st1],s1);
ObjectMove("Trend DN-0",0,Time[st2],s2);
//----
ObjectMove("Trend UP-0",1,Time[rt1],r1);
ObjectMove("Trend UP-0",0,Time[rt2],r2);
//----
return(0);
}
//+------------------------------------------------------------------+
Désolé pour la question, je sais comment insérer un indicateur externe dans un EA en utilisant un tampon.... Dans cet indicateur, il n'y a pas de tampon, comment puis-je obtenir le prix supérieur et inférieur ?
Prenez des objets graphiques sur le graphique avec les noms "Trend DN-0", "Trend UP-0". (ces lignes qui indiquent certains niveaux de l'indicateur) et y lire les données souhaitées
sur le graphique, prendre des objets graphiques avec les noms "Trend DN-0", "Trend UP-0". (ces lignes avec lesquelles l'indicateur marque certains niveaux) et y lire les données nécessaires
veuillez écrire comment faire cela dans l'indicateur lui-même ? et ensuite créer 2 tampons à partir de ces valeurs pour les utiliser dans l'EA ?
Ecrivez dans quel endroit prendre le prix ?
veuillez écrire comment faire cela dans l'indicateur lui-même ? et ensuite créer 2 tampons à partir de ces valeurs pour les utiliser dans l'EA ?
écrire à quel endroit prendre le prix ?
L'indicateur a déjà toutes les données pour calculer deux tampons et les dessiner.
Et vous n'avez pas proposé de changer l'indicateur, mais de lire les données des lignes tracées par l'indicateur depuis le Conseiller Expert.
Toutefois, cela impose des restrictions sur l'utilisation du testeur - vous ne pourrez tester le conseiller expert qu'en mode visuel.
L'indicateur dispose déjà de toutes les données pour calculer les deux tampons et les dessiner.
Et il ne vous a pas été suggéré de changer l'indicateur, mais de lire les données des lignes tracées par l'indicateur depuis le Conseiller Expert.
Toutefois, cela impose des limites à l'utilisation du testeur - vous ne pourrez tester le conseiller expert qu'en mode visuel.
Cela signifie que je devrais écrire dans l'indicateur
#property indicator_buffers 2
double BufferUp[], BufferDn[] ;
int OnInit()
{
SetIndexBuffer(0, BufferUp)
SetIndexBuffer(1, BufferDn)
}
Et puis avec quoi exactement ? je dois relier ces 2 buffers ?
Je dois donc écrire dans l'indicateur
#property indicator_buffers 2
double BufferUp[], BufferDn[] ;
int OnInit()
{
SetIndexBuffer(0, BufferUp)
SetIndexBuffer(1, BufferDn)
}
Et puis avec quoi exactement ? je dois relier ces 2 buffers ?
Regardez : vous avez des lignes qui bougent dans votre code :
Time[st1], Time[st2] et le prix de ces points de référence s1, s2 sont pour une ligne,
Time[rt1], Time[rt2], r1, r2 - pour une autre ligne.
En utilisant l'équation de la ligne, vous pouvez calculer la valeur du tampon pour chaque barre entre ces points et écrire cette valeur dans le tampon.
Vous voyez : vous avez des lignes qui bougent dans votre code :
Nous avons Time[st1], Time[st2] et le prix de ces points s1, s2 - pour une ligne,
Time[rt1], Time[rt2], r1, r2 - pour une autre ligne.
En utilisant l'équation de la ligne, vous pouvez calculer la valeur du tampon pour chaque barre entre ces points et écrire cette valeur dans le tampon.
donc vous ne pouvez pas simplement prendre le prix de la ligne sur la barre... Je ne sais pas comment calculer l'équation de la ligne droite, si possible, écrivez comment tout cela devrait ressembler.
Et, en général, la valeur ne doit pas être prise entre deux points, mais sur 0 ou 1 barre.