[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 221

 

Bonjour à tous.

J'ai un script qui ferme tous les ordres disponibles.

Je ne comprends pas trois lignes de ce texte :

Si ce n'est pas difficile, veuillez le traduire en russe pour un débutant.

J'ai étudié le tutoriel, mais je n'ai pas rencontré d'expressions logiques aussi longues.

Le script que je joins. Merci.

Dossiers :
 

Laissez-moi essayer de "traduire" la première entrée pour vous :

if(((OrderSymbol() == Symbol() && OnlyThisSymbol) || !OnlyThisSymbol))

" Si au moins une des expressions 1. ou 2. est vraie, alors ... ". "
1.l'instrument de l'ordre est le même que celui du graphique et la variable externe OnlyThisSymbol a la valeur true.
La variable externe OnlyThisSymbol a une valeur égale à false.

Maintenant, le sens de cette entrée :
Il existe une énumération des ordres à fermer par les positions avec différents filtres. Cet enregistrement est un filtre par instrument. Si vous définissez la valeur de la variable externe onlyThisSymbol, vous pouvez choisir si vous souhaitez clôturer les ordres uniquement pour un symbole graphique ou les ordres pour n'importe quel symbole.

 
alsu:

Pas exactement. Le point est que la variable Experts a déjà le type int, donc la conversion de type devrait avoir lieu AVANT de lui assigner une valeur, c'est-à-dire que le compilateur

* a sorti de la boîte une valeur de type double (elle n'a pas de nom dans votre programme, et est écrite simplement à une adresse connue du compilateur dans la mémoire principale ou dans le registre du CPU)

* a apporté toutes les modifications nécessaires à la valeur de la variable ci-dessus et a écrit une nouvelle valeur (de type int !) dans la variable Experts,

* a affecté cette valeur (de type int !) à la variable New_Experts. Ils ont le même type, il s'agit donc simplement de copier une valeur d'un emplacement mémoire à un autre.


P.S. C'est génial de voir qu'il y a des gens qui comprennent leurs actes de manière aussi détaillée. En fait, sans blague. Restez en contact.


Bonne journée... Pour ce qui est de votre dernier et avant-dernier message, je reste sur ma faim. En particulier (votre message de la réponse précédente) : "Alors quand on sort une valeur de la boîte, elle est de type double, mais si on donne la commande d'écrire le résultat dans une variable de type int, le compilateur effectue automatiquement toutes les actions nécessaires pour mettre la valeur dans une nouvelle boîte." Et votre message de la dernière réponse : "Le fait est que la variable Experts a déjà le type int.... Ne l'avons-nous pas converti en type double au moment où nous l'avons "mis" dans une case GV-variable ?

Merci d'avance pour la réponse

 

Pouvez-vous me conseiller, mes amis ? Est-ce que MQL4 permet de définir la valeur du solde du compte de façon programmatique, et pas seulement dans les conditions initiales du testeur ?

Je vais expliquer pourquoi j'en ai besoin, pour que la question soit claire. Je veux que le conseiller expert modifie la taille du solde du compte en tant que variable pendant l'optimisation.

 

Bon après-midi.

J'essaie de créer un indicateur pour afficher Sl et Tp sur le graphique en fonction de (H-L)/2, cela ne fonctionne pas - il dessine juste par la clôture de la barre, quel est le problème ?

Comme la base a été prise par un indicateur ATR.

//+------------------------------------------------------------------+
//|                                                          Tp/Sl.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green
//---- input parameters
extern int PeriodMM=25;
//---- buffers
double SlBuffer[];
double TpBuffer[];
double SlBuffer2[];
double TpBuffer2[];
double TempBuffer[];
double TempBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 1 additional buffer used for counting.
   IndicatorBuffers(4);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,SlBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,TpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,SlBuffer2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,TpBuffer2);
   SetIndexBuffer(4,TempBuffer);
   SetIndexBuffer(5,TempBuffer2);
//----
   SetIndexDrawBegin(0,PeriodMM);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=PeriodMM) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=PeriodMM;i++)
      SlBuffer[Bars-i]=0.0;
      TpBuffer[Bars-i]=0.0;
      SlBuffer2[Bars-i]=0.0;
      TpBuffer2[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      double close = Close[i];
      TempBuffer[i]=(high-low)/2;
      TempBuffer2[i]=(high-low)/2*2.5;
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      SlBuffer[i]=Close[i]+iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer[i]=Close[i]+iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
      SlBuffer2[i]=Close[i]-iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer2[i]=Close[i]-iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Camarades, je ne comprends pas pourquoi les fichiers CSV ne sont pas créés, tout fonctionnait avant.
//+------------------------------------------------------------------+
//|                                                          TP1.mq4 |
//|                                                      S.I.Shlikov |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "S.I.Shlikov"
#property link      ""
int init()  
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,"Date","EURUSD","GBPUSD","NZDUSD","USDJPY","EURJPY","GBPJPY","USDCHF","EURCHF","GBPCHF");
   FileClose(h);        
  }
int start()
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES);
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,Wtime,DoubleToStr(iClose("EURUSD",Period(),0),MarketInfo("EURUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPUSD",Period(),0),MarketInfo("GBPUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("NZDUSD",Period(),0),MarketInfo("NZDUSD",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDJPY",Period(),0),MarketInfo("USDJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("EURJPY",Period(),0),MarketInfo("EURJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPJPY",Period(),0),MarketInfo("GBPJPY",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDCHF",Period(),0),MarketInfo("USDCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("EURCHF",Period(),0),MarketInfo("EURCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPCHF",Period(),0),MarketInfo("GBPCHF",MODE_DIGITS))
                     );
   FileClose(h);   
   return(0);
  }
 
orb:
Camarades, je ne comprends pas pourquoi les fichiers CSV ne sont pas créés, tout fonctionnait avant.

Quel est le numéro de l'erreur ?
 
sergeev:

Quel est le numéro d'erreur ?
pas de numéro d'erreur... juste aucun fichier créé, à la recherche de ALPARI{\tester{\files\}.
 
orb:
pas de numéro d'erreur... juste pas de création de fichiers, recherche d'ALPARI{\tester{\files\}

Eh bien, regardez dans l'autre.
 
sergeev:

Eh bien, regardez ailleurs.
Je l'ai déjà fait.