[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 439

 
peshihod:


Entiendo que una orden pendiente y una orden abierta son órdenes diferentes. Y si la orden pendiente se abre, entonces la tarea se reduce a la inicial, a la orden abierta. Si lo entiendo bien, se está complicando mucho.

¿Cuáles son las tareas? Tal vez, todo se pueda hacer de una manera más sencilla...

Entiendo que una orden pendiente y una orden abierta son órdenes diferentes. -------------- Sí (quizás) Quizás no. Lo principal es que el script debe dispararse en la apertura de esta orden pendiente, es decir, no cuando se coloca sino cuando se abre.

Necesito ayuda para escribir el guión, por favor ayúdenme, profesionales, expertos y gente de bien, sugieran cambios si quieren que funcione.


Si tengo una orden pendiente, su precio la alcanza y el robot debería reaccionar también. También quiero que funcione en esos pedidos.

Bueno, lo estoy probando ahora y funciona. Por qué no funcionó en la 1ª prueba hmmm... Tal vez por el reinicio del ordenador ...Pero después del reinicio previsto, el robot sonrió (funcionó).

Un detalle más. Esta secuencia de comandos no funcionará en los gráficos históricos, ¿y por qué?

//+------------------------------------------------------------------+
//| Order_act.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
int Order_array[200];
int Total=0;
int j,pos,count,order_tick,type;
bool found;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
// создаем список ордеров (туда входят и открытые, и отложенные)
Total=OrdersTotal();

for(pos=0;pos<Total;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{ Order_array[pos]=OrderTicket();}
}

// проверочная часть скрипта
int i=0;
while ( !IsStopped() )
{
count=OrdersTotal();
for(pos=0;pos<count;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
found=false;
order_tick=OrderTicket();

for (j=0;j<Total;j++)
{

if (order_tick==Order_array[j]) {found=true;}
}
if (!found)
{
type=OrderType();

if ((type==OP_BUY) || (type==OP_SELL))
{
Total++; // в случае,если есть новый открытый
Order_array[Total-1]=order_tick; //ордер - добавляем в список

Alert("Новый открытый ордер"); // и делаем с ним что хотим

}
}
}
// если планируется, что скрипт будет работать долго или открываемся часто
// удаляем из списка все закрытые ордера чтобы не было переполнения.
// А чтобы работало быстрее, количество записей можно уменьшить (лишь бы не превысило
// максимально возможного числа открытых и отложенных поз.
if (Total>190)
{
for (j=0;j<Total;j++)
{
if(OrderSelect(Order_array[j],SELECT_BY_TICKET)==true)
{
if (OrderCloseTime()!=0)
{
Alert("нашли закрытый в списке и удалили");
for (i=j+1;i<Total;i++) {Order_array[j]=Order_array[i];}
Total--;
}
}
}
}
Sleep(100);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

Его написал RAVen_ Спасибо этому профессионалу .

 

Estimados profesionales,

¿Cómo puedo enseñar a un EA a leer información de otra ventana, donde otro EA está trabajando en el mismo par de divisas?

 
demlin:

Estimados profesionales,

¿Cómo puedo enseñar a un EA a leer información de otra ventana, donde otro EA está trabajando en el mismo par de divisas?


Intenta ir por otro camino, es decir, intercambiar valores entre EAs con variables globales... Yo no los he usado, no conozco los detalles, búsquelos y vea cómo se usan...
 
demlin:

Estimados profesionales,

¿Cómo puedo enseñar a un EA a leer información de otra ventana, donde otro EA está trabajando en el mismo par de divisas?

También hay una biblioteca de este tipo.
 
semiromid:

Entiendo que una orden pendiente y una orden abierta son órdenes diferentes. -------------- Sí (quizás) Quizás no. Lo principal es que el script debe funcionar cuando se abre la orden pendiente, es decir, no cuando se coloca sino cuando se abre.


¡Esto es desenterrar un par de árboles con una excavadora! ¿Qué sentido tiene separar las órdenes? El precio es el mismo para todos. Los pedidos se procesan siempre juntos, en bloque, por la misma mejor variante.

Es decir, no importa quién hace los pedidos, sino qué parámetros tiene cada uno de ellos. Estás buscando una vacía.

Si tenemos que ejecutar la tarea1 y la tarea2, entonces tenemos que comprobar en cada orden, si se ha ejecutado la tarea necesaria para ello o no. Y no es necesario comprobar si esta orden se abre ahora mismo, o justo antes, o está a punto de abrirse.

 
peshihod:


¡Es cavar un par de árboles con una excavadora! ¿Qué sentido tiene separar las órdenes? El precio es el mismo para todos. Los pedidos se tramitan siempre juntos, en bloque, con la misma mejor opción.

Es decir, no importa quién hace los pedidos, lo que importa son los parámetros de cada pedido individual. Estás buscando una vacía.

Si tenemos que ejecutar la tarea1 y la tarea2, entonces tenemos que comprobar en cada orden, si se ha ejecutado la tarea necesaria para ello o no. Y no es necesario comprobar si esta orden se abre ahora mismo, o un poco antes, o está a punto de abrirse.

Es desenterrar un par de árboles con una excavadora. ----------- ¿Qué opción más sencilla hay?

¿Qué sentido tiene dividir los pedidos? -------------- Tengo que dividir mis pedidos en boya y venta. ¿O se refiere a la tramitación de los pedidos? Al menos dame una pista de cómo hacer el script más simple?

Stano, probándolo ahora, todo funciona. ¿Por qué no funcionó en la primera prueba? Tal vez porque hubo un reinicio del ordenador ...Pero después de un reinicio programado, el robot estaba sonriendo (trabajando). ¿Cuáles son las opciones de por qué no funcionó entonces? Tal vez se produzca una avería similar en el futuro.

 

Buenos días a todos.

Tengo esta pregunta. Supongamos que existe un indicador XXXXXXX (el nombre no importa)

Por desgracia, no tengo el código fuente del indicador. Por lo tanto, no entiendo en qué se basa)

¿Puedo desarrollar un Asesor Experto basado en las señales del indicador XXXXXXXXX para la apertura de órdenes de venta y compra?

Aquí hay un ejemplo en una captura de pantalla

 
FreeSerfer:

Buenos días a todos.

Tengo esta pregunta. Supongamos que existe un indicador XXXXXXX (el nombre no importa)

Por desgracia, no tengo el código fuente del indicador. Por lo tanto, no entiendo en qué se basa)

¿Puedo desarrollar un Asesor Experto basado en las señales del indicador XXXXXXXXX para la apertura de órdenes de venta y compra?

Aquí hay un ejemplo en una captura de pantalla


Sí, tal vez. Incluso puedo adivinar qué tipo de pavo... :-)))
 

Por favor, avisa. ¿Cómo puedo hacer que este robot compre en 20 segundos?

No quiero que compre en 20 segundos, luego el precio vale otros 20 segundos, por lo que sólo gana en 40 segundos.

int start()
{

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point, "Order #", 0); // abrir una orden de compra
Sleep(20000); // Temporizador durante 20 segundos

return(0);
}

 
Se necesita un script en bucle para trabajar por tiempo, no por ticks.