[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 392

 

Hola a todos, creo que he escrito en el lugar correcto. Tengo muchas ganas de aprender el lenguaje de programación mql4 para empezar con los scripts, luego los indicadores y los EAs, en concreto, ahora me he propuesto escribir yo mismo un EA para operar con una de las tácticas. (He leído en el foro que empiezan con guiones). Soy un experto en codificación, sé poco de Pascal y Delphi y he estudiado C ++, he leído mql pero creo que no es tan diferente. Necesito ayuda para escribir programas correctos o incorrectos de optimización de código, etc. ¿Quién puede ayudar?

¡¡¡Gracias de antemano!!!

 

Por favor, aconsejar sobre el ejemplo, aquí es un código simple, asesor abre BAY con la parada y el beneficio, y pone la orden pendiente. Que debo escribir en el código, para que cuando llegue a un beneficio, se borre la orden pendiente y todo comience desde el principio..... y cuando llegue a un stop, por ejemplo, Alerta ("Stopak").

//+------------------------------------------------------------------+
//| prueba.mq |
//| Copyright © 2011 |
//| http:// |
//+------------------------------------------------------------------+
#property copyright ""
#enlace de la propiedad ""
extern double Lote = 0,01;
extern int Beneficio = 200;
extern int StopLoss = 200;
extern double Paso = 0,0020;
//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
{
{ OrderSend(Symbol(),OP_BUY,Lot,Ask,30,Ask-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green); }
{ OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-Step,30,Ask,Ask-Step-TakeProfit*Point,0,0,0,Red); }
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+

 
MIR-ASOV:

Por favor, asesorar sobre el ejemplo, aquí es un código simple, el EA abre BAY con una parada y el beneficio, y pone orden pendiente. ¿Qué tengo que escribir en el código, de modo que cuando se obtiene una ganancia pendiente eliminado y todo comenzó over..... y cuando se obtiene una parada, por ejemplo, se Alert ("Stopak").

//+------------------------------------------------------------------+
//| prueba.mq |
//| Copyright © 2011 |
//| http:// |
//+------------------------------------------------------------------+
#property copyright ""
#enlace de la propiedad ""
extern double Lote = 0,01;
extern int Beneficio = 200;
extern int StopLoss = 200;
extern double Paso = 0,0020;
//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
{
{ OrderSend(Symbol(),OP_BUY,Lot,Ask,30,Ask-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green); }
{ OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-Step,30,Ask,Ask-Step-TakeProfit*Point,0,0,0,Red); }
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+

Busca en los libros de texto un algoritmo para contabilizar los pedidos. Entonces, conecte la lógica a todo esto y el resultado será obvio.

Además, trabaja en la sintaxis del código. Un montón de llaves rizadas...


frixer:

Hola a todos, creo que he escrito en el lugar correcto. Tengo muchas ganas de aprender el lenguaje de programación mql4 para empezar con los scripts, luego los indicadores, y los EAs, en concreto, ahora me he propuesto escribir yo mismo un EA para operar por una de las tácticas. (He leído en el foro que empiezan con guiones. No estoy muy familiarizado con la programación, estudios de Pascal, Delphi y C++, he leído mql pero creo que no son tan diferentes. Necesito algunos consejos de cómo escribir programas bien o mal, optimización de código, etc. ¿Quién puede ayudar?

¡¡¡Gracias de antemano!!!

Así que escriba aquí, podemos ayudarle. ¿O necesitas un profesor particular a domicilio? :)))
 

Cómo realizar dicha acción en un EA:

Todas estas condiciones pueden no seguirse una tras otra (puede ser después de una hora o dos o tres), así que tenemos que hacer que tan pronto como el indicador llegue a 1.0000, esta condición no se compruebe más en cada tick, y esperar hasta que una barra cierre con caída, y después de eso estas 2 condiciones no se comprueben en cada tick, y esperar hasta que el indicador llegue a 0.9980 o menos. En cuanto se cumplan todas las condiciones, abrimos una orden de mercado para vender 0,1 lotes con un stop loss de 100p y un take profit de 400p.

¿Alguien puede ayudar? ¿Tal vez alguien tiene un ejemplo listo o me da un enlace?

 
kolyango:

Cómo realizar dicha acción en un EA:

