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

 
Alexey Viktorov:

Alors limitez-vous au milieu. Qui l'interdit ?

S'il n'est pas un homme, alors apparemment le syndrome prémenstruel interdit de lire et de poser les questions adéquates, jusqu'à présent seuls les couinements me laissent.... Je veux vraiment que ce soit comme ça et pas comme ça...

ZS : Je suis sur 4 forums, si possible, je fais environ 20 travaux MT4 gratuits par mois, et environ 10 ordres pour des TK individuels, mais régulièrement tous les 1,5-2 mois apparaît un personnage de conte de fées qui va m'épater parce qu'il n'a pas besoin de comprendre MT4 ou de faire une tâche spécifique pour commander.... Il a juste besoin de faire tourner la tête de quelqu'un, c'est son travail...

Je donnerais à Artem un monument de son vivant pour la patience dont il a fait preuve en traitant avec de tels personnages sur une si longue période.

 
Alexey Viktorov:

C'est très facile à faire.

L'option 1 est d'utiliser votre cerveau.

Si vous ne pouvez pas le faire, vous pouvez utiliser l'option 2.

Sans faire d'histoires et sans insulter les développeurs et les utilisateurs du forum en particulier, demandez de l'aide sur le forum.

Sinon, vous serez envoyé vers la page . courrier.

Je sais comment contourner cette "fonctionnalité".

Contrairement aux "personnes respectables" de ce forum, je n'en ferai pas un secret.

Cette façon de faire ressemble à ceci :

Si vous remplissez le reste du tableau qui ne nous intéresse pas avec la valeur maximale, alors les indicateurs cessent de tracer des lignes.

C'est exactement la solution "idiote" de ce problème que nous voyons dans les indicateurs MT4 standard (par exemple, SMA, EMA, SMMA et autres).

Mais, vous devez être d'accord, c'est une idiotie totale. Et je soupçonne que, précisément à cause de cette idiotie, il n'y a pas un seul mot sur cette façon de "résoudre" ce problème dans la description.

Je me trompe peut-être, mais je n'ai pas trouvé d'autre moyen dans les indicateurs standard.

 
Alexey Viktorov:

Exactement comme ça. Vous ouvrez un nouveau compte et transférez de l'argent de l'ancien compte au nouveau compte par virement interne, sans aucun frais.

Je ne comprends pas du tout. Alexey, comment sais-tu ce dont tu parles ? Qu'est-ce que ça a à voir avec 8 tampons d'indicateurs qu'un traducteur ne peut pas traduire ? Je ne sais pas...
 
Igor Makanu:

S'il n'est pas un homme, alors apparemment le syndrome prémenstruel interdit de lire et de poser les questions adéquates, jusqu'à présent seuls les couinements me laissent.... Je veux vraiment que ce soit comme ça et pas comme ça...

ZS : Je suis sur 4 forums, si possible, je fais environ 20 travaux MT4 gratuits par mois, et environ 10 ordres pour des TK individuels, mais régulièrement tous les 1,5-2 mois apparaît un personnage de conte de fées qui va m'épater parce qu'il n'a pas besoin de comprendre MT4 ou de faire une tâche spécifique pour commander.... Il a juste besoin de faire tourner la tête de quelqu'un, c'est son travail...

Je donnerais à Artem un monument de son vivant pour la patience dont il a fait preuve en traitant avec de tels personnages sur une si longue période.

Tu as probablement besoin de te reposer.

 
Il faut faire les enfants sobrement pour qu'il n'y ait pas de problèmes à l'avenir.
 

Qu'est-ce que je fais de mal ?

//+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                                                        RomanRott |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "RomanRott"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot HL_CCI
#property indicator_label1  "HL_CCI"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Period_=70; //Период
//--- indicator buffers
double         HL_CCIBuffer[];
int cci_h1, cci_h2;
double cci1[], cci2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,HL_CCIBuffer,INDICATOR_DATA);
   cci_h1 = iCCI(_Symbol, PERIOD_CURRENT, Period_, PRICE_HIGH);
   cci_h2 = iCCI(_Symbol, PERIOD_CURRENT, Period_, PRICE_LOW);
   
   //ArraySetAsSeries(cci1, true);
   //ArraySetAsSeries(cci2, 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[])
  {
   CopyBuffer(cci_h1, 0, 0, rates_total-prev_calculated, cci1);
   CopyBuffer(cci_h2, 0, 0, rates_total-prev_calculated, cci2);
   for(int i = prev_calculated; i<rates_total;i++){
      HL_CCIBuffer[i] = cci1[i]-cci2[i];
   }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:
Je ne comprends rien du tout. Alexei, comment sais-tu de quoi nous parlons ? Qu'est-ce que ça a à voir avec 8 tampons d'indicateurs qu'un traducteur ne peut pas traduire ? C'est difficile à comprendre...

Artyom, tu es un programmeur... M. Botvinnik a dit un jour qu'un ordinateur est un idiot. Ainsi, tout programmeur sait comment parler à un idiot.

J'ai déjà lu des articles sur les tampons 8 ou 512, et ce texte concernait la plainte relative au refus du courtier de faire migrer le compte de MT4 à MT5.


Igor Makanu:

Je donnerais un monument à Artem de son vivant pour sa patience face à de tels personnages.

J'ai déjà...


 
Roman Sharanov:

Qu'est-ce que je fais de mal ?

//+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot DivCCI
#property indicator_label1  "DivCCI"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  C'143,188,139'
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- input parameters
input uint     InpPeriod=70;   // CCI period
//--- indicator buffers
double         BufferDivCCI[];
double         BufferHCCI[];
double         BufferLCCI[];
//--- global variables
int            period_cci;
int            handle_hcci;
int            handle_lcci;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- set global variables
   period_cci=int(InpPeriod<2 ? 2 : InpPeriod);
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferDivCCI,INDICATOR_DATA);
   SetIndexBuffer(1,BufferHCCI,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,BufferLCCI,INDICATOR_CALCULATIONS);
//--- setting indicator parameters
   IndicatorSetString(INDICATOR_SHORTNAME,"HL CCI ("+(string)period_cci+")");
   IndicatorSetInteger(INDICATOR_DIGITS,Digits());
//--- setting buffer arrays as timeseries
   ArraySetAsSeries(BufferDivCCI,true);
   ArraySetAsSeries(BufferHCCI,true);
   ArraySetAsSeries(BufferLCCI,true);
//--- create CCI's handles
   ResetLastError();
   handle_hcci=iCCI(NULL,PERIOD_CURRENT,period_cci,PRICE_HIGH);
   if(handle_hcci==INVALID_HANDLE)
     {
      Print("The iCCI(",(string)period_cci,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
   handle_lcci=iCCI(NULL,PERIOD_CURRENT,period_cci,PRICE_LOW);
   if(handle_lcci==INVALID_HANDLE)
     {
      Print("The iCCI(",(string)period_cci,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
//---
   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[])
  {
//--- Проверка и расчёт количества просчитываемых баров
   if(rates_total<fmax(period_cci,4)) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-1;
      ArrayInitialize(BufferDivCCI,EMPTY_VALUE);
      ArrayInitialize(BufferHCCI,0);
      ArrayInitialize(BufferLCCI,0);
     }
//--- Подготовка данных
   int count=(limit>1 ? rates_total : 1),copied=0;
   copied=CopyBuffer(handle_hcci,0,0,count,BufferHCCI);
   if(copied!=count) return 0;
   copied=CopyBuffer(handle_lcci,0,0,count,BufferLCCI);
   if(copied!=count) return 0;

//--- Расчёт индикатора
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferDivCCI[i]=BufferHCCI[i]-BufferLCCI[i];
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Que faut-il ajouter à la cour pour que l'indicateur fonctionne chaque seconde au lieu de chaque tick?

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Red

#propriété stricte

double tampon[] ;

void init()

{

SetIndexBuffer(0,buffer) ;

SetIndexStyle(0,STYLE_SOLID) ;

}

void start ()

{


double vbid_1 = MarketInfo("USDRUB",MODE_BID) ;

double vbid_2 = MarketInfo("EURUSD",MODE_BID) ;




double a = vbid_1 ;

double b = vbid_2 ;

double x = a / b ;

tampon[0] = x ;

Commentaire (x) ;

}


 
gonsharov:

Que dois-je ajouter à la cour pour que l'indicateur fonctionne chaque seconde au lieu de chaque tick?

Vous devez lirehttps://docs.mql4.com/ru/basis/function/events

et écrivez votre gestionnaire d'événementOnTimer()

Функции обработки событий - Функции - Основы языка - Справочник MQL4
Функции обработки событий - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
В языке MQL4 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL4: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...