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

 
Igor Makanu:

Los Asesores Expertos no tienen buffers de indicadores y no dibujan en el terminal

Lea en la ayuda cuál es la diferencia entre Asesores Expertos y scripts e indicadores

Gracias por su respuesta.

¿Pueden decirme cómo implementar esta funcionalidad?

 

Ayuda para pasar un array a una función

tener una estructura

struct pattern
  {
   double            x;
   datetime          y;
 };  

Declaro un par de matrices estáticas como esta estructura

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

Ahora, quiero pasar un array estático a una función, pero me da un error - '[' - array requerido

void MyFunction(pattern &array)
{
   Print(array[1][1].x," ",array[1][1].y);
   }

¿Cómo puedo pasar correctamente una matriz a una función?

 
Tango_X:

Ayuda para pasar un array a una función

tener una estructura

Declaro un par de matrices estáticas como esta estructura

Ahora, quiero pasar un array estático a una función, pero me da un error - '[' - array requerido

¿Cómo puedo pasar correctamente una matriz a una función?

void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin:

¡Gracias! ¡Super!

 
Alexander Layzerevich:

Gracias por su respuesta.

¿Pueden decirme cómo implementar esta funcionalidad?

sólo por separado un Asesor Experto que llama a un indicador a través de iCustom() y por separado un indicador para un gráfico

en que el Asesor Experto, al llamar al indicador, utilizará una nueva copia del indicador, es decir, si ejecuta el Asesor Experto en un gráfico y cambia su configuración (la que pasa a iCustom() ), el indicador no reaccionará en el gráfico

el indicador, que fue llamado por el Asesor Experto, se mostrará en el Probador de Estrategias al final de la prueba. Durante la prueba en modo visual, puede lanzar el indicador en el gráfico del Probador de Estrategias....

Si desea utilizar el indicador de una manera diferente, puede utilizar el indicador de su propia elección, pero no sé cómo cambiar los parámetros en la plantilla ... tal vez alguien lo haya hecho

 
Alexander Layzerevich:

Gracias por su respuesta.

¿Pueden decirme cómo implementar esta funcionalidad?

Dibujar líneas(OBJ_TREND)

 
Alexander Layzerevich:

Gracias por su respuesta.

¿Pueden decirme cómo implementar esta funcionalidad?

Si dibuja las líneas del indicador sin usar el indicador en absoluto, sino sólo con los cálculos transferidos desde el indicador al Asesor Experto, entonces sólo con objetos gráficos - líneas de tendencia. Sin embargo, es caro. Pero podemos limitar el área de visibilidad de las barras en el gráfico.

 

Gracias por los consejos.

De hecho, el Indicador hace lo mismo.

Es decir, tengo valores calculados y necesito conectarlos con líneas(OBJ_TREND)

 
Igor Makanu:

hay que cambiar al menos un parámetro al modificar un pedido, error nº 1 - si no hay que cambiar nada después de enviar una solicitud al servidor

desimprimir lo que ha enviado al servidor, lo verá enseguida.

El error se mantiene, aunque he añadido una condición adicional para comprobar si hay un stop o un beneficio

if(OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0))


También para el arrastre

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov:

El error se mantiene, aunque he añadido una condición adicional para comprobar la presencia de stop o profit

También para el arrastre

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)
Razón de la queja: