Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 994

 
Kolya32:
Gracias a ti también. Eso también funciona)

Yo también quiero darte las gracias :)))

Este

double Candle = (iClose(_Symbol,PERIOD_H1,1) - iOpen(_Symbol,PERIOD_H1,1)) / _Point;
if(Candle < 0){Candle = Candle * -1;}
string Candle2 =  DoubleToString(Candle, 0);
int Candle3 = StringToInteger(Candle2);

se puede sustituir por esto y funcionará igual.

int Candle = (int)fabs((iClose(_Symbol,PERIOD_H1,1) - iOpen(_Symbol,PERIOD_H1,1)) / _Point);
Документация по MQL5: Математические функции / MathAbs
Документация по MQL5: Математические функции / MathAbs
  • www.mql5.com
Математические функции / MathAbs - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 


Buen día. Pregunta. ¿Cómo puedo asociar los datos de los ticks con las barras de los marcos temporales? A continuación se muestra una parte del código. Cambia el color del búfer. Lo he descubierto

con colores, pero no está claro cómo enlazar aquí... Tengo algunas ideas sobre la estructura de MqlRates, pero no está claro qué valor tomar... He visto cómo funciona (ejemplo en la documentación), pero el valor salta y no está claro por qué

//--- Подготовка данных
   int count=(limit>1 ? rates_total : 2),copied=0;
   copied=CopyBuffer(handle_ma,0,0,count,BufferPrice);
   if(copied!=count) return 0;
//----   
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      bp=NormalizeDouble(BufferPrice[i],_Digits);
//--- High signal
   if(bp>iOpen(NULL,PERIOD_CURRENT,i) && bp<iClose(NULL,PERIOD_CURRENT,i))
     {
      ExtOpenBuffer[i]=open[i];
      ExtHighBuffer[i]=high[i];
      ExtLowBuffer[i]=low[i];
      ExtCloseBuffer[i]=close[i];
      ExtColorsBuffer[i]=1;   / уфер изменения цвета
     }
//--- Low signal
   if(bp<iOpen(NULL,PERIOD_CURRENT,i) && bp>iClose(NULL,PERIOD_CURRENT,i))
     {
      ExtOpenBuffer[i]=open[i];
      ExtHighBuffer[i]=high[i];
      ExtLowBuffer[i]=low[i];
      ExtCloseBuffer[i]=close[i];
      ExtColorsBuffer[i]=2;
     }
     }
 
Alexey Viktorov:

Yo también quiero darte las gracias :)))

int Candle = (int)fabs((iClose(_Symbol,PERIOD_H1,1) - iOpen(_Symbol,PERIOD_H1,1)) / _Point);
Gracias a ti también. No he probado este diseño, pero hazme caso, funciona)
 
Kolya32:
Gracias a ti también. No he probado este diseño, pero te tomo la palabra de que funciona).

No deberías haberlo intentado. Era una broma de agradecimiento, pero el código es serio. Por qué convertir doble a int a través de una cadena cuando hay una función de valor absoluto...

 
kopeyka2:


Buen día. Ha surgido una pregunta. Cómo vincular los datos de los ticks a las barras del marco temporal. A continuación se muestra una parte del código. Cambia el color del búfer. Lo he descubierto

con colores, pero no está claro cómo enlazar aquí... Tengo algunas ideas sobre la estructura de MqlRates, pero no está claro qué valor tomar... He visto cómo funciona (ejemplo en la documentación), pero el valor salta y no está claro por qué.

No se comprueba lo que se recibe en

if(bp>iOpen(NULL,PERIOD_CURRENT,i) && bp<iClose(NULL,PERIOD_CURRENT,i))
if(bp<iOpen(NULL,PERIOD_CURRENT,i) && bp>iClose(NULL,PERIOD_CURRENT,i))

Las funciones devuelven 0 en caso de error. Su lógica también funcionará en caso de datos erróneos de iOpen() en el primer caso e iClose() en el segundo.

Para recibir los datos de los ticks en mql5 existe la estructura MqlTick y la función CopyTicks(), en la que se pueden obtener los datos del número necesario de los últimos ticks en la estructura. Luego, para vincularlo con una barra del marco temporal, es necesario obtener el número de barra por tiempo de tic. iBarShift() y el campo de la estructura tick.time

 
Artyom Trishkin:

No se comprueba lo que se recibe en

Las funciones devuelven 0 en caso de error. Su lógica también funcionará en caso de datos de error de iOpen() en el primer caso e iClose() en el segundo.

Para obtener los datos de los ticks en mql5, existe una estructura MqlTick y la función CopyTicks(), en la que se pueden obtener los datos del número necesario de los últimos ticks de la estructura. Luego, para vincularlo con una barra del marco temporal, es necesario obtener el número de barra por tiempo de tic. iBarShift() y el campo de la estructura tick.time

Gracias. La dificultad aquí (en mi pregunta) es que los candelabros están sombreados por ticks. Es más fácil por la barra del plazo. Pero... Y por eso estoy aquí de nuevo ))))
 
kopeyka2:
Gracias. La dificultad aquí (en mi pregunta) es que las velas están pintadas con garrapatas. Es más fácil por la barra del plazo. Pero... Y por eso estoy aquí de nuevo ))))

Por favor. Ahí (en su pregunta) no entiendo nada...

 
Artyom Trishkin:

Por favor. No entiendo nada aquí (en su pregunta)...

Creo que he encontrado un 3LineBreak similar https://www.mql5.com/ru/code/485
 
Señores, no entiendo dónde está el parámetro número continuo de operaciones perdedoras en el probador de mt5 o tengo que prescribirlo al robot? mt4 lo tiene, no encuentro cómo implementarlo.
Archivos adjuntos:
l9rnznuztu.jpg  73 kb
 
freelancerAntonyan:
Señores, no entiendo dónde está el parámetro número continuo de operaciones perdedoras en el probador de mt5 o hay que prescribirlo en el robot? mt4 lo tiene, no encuentro cómo implementarlo.

Puede hacer las cuentas usted mismo, elegir en los criterios personalizados.

Razón de la queja: