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

 
Yaroslav Nykula:

... toutes les paires de devises où l'USD est présent ...

Je suppose qu'il y a un calcul dans le code de la marge utilisée à partir des fonds de trading - essayez d'ouvrir un compte dans une devise autre que l'USD et voyez si le test passe.
 
<br / translate="no">

Je vais supposer qu'il y a un calcul de la marge utilisée à partir des fonds de trading dans le code - essayez d'ouvrir un compte dans une autre devise que l'USD et voyez si le test passe.



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".

 
Yaroslav Nykula:

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);

  }

//+------------------------------------------------------------------+


 
Vyacheslav Kornev:

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

 
Maxim Kuznetsov:

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 ?

 
Vyacheslav Kornev:

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.

 
Artyom Trishkin:

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 ?

 
Vyacheslav Kornev:

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 :

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);

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.

 
Artyom Trishkin:

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.