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

 
-Aleks-:

J'ai ce dessin

static datetime TimeN=0;  


void OnTick()
  {

datetime TimeC=iTime(NULL,TF,0);
   if(TimeN==0)TimeN=TimeC;
   if(TimeN==TimeC) return;
   TimeN=TimeC;


Merci ! !!
 
Dites-moi pourquoi je devrais créer un sujet si aucun des experts n'est prêt à lire les messages. Pourquoi ai-je demandé de l'aide si tous les experts de ce fil se fichent de tout le monde.
 
vannoo:
Dites-moi simplement pourquoi je dois créer un sujet si aucun des experts ne veut même pas lire les messages. Je ne sais pas pourquoi j'ai demandé de l'aide. Si tout le monde dans ce fil se soucie de tout le monde.

Vous avez écrit ceci :

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Toutes les questions des débutants sur MQL4, aide et discussion sur les algorithmes et les codes.

vannoo, 2017.03.17 15:57

Les gens peuvent-ils me conseiller ici sur ce que j'ai fait de mal ? pas vraiment ; j'ai appris depuis environ trois semaines à écrire moi-même des EAs MQL4 ! J'ai écrit un EA compilé, aucune erreur ou avertissement et tout semble aller bien. J'ai trouvé un gros MAIS il ne veut pas fonctionner . Je peux peut-être demander ici où j'ai fait une erreur et ce que j'ai fait de mal. Si quelqu'un me dit ce que je dois faire, faites-le moi savoir. C'est la première fois que je viens ici et je ne sais pas comment m'y prendre. Bien que je vois comment.
Eh bien, c'est ici qu'ils peuvent vous donner une réponse.
 
Bonjour ! Au secours ... Mon MT4 est mort ... J'ai tout essayé (redémarrer, restaurer le système, supprimer l'ancien avec tous les boyaux, télécharger le nouveau), rien n'y fait. Il est bloqué ... si vous l'ouvrez, pour le fermer vous devez passer par le Gestionnaire des Tâches
 

Bonjour à tous

Je suis novice en programmation, mais j'essaie d'apprendre)

J'ai un petit problème pour clôturer l'ordre selon les relevés de l'indicateur.

Je sais tout de suite quelles sont les conditions d'ouverture et de fermeture d'une position grâce aux lectures de l'indicateur et je ferme l'ordre dans la direction opposée sans aucun stop ni profit.

si(r > 50 && p > m) //conditions d'ouverture d'unordre d'achat

{

ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green) ; //ouvre un ordre d'achat

}

Est-ce que j'écris correctement la condition de clôture de l'ordre ?

if(r < 50 && p < m) --- c'est une condition de vente et une condition de fermeture.

{

OrdreClose(ticketB,0.1,Bid,5,Red) ;

}

et les impressions de l'utilisation possible de la variable non initialisée 'ticketB' et de la valeur de retour de 'OrderClose' doivent être vérifiées.

Pouvez-vous me dire où j'ai mal écrit ?

 

Pouvez-vous me dire comment faire un cycle de dates - j'ai besoin de rechercher des plages - années et trimestres.

Par exemple, le premier intervalle va du 01.01.2010 au 31.12.2010, le second du 01.01.2011 au 31.12.2011 - comment l'organiser dans le cycle ?

 

Si je n'ai pas été assez clair tout à l'heure, voici un exemple de dessin que j'aimerais serrer d'une manière ou d'une autre...


   for(int Ti=0; Ti<18; Ti++)
     {
      if(Ti==0)  {start_time=D'01.01.2000'; stop_time=D'31.12.2000';}
      if(Ti==1)  {start_time=D'01.01.2001'; stop_time=D'31.12.2001';}
      if(Ti==2)  {start_time=D'01.01.2002'; stop_time=D'31.12.2002';}
      if(Ti==3)  {start_time=D'01.01.2003'; stop_time=D'31.12.2003';}
      if(Ti==4)  {start_time=D'01.01.2004'; stop_time=D'31.12.2004';}
      if(Ti==5)  {start_time=D'01.01.2005'; stop_time=D'31.12.2005';}
      if(Ti==6)  {start_time=D'01.01.2006'; stop_time=D'31.12.2006';}
      if(Ti==7)  {start_time=D'01.01.2007'; stop_time=D'31.12.2007';}
      if(Ti==8)  {start_time=D'01.01.2008'; stop_time=D'31.12.2008';}
      if(Ti==9)  {start_time=D'01.01.2009'; stop_time=D'31.12.2009';}
      if(Ti==10) {start_time=D'01.01.2010'; stop_time=D'31.12.2010';}
      if(Ti==11) {start_time=D'01.01.2011'; stop_time=D'31.12.2011';}
      if(Ti==12) {start_time=D'01.01.2012'; stop_time=D'31.12.2012';}
      if(Ti==13) {start_time=D'01.01.2013'; stop_time=D'31.12.2013';}
      if(Ti==14) {start_time=D'01.01.2014'; stop_time=D'31.12.2014';}
      if(Ti==15) {start_time=D'01.01.2015'; stop_time=D'31.12.2015';}
      if(Ti==16) {start_time=D'01.01.2016'; stop_time=D'31.12.2016';}
      if(Ti==17) {start_time=D'01.01.2017'; stop_time=D'31.12.2017';}
    }
 

Je veux remplacer un point dans une ligne par une virgule - cela ne fonctionne pas - qu'est-ce que je fais mal ?


string str_avrMassSell=DoubleToString(avrMassSell,2);
str_avrMassSell=StringReplace(str_avrMassSell,".",",");
 
-Aleks-:

Si je n'ai pas été assez clair tout à l'heure, voici un exemple de construction que je voudrais serrer d'une manière ou d'une autre...



Si c'est par année, cela pourrait être quelque chose comme ceci

//+------------------------------------------------------------------+
//|                                                    Year_Test.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
 input int      Ti=18;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime start_time=D'01.01.2000';
   datetime stop_time=D'31.12.2000';

   for (int ti=1;ti<Ti;ti++)
   {   
   
   start_time=start_time+31536000;
   if (TimeDay(start_time)==31) start_time+=86400;


   stop_time=stop_time+31536000;

   if (TimeDay(stop_time)==30) stop_time+=86400;

   Print("ti = ", ti, " Start = ", TimeToStr(start_time,TIME_DATE)," Stop = ",TimeToStr(stop_time,TIME_DATE));
   }
   
  }

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 17 Start = 2017.01.01 Stop = 2017.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 16 Start = 2016.01.01 Stop = 2016.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 15 Start = 2015.01.01 Stop = 2015.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 14 Start = 2014.01.01 Stop = 2014.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 13 Start = 2013.01.01 Stop = 2013.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 12 Start = 2012.01.01 Stop = 2012.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 11 Start = 2011.01.01 Stop = 2011.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 10 Start = 2010.01.01 Stop = 2010.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 9 Start = 2009.01.01 Stop = 2009.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 8 Start = 2008.01.01 Stop = 2008.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 7 Start = 2007.01.01 Stop = 2007.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 6 Start = 2006.01.01 Stop = 2006.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 5 Start = 2005.01.01 Stop = 2005.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 4 Start = 2004.01.01 Stop = 2004.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 3 Start = 2003.01.01 Stop = 2003.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 2 Start = 2002.01.01 Stop = 2002.12.31

2017.03.20 21:24:14.002 Year_Test EURUSD,M15 : Ti = 1 Start = 2001.01.01 Stop = 2001.12.31


 
-Aleks-:

Je veux remplacer un point dans une ligne par une virgule - cela ne fonctionne pas - qu'est-ce que je fais mal ?



Cela fonctionne

//+------------------------------------------------------------------+
//|                                                StringReplace.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input double   Temp=999.99;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string stemp1=DoubleToStr(Temp,2);
   string stemp2=stemp1;
   StringReplace(stemp2,".",",");
   Print(stemp1," = ", stemp2);
   
  }
//+------------------------------------------------------------------+

2017.03.20 21:39:02.802 StringReplace EURUSD,M15 : 999.99 = 999.99


Raison: