[¡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 64
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
¿Pueden aconsejar cómo hacer que un EA abra una orden para varios símbolos a la vez? >> ¡Gracias de antemano!
Esto no es posible porque el EA puede abrir una orden para un solo símbolo, y luego hay que esperar a que la operación (y no siempre tiene éxito y no siempre es rápida) libere el flujo de operaciones para otras órdenes.
Señores, por favor, aconsejen a un recién llegado. He descargado el tutorial MQl4BookRussian.chm (autor Sergey Kovalev), el problema es que la impresión desde este formato es muy desordenada. Probyby ha copiado este texto en formato doc, las imágenes desaparecen. ¿Sabe si el libro de texto está disponible en un formato adecuado para imprimir (para leer en un monitor, los ojos se cansan)?
Pruebe la versión en línea del libro de texto directamente desde el sitio web - https://book.mql4.com/ru/. Y puedes transferirlo a doc sin problemas.
Esto no es posible porque un EA sólo puede abrir una orden en un símbolo, después de lo cual hay que esperar a que la operación comercial se realice (y no siempre tiene éxito y no siempre es rápida) y el flujo comercial quedará libre para otras órdenes.
Con el flujo de operaciones lo entiendo todo, pero ¿cómo hacer sucesivamente en 3 instrumentos con un intervalo mínimo de apertura de las operaciones (según el algoritmo del asesor la apertura debe comenzar en un determinado segundo en tres divisas a la vez)? Si no le importa, ¿podría publicar un fragmento de código como ejemplo? Se lo agradecería mucho.
int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}
Si este es todo el código, ni siquiera compila. Si se sustituye el lote por un número, el EA funciona bien.
Entiendo todo lo relacionado con el flujo de operaciones, pero ¿cómo hacer que las operaciones se abran consecutivamente en 3 símbolos con intervalos mínimos (según el algoritmo del EA, la apertura debe comenzar en un determinado segundo en tres divisas a la vez)? Si no le importa, ¿podría publicar un fragmento de código como ejemplo? Estaré muy agradecido.
¿Supongo que sólo se necesitan 3 órdenes para abrir diferentes instrumentos? Por qué no hacer una variable de bandera, por ejemplo
Crear en variables globales
int flag=0;
string Symb;
///////////////
más
int start()
{
if (условие открытия)
{flag=1;}
if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}
if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}
if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}
También estaría bien añadir una comprobación abierta y sólo mover la bandera después de que la comprobación tenga éxito.
Si este es todo el código, ni siquiera compila. Si sustituye el Lote por un número, el Asesor Experto funciona bien.
Compruebe el tipo de datos del lote. Debería ser doble.
Así que, a simple vista. No entendí las condiciones, pero no hay cruce en la segunda variante.
Una cosa más -- la función OrderSend devuelve un ticket int, por lo que es correcto comprobar el éxito así:
En su caso, debe comprobar si es incorrecto:
______
Sí, no sé cómo otros, pero para mí la palabra "expertos" suena a burla. Tal vez por eso no te han contestado durante tanto tiempo. ;)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡Hola!!!!!!!!!!!!!!
Sí, digas lo que digas........ no lo llames así..... Aunque expertos es la abreviatura de especialistas (personas con conocimientos, profesores, por así decirlo).
No me importa...... Me refería sólo a lo positivo y amable ........
No importa........
Al principio de este hilo pregunté por el MA. Las respuestas fueron muy inteligentes. Ahora vuelvo a hacerlo.
Una idea surgió.....
He decidido modificar un poco las condiciones de negociación. Pero no funcionó(((((((( Quería poner open_1 y open_0 (precio de apertura en la primera barra y
Precio abierto en una barra cero) Cuando lo comprobé daba errores, tuve que volver a la versión original (que he dado más arriba).
Según me explicaron open[1] es una llamada de celda del array con nombre open e índice [1]. Todo esto es bueno...... pero sólo necesita un precio de apertura en 1(2,0) barra
Consejos para el maniquí.....)))))))).....
¿Cómo se puede saber que la orden pendiente se ha activado (por ejemplo, en la compra)? ¿Es mejor buscarla por su id en el historial o hay una opción más corta?
Puedes probar esto
OrderSelect(1, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
///необходимая операция
}
Pero esto sólo es una opción si sólo tiene un pedido.