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

 
voron_026:

HolaAleksey Vyazmikin He empezado a programar recientemente. Poco a poco me voy adentrando en el tema.

Intenté hacerlo así:

Se dibuja el primer rectángulo, el resto no se dibuja. Todavía estoy tratando de averiguar cómo hacerlo. Gracias por los consejos y ¿a qué te refieres con estilo no típico?


¿Está seguro de que se dibuja un objeto y no muchos en las mismas coordenadas?

Tienes puntos constantes.

datetime time0 = iTime(Symbol(),PERIOD_H4,0);
datetime time1 = iTime(Symbol(),PERIOD_H4,1);
double open0 = iOpen(Symbol(), PERIOD_H4,0);
double open1 = iOpen(Symbol(), PERIOD_H4,1);
double close1 = iClose(Symbol(), PERIOD_H4,1);
double high1 = iHigh(Symbol(), PERIOD_H4,1);
double low1 = iLow(Symbol(), PERIOD_H4,1);

Definirlos en una función o directamente en el código al crear un objeto...

Sobre la tipicidad - su función de cálculo es retorcida y tal expresión si(!...) no muchos de los principiantes la usan según mis observaciones.

 

¡Hola!


¿Puede aconsejarnos, por favor?

Cómo se puede calcular la posición de un indicador(I-1), en relación con otro indicador(I-2) construido sobre él(I-1).


Por ejemplo:

La posición del RSI en relación con Bollinger.

Pensé que se podían sustituir los datos en lugar de los cálculos de precios

 RSI = iRSI(Symbol(), TimeFrame, 14, PRICE_CLOSE, 1);
 BB  = iBands(Symbol(), TimeFrame, 34, 1, 0, RSI, MODE_UPPER, 1);
Pero me da un error.
 
Ras al Ghul:

¡Hola!


¿Puede aconsejarnos, por favor?

Cómo se puede calcular la posición de un indicador(I-1), en relación con otro indicador(I-2) construido sobre él(I-1).


Por ejemplo:

La posición del RSI en relación con Bollinger.

Pensé que era posible sustituir los datos en lugar del precio de cálculo

pero hay un error.

Ni siquiera está claro cómo has construido bb en RSI, es decir, la imagen está clara cómo se hace...


double  iBands( 
   string       symbol,           // имя символа 
   int          timeframe,        // таймфрейм 
   int          period,           // период 
   double       deviation,        // кол-во стандартных отклонений 
   int          bands_shift,      // сдвиг относительно цены 
   int          applied_price,    // тип цены 
   int          mode,             // индекс линии 
   int          shift             // сдвиг 
   );

su tipo de precio no es correcto - tiene que hacerlo con

double  iBandsOnArray( 
   double       array[],          // массив 
   int          total,            // количество элементов 
   int          period,           // период 
   double       deviation,        // кол-во стандартных отклонений 
   int          bands_shift,      // сдвиг относительно цены 
   int          mode,             // индекс линии 
   int          shift             // сдвиг 
   );
 
Aleksey Vyazmikin:

Sobre la tipicidad - su función de cálculo es retorcida y tal expresión if(!...) es utilizada por muy pocos principiantes según mis observaciones.


Entiendo lo que quieres decir. Quizá esté desarrollando mi propio estilo. Me gusta utilizar el operador if(!...) en este formato. Y la función de cálculo la obtuve de otra persona, pero me gusta esta lógica

 
Aleksey Vyazmikin:

Ni siquiera está claro cómo has construido el bb RSI, es decir, la imagen es clara como el hecho...


Su tipo de precio no es correcto - tiene que hacerlo a través de

Gracias por su respuesta.

Quedó claro hacia dónde se dirigen mis pensamientos.


La imagen es a modo de ilustración con las herramientas estándar de MT4 (Según el indicador anterior/primero).


Estoy familiarizado con los arrays sólo desde java... Estoy familiarizado con las matrices en java.

¿Cómo se crea y qué hay que poner?

F1 en el MetaEditor y el MQLQL Wizard no me dieron ninguna claridad...

 
voron_026:

Ya veo lo que quieres decir. Quizá esté desarrollando mi propio estilo. Me gusta utilizar el operador if(!...) en este formato. La función de cálculo la obtuve de otra persona, pero me gustó su lógica.


Veo que es usted un pensador profundo: ¡buena suerte!

 
Ras al Ghul:

Gracias por su respuesta.

Ha quedado claro hacia dónde dirigir mis pensamientos.


La imagen es a modo de ilustración con las herramientas estándar de MT4 (Según el indicador anterior/primero).


Estoy familiarizado con los arrays sólo desde java... Estoy familiarizado con los arrays en Java, y sólo a simple vista.

¿Cómo se crea y qué hay que poner?

El F1 en el MetaEditor y el MQLQL-learning no me dieron ninguna claridad...


Crear un array y mediante un bucle (por ejemplo, for) llenarlo con el valor del indicador. Y luego usar la funcióniBandsOnArray().

 
Aleksey Vyazmikin:

Crea un array y utiliza un bucle (por ejemplo, for) para llenarlo con el valor del indicador. Y luego usar la funcióniBandsOnArray().


O tu versión es muy compleja o no entiendo el valor del que hablas...


double Array[], BB;  


 Array[1] = iRSI(Symbol(),TimeFrame,14,PRICE_CLOSE,1);
BB = iBandsOnArray(Array[1],0,34,1,0,MODE_UPPER,1);

Mi variante genera un error en el fragmento seleccionado:

'Array' - array requerido.

¿No es así como se introduce un valor de indicador en un array?


 
Aleksey Vyazmikin:

¿Está seguro de que se está dibujando un objeto y no muchos en las mismas coordenadas?



Sí, tienes razón. Los rectángulos se dibujan en las mismas coordenadas. He resuelto el problema de la siguiente manera:

void OnTick()
{
Fun_New_Bar();

   if(UseDojiCandles = true && Doji() == 1 && New_Bar == true)
     {
      datetime time0 = iTime(Symbol(),TimeFrame,0);
      datetime time1 = iTime(Symbol(),TimeFrame,1);
      double open0 = iOpen(Symbol(), TimeFrame,0);
      double open1 = iOpen(Symbol(), TimeFrame,1);

      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вверх");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 
         
         DojiCandle ++;
     }
   

   
   if(UseDojiCandles = true && Doji() == -1 && New_Bar == true)
     {
      datetime time0 = iTime(Symbol(),TimeFrame,0);
      datetime time1 = iTime(Symbol(),TimeFrame,1);
      double open0 = iOpen(Symbol(), TimeFrame,0);
      double open1 = iOpen(Symbol(), TimeFrame,1);
      
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вниз");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 

         DojiCandle ++;
     }
     

   
}
He añadido una variableTimeFrame, para cambiar rápidamente el plazo calculado
 
Ras al Ghul:

O tu variante es muy complicada, o no entiendo el valor del que hablas...


En mi variante, la pieza resaltada es jurada:

'Array' - array requerido.

¿No es así como se introduce un valor de indicador en un array?


Array[1] = iRSI(Symbol(),TimeFrame,14,PRICE_CLOSE,1);
BB = iBandsOnArray(Array,0,34,1,0,MODE_UPPER,1);
Razón de la queja: