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

 
Joyeuses Pâques à tous ! Comment résoudre le problème, dans mql4 le type double n'a pas donné -9315605757223320000.00, -9232595408891630000.00 lors du calcul des prix, mais mql5 les a déterrés de quelque part ? Peut-être un problème dans les citations ? Comment contourner cette situation ? Merci.
 
mwwm:
Joyeuses Pâques à tous ! Comment résoudre le problème, dans mql4 le type double n'a pas donné -9315605757223320000.00, -9232595408891630000.00 lors du calcul des prix et mql5 les a déterrés de quelque part ? Peut-être un problème dans les citations ? Comment contourner cette situation ? Merci.
Où est le code ?
 
Artyom Trishkin:
Où est le code ?

En voici un grossier :

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot OC
#property indicator_label1  ""
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property strict 
//--- indicator buffers
double Op[],Hi[],Lo[],Cl[],Ti[];
double q1[100],q2[100];

///---------
double Lim1[10],Lim2[10];
double Max1[10],Min1[10];
double Max2[10],Min2[10];
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int OnInit()
  {
//--- откроем файл 
   ResetLastError();
//--- привязка массива к индикаторному буферу с индексом 0 
   SetIndexBuffer(0,Ti,INDICATOR_DATA); SetIndexBuffer(1,Op,INDICATOR_DATA);SetIndexBuffer(2,Hi,INDICATOR_DATA);
   SetIndexBuffer(3,Lo,INDICATOR_DATA); SetIndexBuffer(4,Cl,INDICATOR_DATA);
//---- установка значений индикатора, которые не будут видимы на графике 
//--- 
   ArraySetAsSeries(Ti,true);
   ArraySetAsSeries(Op,true);
   ArraySetAsSeries(Hi,true);
   ArraySetAsSeries(Lo,true);
   ArraySetAsSeries(Cl,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ArraySetAsSeries(time,true); 
   ArraySetAsSeries(open,true); 
   ArraySetAsSeries(high,true); 
   ArraySetAsSeries(low,true); 
   ArraySetAsSeries(close,true); 
   ArrayInitialize(Lim1,1);ArrayInitialize(Lim2,1);
  
   int f=1;
/////////      
//--- Проверка на минимальное колиество баров для расчёта
   if(rates_total<1) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1) // если это первый запуск, или изменение истории, или открытие нового бара
     {
      limit=rates_total-1;                   // установим начало цикла на начало исторических данных
      ArrayInitialize(Ti,EMPTY_VALUE);       // инициализируем массив
      ArrayInitialize(Op,EMPTY_VALUE);
      ArrayInitialize(Hi,EMPTY_VALUE);
      ArrayInitialize(Lo,EMPTY_VALUE);
      ArrayInitialize(Cl,EMPTY_VALUE); 
     }
 int p=0;
    
//--- Расчёт индикатора
   for(int i=limit-1; i>=0 && !IsStopped(); i--)
     {
      Op[i]=open[i];Hi[i]=high[i];Lo[i]=low[i];Cl[i]=close[i];

            q1[1]=((Hi[i+f+0]+Lo[i+f+0])/2+Hi[i+f+0])/2;
            Lim1[1]=q1[1]-Hi[i+f+1];  
            Max1[1]=MathMax(Max1[1], Lim1[1]);
            Min1[1]=MathMin(Min1[1], Lim1[1]);

double n=100000000;
if(MathAbs(Lim1[1])>n){p++;Print(Lim1[1]," = ",p,"  = ",i);}
 } 
//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Bonjour ! je veux installer un vps à partir de mql. j'ai 2 comptes avec des brokers différents et je veux copier des signaux sur chaque compte à partir de 2 fournisseurs de signaux différents. Dois-je connecter un vps séparé pour chaque compte pour 10$/mois ou puis-je en connecter un seul ?
 
S'il vous plaît, envoyez-moi le lien direct vers mt4. J'essaie de télécharger mt4 mais mt5 est installé à la place. Merci d'avance.
 
Aleksei Poliakov:
S'il vous plaît, envoyez-moi un lien direct vers mt4. J'essaie de télécharger mt4 mais mt5 est installé à la place. Merci d'avance.
Il suffit de le télécharger depuis votre courtier. Ou un autre.
 
Artyom Trishkin:


Alexey Viktorov:


Merci, je vois. Comment puis-je garder la trace si je ferme une partie d'une commande deux ou trois fois ? Par exemple, j'ai fermé un lot de 0,1, puis j'ai fermé 0,5, puis j'ai fermé un autre 0,25. La dernière position fermée sera égale au ticket de la position ouverte, mais comment dois-je rechercher un profit sur une position fermée précédente ?

 
PolarSeaman:

Merci, je vois. Comment puis-je garder la trace si je ferme une partie d'une commande deux ou trois fois ? Par exemple, j'ai fermé un lot de 0,1, puis j'ai fermé 0,5, et ensuite j'ai fermé un autre 0,25. La dernière position fermée sera égale au ticket de la position ouverte, et au profit de la précédente fermée, comment dois-je la rechercher ?

p1 est le seul. gardez vos propres dossiers et votre histoire.

Une autre option consiste à utiliser l'historique des commandes du terminal, mais elle comporte quelques nuances délicates.

 
Maxim Kuznetsov:

p1 et le seul. gardez vos propres dossiers et votre histoire.

Quel rebondissement !))

 

J'ai trouvé, ici sur le forum, une fonction pour calculer les profits à partir d'une certaine date"function returns total profits in the currency of the positions closed since a certain date".

Je suppose que cela va fonctionner pour moi. Mais comment savoir quelle était la date d'ouverture de la position que je ferme partiellement ?