Todas estas condiciones pueden no seguirse una tras otra (puede ser después de una hora o dos o tres), así que tenemos que hacer que tan pronto como el indicador llegue a 1.0000, esta condición no se compruebe más en cada tick, y esperar hasta que una barra cierre con caída, y después de eso estas 2 condiciones no se comprueben en cada tick, y esperar hasta que el indicador llegue a 0.9980 o menos. En cuanto se cumplan todas las condiciones, abrimos una orden de mercado para vender 0,1 lotes con un stop loss de 100p y un take profit de 400p.

¿Alguien puede ayudar? ¿Tal vez alguien tiene un ejemplo listo o me da un enlace?

Cuando se produce un evento, pon una condición booleana y un tiempo de caducidad.
 
kolyango:

Cómo realizar dicha acción en un EA:

Todas estas condiciones pueden no seguirse una tras otra (puede ser en una hora o dos o tres), por lo que tenemos que hacer que en cuanto el indicador llegue a 1.0000, esta condición ya no se compruebe en cada tick, y esperar hasta que una barra cierre con caída, y después de eso estas 2 condiciones no se comprueben en cada tick, y esperar hasta que el indicador llegue a 0.9980. Una vez que se cumplan todas las condiciones abrir una orden de mercado para vender 0.1 lote con un stop loss de 100p y take profit de 400p.

¿Alguien puede ayudar? ¿Tal vez alguien tiene un ejemplo listo o me da un enlace?


Aquí hay un artículo para ayudar - mira la analogía allí...

En el remolque - la inclusión de la ejecución de estos criterios de negociación de acuerdo con este artículo, escrito de acuerdo con el tutorial, ver aquí.

Lo tienes todo de la misma manera...

Archivos adjuntos:
criterion.mqh  12 kb
 
kolyango:

Cómo realizar dicha acción en un EA:

Todas estas condiciones pueden no seguirse una tras otra (puede ser en una hora o dos o tres), por lo que tenemos que hacer que en cuanto el indicador llegue a 1.0000, esta condición ya no se compruebe en cada tick, y esperar hasta que una barra cierre con caída, y después de eso estas 2 condiciones no se comprueben en cada tick, y esperar hasta que el indicador llegue a 0.9980. Una vez que se cumplan todas las condiciones abrir una orden de mercado para vender 0.1 lote con un stop loss de 100p y take profit de 400p.

¿Alguien puede ayudar? ¿Tal vez alguien tiene un ejemplo listo o me da un enlace?

Es tan sencillo como eso. Utilicemos las banderas como semáforo. Habrá tres bloques de código, cada uno de los cuales se ejecutará sólo si el anterior ya se ha ejecutado.

Inicialmente todas las banderas ==false.

En cuanto se cumple la primera condición, ponemos la primera bandera=true; ahora se ejecuta el segundo bloque de código. Tan pronto como se cumpla su condición, establece la segunda bandera=true;
Ahora se ejecuta el tercer bloque de código. En cuanto se cumpla su condición, establece la tercera bandera=true; Y así sucesivamente.

 
artmedia70:

Es tan sencillo como eso. Usemos las banderas como un semáforo. Habrá tres bloques de código, cada uno de los cuales se ejecutará sólo si el anterior ya se ha ejecutado.

Inicialmente todas las banderas ==false.

En cuanto se haya ejecutado el primero, ponemos first flag=true; Ahora se ejecuta el segundo bloque de código. Tan pronto como se cumpla su condición, establece la segunda bandera=true;
Ahora se ejecuta el tercer bloque de código. En cuanto se cumpla su condición, establece la tercera bandera=true; Y así sucesivamente.



Y cuando para soltar las banderas no escribió
 

¿Me puedes decir qué tipo de letra utiliza el terminal? Me gustaría que mis comentarios fueran los mismos que los estándar

if(spread >= 20)
       spreadColor = Red;
  else
       spreadColor = White;
  ObjectSetText("Spread", "Spread " + Symbol() + ": " + DoubleToStr(spread, 0), 8, "Tahoma Bold"/*"Calibri"*/, spreadColor);//"Webdings"
 

Chicos, al optimizar en un terminal, inicio una prueba en otro terminal y este último se bloquea con este error... ¿alguien sabe cuál es la posible razón? Antes, cuando iniciaba este terminal - me pedía una actualización a la versión 409, lo actualizaba, se reiniciaba y seguía pidiendo la misma actualización... yo - cancelaba, cerraba, luego lo ejecutaba yo mismo... seguía pidiendo esta actualización.

Todavía no he comprobado si hay un nuevo terminal... La carga de la CPU está al 100% todo el tiempo... Ejecutando la prueba en el modo de visualización en el tercer terminal - probado bien...


Razón de la queja: