Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 239
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
Gracias por la ayuda, pero en el trading real da igual cómo tomar el precio... Al fin y al cabo, habrá que poner tanto el indicador como el EA en el gráfico...
En el comercio real podrá obtener los datos. Mientras no borres accidentalmente las líneas del indicador...
Con uno de verdad podrás recibir datos. Si no quitas accidentalmente las líneas indicadoras...
Tengo una pregunta más. Tengo un Asesor Experto impresionante. Pero necesita hacer lo siguiente: cuando cruza una línea, se abre una orden adicional en esta dirección, y luego se cierra en beneficio... ¿Cómo hacer para que después de cerrar en beneficio, la orden adicional no se abra de nuevo? ¿Hasta que se actualice la línea del indicador?
Buenas tardes! Necesito un poco de ayuda con el código que:
abre BUY si el archivo 11112222.txt contiene 1;
abre SELL si el archivo 11112222.txt contiene -1;
cierra todas las órdenes si el archivo 11112222.txt contiene 0;
Dado el archivo 11112222.txt, sólo puede haber tres entradas: 1, -1 o 0
No entiendo qué es lo que falla en este código; por alguna razón, si veo 0 en el archivo 11112222.txt, se abre la orden BUY, en lugar del código de la orden cerrada, no sé qué es lo que falla.
Ay, también hay un problema, cuando el EA se está ejecutando, casi siempre es imposible abrir 11112222.txt, dice que el archivo está ocupado con otra aplicación, así que para arreglar este problema pongo FileClose(handle2); // Cerrar archivo de texto; pero no ayuda y necesito que el EA compruebe el archivo 11112222.txt para 1, -1 o 0 después de que se abrió y luego cerrarlo, porque el archivo es utilizado periódicamente por otro programa para poner 1, -1 o 0.
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
Print(FileReadString(handle2));
FileClose(handle2); // закрытие текстового файла
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
//=================================SELL=========================================
int handle3 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle3<0)//если в текстовом файле меньше 0, то есть -1, то открывать SELL
{
Print(FileReadString(handle3));
FileClose(handle3); // закрытие текстового файла
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на продажу
{
OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle3); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle3); // закрытие текстового файла
}
//=================================конец кода SELL=========================================
//=================================ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
int handle4 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle4=0)//если в текстовом файле равно 0, то закрыть все ордера
{
Print(FileReadString(handle4));
FileClose(handle4); // закрытие текстового файла
//-----------------код закрывает все ордера--------------------
bool result;
int error;
while (OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
else Print( "Error when order select ", GetLastError());
FileClose(handle4); // закрытие текстового файла
}
//------------конец кода закрывающего ордера------------------
FileClose(handle4); // закрытие текстового файла
}
//=================================конец кода ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
Buenas tardes! Necesito un poco de ayuda con el código que:
abre BUY si el archivo 11112222.txt contiene 1;
abre SELL si el archivo 11112222.txt contiene -1;
cierra todas las órdenes si el archivo 11112222.txt contiene 0;
Se da el archivo 11112222.txt y sólo puede tener tres entradas: 1, -1 o 0.
Por alguna razón, cuando el 0 está en el archivo 11112222.txt, abre la orden BUY, mientras que debería activar el código de cierre de la orden; no entiendo cuál es el error.
Entonces, también hay un problema, cuando el EA se está ejecutando, casi siempre es imposible abrir 11112222.txt, porque dice que el archivo está ocupado con otra aplicación. Pongo FileClose(handle2); // Cerrar archivo de texto; pero no funciona y necesito que el EA compruebe el archivo 11112222.txt para 1, -1 o 0 y lo cierre, porque cada segundo otro programa utiliza este archivo para poner 1, -1 o 0 en él.
Porque el manejador del archivo no es el contenido del archivo.
Primero hay que leer el contenido del archivo y sólo después establecer la condición. Es al revés, tienes una condición por mango, luego lees el archivo y lo cierras.
Porque el manejador del archivo no es el contenido del mismo.
Primero hay que leer el contenido del archivo y sólo después poner la condición. En tu caso es al revés, condición por mango, luego leer archivo y cerrarlo.
1) - Esta parte abre el archivo 11112222.txt para leer los datos del mismo:
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - A continuación viene la condición si handle2>0
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3) - Esta es la parte que no entiendo:
Print(FileReadString(handle2));
4) - Esta parte cierra el archivo:
FileClose(handle2); // закрытие текстового файла
5) - Como se cumple la condición handle2>0, es decir, el archivo 11112222.txt contiene 1, abre una orden de compra:
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
Saludos tratando de escribir un script para cerrar órdenes.
Si abro varias órdenes de venta y de compra alternativamente e intento cerrarlas con esta orden, sólo se cierran algunas, el resto obtienen el error 129 (Precio incorrecto).
He intentado hacer un script que por ejemplo haga 10 intentos * sobre el número de pedidos, con pausa en caso de error.
Por lo general, cumple con su tarea después de un buen número de intentos, en los que se emite el mismo error 129. Pero mientras trata, con muchos intentos, de cerrar las órdenes fuera se puede cerrar manualmente, y esto no causa errores, se cierran.
¿Qué estoy haciendo mal?
Saludos tratando de escribir un script para cerrar órdenes.
Si abro varias órdenes de venta y compra alternativamente e intento cerrarlas con esta orden, sólo se cierran algunas, el resto obtienen el error 129 (Precio incorrecto).
He intentado hacer un script que por ejemplo haga 10 intentos * sobre el número de pedidos, con pausa en caso de error.
Por lo general, cumple con su tarea después de un buen número de intentos, en los que se produce el mismo error 129. Pero mientras trata, con muchos intentos, de cerrar las órdenes fuera se puede cerrar manualmente, y esto no causa errores, se cierran.
¿Qué estoy haciendo mal?
En general, lo que escribes no se puede operar en una cuenta real, es sólo para un probador
En general, lo que se escribe no debería permitirse operar en una cuenta real, es sólo para el probador
Ayuda, gracias.
En general, lo que escribes no se puede operar en una cuenta real, es sólo para un probador
¿Puede explicar con más detalle por qué "no se permite comerciar..."?
¿Puede explicar con más detalle por qué "no se permite comerciar"?
No hay comprobación de errores, y si el servidor se cierra y genera un error crítico, el EA seguirá machacando el servidor, y esto huele a prohibición de seguir haciendo auto-trading por parte de la empresa de corretaje.