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

 

Hola a todos.

1) Compilación de la EA.

2) Ejecutarlo en el probador.

3) Hay tres entradas en el registro:

2020.10.25 20:06:08.484 2020.09.24 00:00:00 Prueba de sobrecarga iniciada

2020.10.25 20:06:07.015 TestGenerator: spread 7 actual utilizado
2020.10.25 20:05:51.296 Expert UPDATE GBPUSD,M1: cargado con éxito


4)La visualización se mantiene en su sitio.

Por ejemplo, si se comete un error lógico, las operaciones no se ejecutarán, pero el probador deberá empezar a contar las barras. Pero el gráfico se congela y se queda quieto.

He probado varios otros Asesores Expertos, y todos funcionan.

Cuando ejecuto este todo se detiene.

¿Alguien ha tenido este problema? ¿Cómo solucionarlo?

 
Andrey Ilinykh:

Si se escriben los valores calculados en un registro o en un archivo, ¿cómo ayuda eso?

Encontrar el error, formar un algoritmo.

 
Alexey Viktorov:

Bueno, puedes calcular el ángulo con una tangente. Y realmente no necesitas un ángulo en sí, sólo necesitas una tangente.

La tangente es en todo caso un kilómetro por hora o un punto por milla o mil puntos por día y esa es la velocidad. La dimensionalidad del gráfico. y la tangente en él es el ángulo ligado a las dimensiones de ordenadas y abscisas. Este es el lugar para empezar.

 
Aleksei Stepanenko:

Sí, de nuevo la velocidad es sólo unidades: pips por minuto. En cuanto a los fines de semana y los agujeros, he decidido: lo que son velas en el gráfico es el intervalo de tiempo, y lo que no (días/horas), no existe. Porque si tenemos en cuenta los fines de semana, y el precio se mantiene en ese momento, la velocidad disminuirá notablemente sin ninguna razón. Pero bueno, eso es para cada uno:)

Por qué temer a la velocidad. Es sólo una convención para dar tipos.
Como variante de la función de definición de ángulos:

struct PointPriceTime
  {
   double            price;
   datetime          time;
                     PointPriceTime(double p, datetime t) { price=p; time=t; };
   void              Set(double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price=0.0; time=0; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[9]= {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
   int i=0;
   while(i<9 && SeriesInfoInteger(_Symbol,tf[i],SERIES_FIRSTDATE)>p1.time)
      i++;
   if(i==9)
     {
      Print("Время левой границы вне диапазона исторических данных");
      return DBL_MAX;
     }
   int bar1 = iBarShift(_Symbol,tf[i],p1.time);
   int bar2 = iBarShift(_Symbol,tf[i],p2.time);
   if(bar1==bar2)
      return 0.0;
   return atan((p2.price-p1.price)/((bar1-bar2)*PeriodSeconds(tf[i])*_Point/60))*180/M_PI;
  }

Después de MT5 la sensación de MT4 es simplemente horrible. El acceso a la historia está de alguna manera emasculado. Ni siquiera estoy hablando de las garrapatas.



Archivos adjuntos:
Angle.mq4  11 kb
iCanvas.mqh  49 kb
 

Por favor, indíquenos si existe la posibilidad de gestionar mediante programación la visualización de las descripciones de los niveles comerciales en el gráfico. ¿Es posible desactivarlas con las herramientas del MQL4 (dejando los niveles de negociación en el gráfico) o cambiarlas?


Necesito marcar visualmente algunos niveles de negociación dotándolos de sus propias descripciones. Para ello, creo líneas horizontales que son similares en estilo a los niveles de comercio, pero difieren en color. Establezco una descripción para ellos (OBJPROP_TEXT) y habilito la visualización de las descripciones de los objetos en el gráfico (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). En este caso, la descripción que he creado se superpone a lo que se muestra en la captura de pantalla y, como resultado, ninguna de las dos es legible.

¿Es posible desactivar o cambiar las descripciones de los niveles de negociación creados por el terminal? ¿Se puede acceder a estas descripciones desde el programa MQL?

 
Janis Ozols:

Por favor, indíquenos si existe la posibilidad de gestionar mediante programación la visualización de las descripciones de los niveles comerciales en el gráfico. ¿Es posible desactivarlas con las herramientas del MQL4 (dejando los niveles de negociación en el gráfico) o cambiarlas?


Necesito marcar visualmente algunos niveles de negociación dotándolos de sus propias descripciones. Para ello, creo líneas horizontales que son similares en estilo a los niveles de comercio, pero difieren en color. Establezco una descripción para ellos (OBJPROP_TEXT) y habilito la visualización de las descripciones de los objetos en el gráfico (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). En este caso, la descripción que he creado se superpone a lo que se muestra en la captura de pantalla y, como resultado, ninguna de las dos es legible.

¿Es posible desactivar o cambiar las descripciones de los niveles de negociación creados por el terminal? ¿Se puede acceder a estas descripciones desde el programa MQL?

Sí, lo hay,

desmarque la casilla de verificación.

1

 
Alekseu Fedotov:

Puedes,
desmarcar la casilla.

Si desmarca esta casilla, los niveles de negociación (líneas) desaparecen del gráfico junto con sus descripciones.

Al hacer la pregunta, estaba tratando de enfatizar que no quiero eliminar las líneas, sólo necesito cambiar o eliminar sus descripciones del gráfico (mostradas por las flechas en la captura de pantalla).

 
Janis Ozols:

Si desmarca esta casilla, los niveles de negociación(líneas) desaparecen del gráfico junto con sus descripciones.

Al hacer la pregunta, estaba tratando de enfatizar que no quiero eliminar las líneas, sólo necesito cambiar o eliminar sus descripciones del gráfico (mostradas por las flechas en la captura de pantalla).

No los necesitas, crea tus líneas en esos lugares

 
Vitaly Muzichenko:

No los necesita, crea sus líneas en esos lugares.

Sólo quiero resaltar algunos de los niveles existentes(para el ejemplo mostrado en la captura de pantalla, el superior), y dejar los demás como están.

Si es imposible acceder a las descripciones de estos niveles mediante programación, probablemente tendremos que desactivar los niveles en sí mismos y luego, en cada tic, encuestar al terminal para que los dibuje de forma independiente resaltando los niveles adecuados en otro color y dotándolos de una descripción diferente. Y no sólo hay niveles abiertos, sino también stop-losses y take-profits que también hay que trazar.

¿Quizás haya una forma más trivial de desactivar la descripción de los niveles de negociación (dejando sólo las líneas) o de cambiarlos?

 

¿Puede explicar en lenguaje sencillo cuál es la diferencia entre estas funciones?

//+------------------------------------------------------------------+
int    CountOrder(int Order_Type) 
   {
    int Orders=0;
    for(int a=OrdersTotal()-1;a>=0;a--)
    {
     if(OrderSelect(a, SELECT_BY_POS, MODE_TRADES)==false) continue;
     if(OrderSymbol()!=_Symbol) continue;
     if(Order_Type == OrderType() || Order_Type == -1) Orders++;
    }
    return Orders;
   }
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
  {
   int cnt=0;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
         if(OrderSymbol()==_Symbol)
            if(OrderType()==order_type)
               cnt++;
   return (cnt);
  }
//+------------------------------------------------------------------+