[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 285
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Quizás la función https://www.mql5.com/ru/forum/107476/page21 pueda ayudar.
Función isCloseLastPosByTake().
Esta función devuelve una bandera para cerrar la última posición de la toma.
Bandera arriba - Verdadero - Se activó el TakeProfit.
Bandera bajada - Falso - la posición se cerró debido a otra razón.
La función propiamente dicha debe colocarse al final del código. También añado a la condición de vender:
Buenos días, tardes o mañanas a todos vosotros.
Hice todo como lo escribí. Puse la función al final del código y la añadí a mis condiciones de venta.
Acabo de pensarlo y lo he añadido para comprarlo. Los pedidos se cerrarán no sólo por BUY, sino también por SHELL.
He insertado la función isCloseLasPosByTake() al final.
2;116;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;104:33;'(' - function definition unexpected 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;109:7;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;109:14;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;112:27;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;112:33;'sy' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;114:15;'op' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;114:37;'op' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;115:17;'mn' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;115:46;'mn' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;116:19;'t' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;117:17;'t' - variable not defined 2;75;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;127:19;'sy' - variable not definedAquí hay una tarta de este tipo, o como decía pfc Gotsman pintura al óleo. ayuda al tonto a salir.... no sabe nada.......
el propio código (es decir, sólo el inicio)
Específicamente escribí en mi post. ¡Que esta función isCloseLastPosByTake() - debe colocarse al final del código, ANTES de la FUNCIÓN START!
¿Y dónde lo pusiste?
Y cuidado con los corchetes en las condiciones de compra y venta. Ahí te faltan claramente (comprueba - que el número de paréntesis abiertos es igual al número de cerrados). Aquí se corrigió la venta :
¡¡¡Buenos días!!!
¡Necesito ayuda! Me disculpo por no ser modesto.
Pero este es mi problema, tengo un EA que se basa en un Martin, coloca la primera orden de VENTA o COMPRA, lo que yo quiera, pero quiero poder elegir COMPRA o VENTA en las propiedades del EA. Es decir, pongo por ejemplo COMPRA en sus propiedades y se abre una orden sólo de COMPRA, o lo contrario.
Me temo que aún no he aprendido a programar en MQL4 .
Adjunto el propio asesor.
¡Gracias de antemano a los que respondan!
Específicamente escribí en mi post. ¡Que esta función isCloseLastPosByTake() - debe colocarse al final del código, ANTES de la FUNCIÓN START!
¿Y dónde lo pusiste?
Y presta más atención a las llaves en las condiciones de compra y venta. Ahí te faltan claramente (comprueba - que el número de paréntesis abiertos es igual al número de cerrados). Aquí está el arreglo de la venta :
Lo puse después del inicio fi, así que entiendo.....
Lo he entendido mal entonces, gracias por el pinchazo :-))
Si lo he entendido bien, debería ponerse después de } al final del bloque de función de desinicialización de expertos ??????? o después de return(0); al final de start-???????
¡¡¡¡¡¡¡¡¡Gracias de antemano por su paciencia!!!!!!!!!
Lo puse después de la función de inicio, por lo que entiendo.....
Lo he entendido mal, gracias por el pinchazo :-))
Si he entendido bien, debe ponerse después de } al final del bloque de función de desinicialización de expertos ??????? o después de return(0); al final de start-???????
¡¡¡¡¡¡¡¡¡Gracias de antemano por su paciencia!!!!!!!!!
Debe colocarse en el exterior. No dentro de ninguna función, - sino como una función independiente.
Así:
No estoy seguro de que en estas condiciones, el Asesor Experto funcione. Porque la primera posición no podrá abrir...
La función isCloseLastPosByTake() debe ser eliminada de una condición de compra o venta.
Entonces el asesor trabajará.
¡¡¡Buenos días!!!
Pero este es mi problema, tengo un EA que se basa en un Martin, coloca la primera orden de VENTA o COMPRA, lo que yo quiera, pero quiero poder elegir COMPRA o VENTA en las propiedades del EA. Es decir, pongo por ejemplo COMPRA en sus propiedades y se abre una orden sólo de COMPRA, o viceversa.
Adjunto el propio EA.
¡Gracias de antemano a todos los que respondan!
Es poco probable que nadie responda. El EA está descompilado (hackeado) y esos archivos no son bienvenidos aquí...
WinExec("C:\\Program Files\\Opera\\opera.exe http://www.mail.ru",2);Hola a todos, esto es lanzar el enlace con un navegador específico, pero ¿cómo puedo lanzar el mismo enlace por defecto?Es decir, el navegador por defecto
ShellExecute, el comando "abierto", por así decirlo.
He decidido estudiar MQL 4 ya que todo lo que he encontrado no cumple con mis aspiraciones. En este momento estoy estudiando para entender cómo funcionan los profesionales y mejorarlo para mi idea. Hay una (simple y pequeña, una página) función personalizada, el código se adjunta. Debido a mi amateurismo, no puedo durante dos días entender - lo que esta función devuelve como resultado, y que condición anidada es el Else?
¿Alguien podría plantar una chispa de conocimiento en mi torpeza?
Lo que consigo es esto:
El propósito de la función es determinar si ya existe un pedido para este par y, si lo hay, determinar su tipo.
La función que llama a esta función espera la presencia de uno de los pedidos seleccionados en el procedimiento interruptor, La función debe devolver "1", en presencia de dos órdenes - "2", y en ausencia de órdenes "-1".
El ciclo se inicia si l_pos_16= 0. Supongamos que tenemos cuatro órdenes pendientes en total para algunos pares, incluyendo dos en el par donde el EA está trabajando y no son las primeras.
Sin embargo, en la primera iteración del bucle, la función if(OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) comprueba la posición con el número "0" en la lista de pedidos, pero no existe tal posición (porque entiendo que la numeración es a partir de la posición 1) y entonces pasará a la siguiente. si no con salida completa de fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12) con devolución del valor Retorno(-1).
Se pierde el sentido de la función en su conjunto, ya que el resultado debería ser el mismo independientemente de la presencia o ausencia de órdenes en el símbolo dado .
Sin embargo, cuando el EA funciona, esta función define y da lo que la función llamada espera de ella, que luego trabaja en función del resultado obtenido .
Tampoco entiendo qué si no Return(-1) funcionará en
if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
O mismo en if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
El código de la función :
int fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12)
a_count_0= 0;
a_count_4 = 0;
a_count_8 = 0;
a_count_12 = 0;
gi_252 = 0;
for (int l_pos_16 = 0; l_pos_16 < OrdersTotal(); l_pos_16++) {
if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
switch (OrderType()) case OP_BUY:
a_count_0++;
gi_252 = 1;
g_ticket_268 = OrderTicket();
gs_272 = OrdenComentario();
g_ord_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = OrderStopLoss();
g_ord_takeprofit_296 = OrderTakeProfit();
romper;
caso OP_SELL:
a_count_4++;
gi_252 = -1;
g_ticket_268 = OrderTicket();
gs_272 = OrdenComentario();
g_ord_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = OrderStopLoss();
g_ord_takeprofit_296 = OrderTakeProfit();
romper;
caso OP_BUYSTOP:
a_count_8++;
romper;
caso OP_SELLSTOP:
a_count_12++;
}
}
} si no, devuelve (-1);
}
devolver (a_count_0 + a_count_4 + a_count_8 + a_count_12);
/* la ejecución normal de la f-i devolverá uno en la variable en uno de caso y "0" en todos los demás, lo que indica que hay uno de
de los tipos de orden, y el número de esta orden está disponible para la función de llamada,
comentario, precio de apertura, stop loss y take profit */
}