Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 638

 
Alexey Viktorov:

Así que limítalo al medio. ¿Quién lo prohíbe?

Si no es varón, al parecer el síndrome del síndrome premenstrual prohíbe leer y hacer preguntas adecuadas, hasta ahora solo chillidos me permiten... Realmente lo quiero así y no así...

ZS: Estoy en 4 foros, si es posible, hago unos 20 trabajos gratuitos de MT4 al mes, y unos 10 pedidos de TK individuales, pero regularmente cada 1,5-2 meses aparece un personaje de cuento de hadas que me deja boquiabierto porque no necesita entender MT4 o hacer una tarea específica bajo el pedido ... Sólo necesita hacer girar la cabeza de alguien, ese es su trabajo...

A Artem le haría un monumento en vida por su paciencia al tratar con semejantes personajes en tanto tiempo.

 
Alexey Viktorov:

Es muy fácil de hacer.

La opción 1 es utilizar el cerebro.

Si no puedes hacerlo, puedes utilizar la opción 2.

Sin alborotar y sin insultar a los desarrolladores y a los usuarios del foro en particular, pide ayuda en el foro.

De lo contrario, se le enviará a la página web . correo.

Sé cómo evitar esta "característica".

A diferencia de la "gente respetable" de este foro no voy a hacer un secreto de ello.

Este camino se ve así:

Si se rellena el resto del array que no nos interesa con el valor máximo, los indicadores dejan de dibujar líneas.

Esta es exactamente la solución "idiota" de este problema que vemos en los indicadores estándar de MT4 (por ejemplo, SMA, EMA, SMMA y otros).

Pero, debes estar de acuerdo, esto es una completa idiotez. Y sospecho que precisamente por esta idiotez no hay ni una sola palabra sobre esta forma de "resolver" este problema en la descripción.

Quizá me equivoque, pero no he encontrado otra forma en los indicadores estándar.

 
Alexey Viktorov:

Exactamente así. Abre una nueva cuenta y transfiere el dinero de la antigua cuenta a la nueva mediante una transferencia interna sin ningún tipo de comisión.

No lo entiendo en absoluto. Alexey, ¿cómo sabes siquiera de qué estás hablando? ¿Qué tiene que ver con 8 búferes indicadores que algún traductor no pueda traducir? No sé...
 
Igor Makanu:

Si no es varón, al parecer el síndrome del síndrome premenstrual prohíbe leer y hacer preguntas adecuadas, hasta ahora solo chillidos me permiten... Realmente lo quiero así y no así...

ZS: Estoy en 4 foros, si es posible, hago unos 20 trabajos gratuitos de MT4 al mes, y unos 10 pedidos de TK individuales, pero regularmente cada 1,5-2 meses aparece un personaje de cuento de hadas que me deja boquiabierto porque no necesita entender MT4 o hacer una tarea específica bajo el pedido ... Sólo necesita hacer girar la cabeza de alguien, ese es su trabajo...

A Artem le haría un monumento en vida por su paciencia al tratar con semejantes personajes en tanto tiempo.

Probablemente necesites un descanso.

 
Hay que hacer los niños con sobriedad para que no haya problemas en el futuro.
 

¿Qué estoy haciendo 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:
No entiendo nada en absoluto. Alexei, ¿cómo sabes siquiera de qué estamos hablando? ¿Qué tiene que ver con 8 búferes indicadores que algún traductor no pueda traducir? Es difícil de entender...

Artem, eres un programador... M. Botvinnik dijo una vez que un ordenador es un idiota. Por lo tanto, todo programador sabe cómo hablar con un idiota.

Ya he leído antes lo de los 8 o 512 buffers, y este texto era sobre la queja del broker que se negaba a migrar la cuenta de MT4 a MT5.


Igor Makanu:

Le haría un monumento a Artem en vida por su paciencia al tratar con tales personajes.

Ya tengo...


 
Roman Sharanov:

¿Qué estoy haciendo 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);
  }
//+------------------------------------------------------------------+
 

aconsejar lo que debe añadirse a la corte para que el indicador funciona cada segundo en lugar de cada garrapata?

#propiedad ventana_del_gráfica_del_indicador

#property indicator_buffers 1

#property indicator_color1 Rojo

#propiedad estricta

doble buffer[];

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;

doble b = vbid_2;

doble x = a / b ;

buffer[0] = x;

Comentario (x);

}


 
gonsharov:

¿Qué tengo que añadir a la pista para que el indicador funcione cada segundo en lugar de cada tick?

Tienes que leerhttps://docs.mql4.com/ru/basis/function/events

y escriba su controlador de eventosOnTimer()

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