Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 86

 
smart_man:

¿Cómo hacer que los datos de todas las variables globales se guarden incluso después de cerrar el terminal en modo normal y anormal?

La pregunta se refiere a las variables declaradas al principio del código de esta manera:

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double  VAR1 = 1;

double VAR2[1000];

Necesito no perder los valores de VAR1 y VAR2 (el array se llena de datos durante el funcionamiento del Asesor Experto). Hasta ahora, la única idea es escribir los datos en un archivo (global.txt) en cada tick y luego, cuando se lanza el terminal, leer del archivo (global.txt) y recrear las variables y luego escribirlas de nuevo en cada tick. ¿Qué otras opciones hay?

Ya sea al global del terminal, o a un recurso.
 
Arseniy Barudkin:

Gracias por la ayuda. Lo he dejado así por ahora, ahora he decidido cambiar un poco las condiciones en las que se llama a la función. Y en general, me has ayudado mucho))

Tienes razón al no obtener respuesta. Hay que fijar el problema, de lo contrario no se puede resolver.

Echemos un vistazo a los TdR originales:

"Arseniy Barudkin2017.05.23 19:56 RU

¡Saludos Señores! No quiero tomarlo como una inundación, pero no puedo prescindir de esta característica. Así que chicos, ¿alguien puede ayudarme con una función que recorra todas las órdenes y elimine simultáneamente dos órdenes, una con el lote más pequeño y beneficio negativo de existir en el gráfico, y la segunda con el lote más grande y beneficio positivo también de existir. "

¿Qué vemos en el código que nos ha mostrado?

1. Todas las órdenes fueron abiertas por el Asesor Experto y tienen una Magia única.

2. El beneficio total de los pedidos que buscamos es positivo.

3. Las órdenes son opuestas.

4. El tamaño del lote con un beneficio positivo es estrictamente mayor que el tamaño del lote con uno negativo.

¿Dónde aparece esto en los términos de referencia presentados?

Además: se ve en el código que no sabes cerrar órdenes contrarias, perdiendo al menos el spread.

 
fxtz:

Pregunta ¿Puedo escribir un programa en Metatrader 4 para abrir de 2 a 250 posiciones de mi elección con un stoploss establecido y un beneficio establecido en un solo clic? Para no tener que abrir manualmente uno por uno

Si las limitaciones de su corredor son tan pronunciadas, el lenguaje de programación está diseñado para escribir scripts automáticamente.
 
Mislaid:

Tienes razón al no obtener respuesta. Hay que fijar el problema, de lo contrario no se puede resolver.

Echemos un vistazo a los TdR originales:

"Arseniy Barudkin2017.05.23 19:56 RU

¡Saludos Señores! No quiero tomarlo como una inundación, pero no puedo prescindir de esta característica. Así que chicos, ¿alguien puede ayudarme con una función que recorra todas las órdenes y elimine simultáneamente dos órdenes, una con el lote más pequeño y beneficio negativo de existir en el gráfico, y la segunda con el lote más grande y beneficio positivo también de existir. "

¿Qué vemos en el código que nos has mostrado?

1. Todas las órdenes fueron abiertas por el Asesor Experto y tienen una Magia única.

2. El beneficio total de los pedidos que buscamos es positivo.

3. Las órdenes son opuestas.

4. El tamaño del lote con un beneficio positivo es estrictamente mayor que el tamaño del lote con uno negativo.

¿Dónde aparece esto en los términos de referencia presentados?

Además: el código muestra que no sabe cerrar las órdenes de contador, perdiendo al menos el spread.


¡No discuto muchos defectos! Me estoy iniciando en este tipo de actividad. Escribo en este hilo para que me ayuden o me señalen los errores. Creo que es para esto. Ahora el código. 1) Tal vez, no entiendo algo, pero ¿qué pasa con el hecho de que todas las órdenes en el Asesor de Expertos tienen un único Magic? 2) Esta condición y en general toda esta función está diseñada para que en caso de una fuerte carga de margen se cierren por lo menos dos órdenes contrarias y no se vaya en rojo, los puntos 3 y 4 se refieren a lo mismo. Y la verdad es que no sé cómo cerrar correctamente las contraórdenes.
 
Arseniy Barudkin:

¡No discuto muchos defectos! Recién estoy entrando en esta línea de trabajo. ¡Y escribo en este hilo para que me ayuden o me señalen errores! En mi opinión, esto es para lo que sirve. Ahora el código. 1) Tal vez, no entiendo algo, pero ¿qué pasa con el hecho de que todas las órdenes en el Asesor de Expertos tienen un único Magic? 2) Esta condición y en general toda esta función está diseñada para que en caso de una fuerte carga de margen se cierren por lo menos dos órdenes opuestas y no se vaya en rojo, los puntos 3 y 4 se refieren a lo mismo. No sé cómo cerrar correctamente las órdenes opuestas.
Si fueras mi alumno, te daría un "bien" por presentar el código. Y, si en el proceso de comunicación, pudieras demostrar que eres capaz de generar ideas, entonces "excelente" Por tu respuesta, veo que estás pensando correctamente
 

Hola ... EA escrito en MQL4, negocia órdenes de mercado Compra, Venta conTrailing... Decidí añadir pendientes BuyStop, SellStop ... y me encontré con un problema inesperado = tan pronto como cualquierorden pendiente aparece en la ventana de MT4,el Trailing deja de funcionar(SL no se establece,Modificar no está allí)... No entiendo cuál es el problema, la funcióntrailing es estándar con el backtracking de la biblioteca, dos pp seleccionados.... o no se trata de la función? ¿Quizás alguien se ha encontrado con algo así?

int TralFunck(int Ticket)

 {   double TralPrice=0,Punkt=0;

   chk=OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);

for(Ticket=OrdersTotal()-1; Ticket>=0; Ticket--)  

  { if (OrderProfit()<=0)       continue;

    if (OrderType()==4)		 continue;

    if (OrderType()==5) 	 continue;

   if (OrderType()==0)  {   Punkt=(Bid-OrderOpenPrice())/Point;TralPrice=NormalizeDouble((Bid-Tral*D*Point),Digits);  }

   if (OrderType()==1)  {   Punkt=(OrderOpenPrice()-Ask)/Point;TralPrice=NormalizeDouble((Ask+Tral*D*Point),Digits);   }

   if (Punkt<MarketInfo(Symbol(),MODE_STOPLEVEL))       continue;

   if(Punkt<(Tral+TP)*D)        continue;

   if(OrderType()==0 && TralPrice<=NormalizeDouble(OrderStopLoss(),Digits))     continue;

   if(OrderType()==1 && TralPrice>=NormalizeDouble(OrderStopLoss(),Digits) && OrderStopLoss()!=0)       continue;

   ModifyOrder(OrderTicket(),OrderOpenPrice(),TralPrice,OrderTakeProfit());     continue;

   }   return(0);

 }


 
Yaroslav Nykula:

Hola ... EA escrito en MQL4, negocia órdenes de mercado Compra, Venta conTrailing... Decidido a añadir pendientes BuyStop, SellStop ... y me encontré con un problema inesperado = tan pronto como cualquierorden pendiente aparece en la ventana de MT4,el Trailing deja de funcionar(SL no se establece,Modificar no está allí)... No entiendo cuál es el problema, la funcióntrailing es estándar con el backtracking de la biblioteca, se han añadido dos páginas seleccionadas. ... o no se trata de la función? ¿Quizás alguien se ha encontrado con algo así?



Sustituir return(0); por continue; para no salir del bucle. Al final de la función déjalo como está.

Utilice el botón SRC en el editor para insertar el código

 
Victor Nikolaev:


Sustituir return(0); por continue; para no salir del bucle. Al final de la función, déjalo como está.

Utilice el botón SRC en el editor para insertar el código


Gracias... Lo arreglé... Tendré en cuenta el botón SRC en el editor, lo siento ... Pero el problema sigue siendo el mismo,Trailing yModify no quieren trabajar conpedidos pendientes.
 
Recientemente he empezado a operar en mt4. He decidido probar mi estrategia, pero en el probador de estrategias no tengo la función de visualización ni el botón de pausa.
 
vsmutew7:
Recientemente he empezado a operar en mt4. Decidí probar mi estrategia, pero mi probador de estrategias no tiene una función de visualización ni un botón de pausa.

Probablemente se necesite una ventana más amplia, sobre todo la del botón "Inicio

Razón de la queja: