Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 815

 
evillive:

¿Y cuándo cree que debería cerrarse este ciclo?

?

Corregido:

if(R==0)

{

 while(true)

 {

  Sleep(30000);

  Alert("Ошибка!");

  DeleteBuy=OrderDelete(OrderTicketBuy);

  DeleteSell=OrderDelete(OrderTicketSell);

  return(1);

 }

}

También el cálculo de los beneficios.

He insertado un mensaje y un manejo de errores en el bucle while (verdadero). El bucle funciona, el mensaje se escribe, sin errores. Pero no pasa la condición, los datos no parecen actualizarse.

Archivos adjuntos:
test3_7.mq4  16 kb
 
CJIeCaPb:

He insertado un mensaje y la gestión de errores en el bucle while (true). El bucle funciona, el mensaje se escribe, sin errores. Pero no pasa la condición, los datos no se actualizan.

Aquí tienes más pistas.

Este ciclo no tiene en cuenta todos los pedidos; además, si hay más de un pedido de un tipo (por ejemplo, se hacen tres pedidos de bystop), ¿qué pasará?

for(i=1;i<=OrdersTotal();i++)
{
 Alert(i);
 if(OrderSelect(i-1,SELECT_BY_POS)==true)
 {
  if(OrderSymbol()!=Symb)continue;
  if(OrderType()==OP_BUYSTOP)
  {
   OrderTicketBuy=OrderTicket();
   Alert("Buy");
   }
   if(OrderType()==OP_SELLSTOP)
   {
   OrderTicketSell=OrderTicket();
   Alert("Sell");
   }
  }
}


En realidad, debería ser al revés: primero deberíamos elegir un orden, y sólo si se elige un orden deberíamos comprobar su tipo y hacer todo tipo de tonterías sobre él:

while(OrderType()==OP_BUY)//Buy
{
 RefreshRates();
 
 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
 ...
}
 
//--------------------------------------------------------------------------
//Sell
while(OrderType()==OP_SELL)
{
 RefreshRates();
  
 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
 ...
}
 


Y en el "barrido-desconexión-que-rasgos", ¿por qué exactamente continuar en todas partes? ¿Y cuándo se ejecutará esta línea, en uno y en el segundo interruptor?

    CloseBuy=OrderClose(OrderTicketBuy,Lote,Bid,1); continue;//119
-----
    CloseSell=OrderClose(OrderTicketSell,Lote,Ask,1); continue;//119
 
evillive:


Aquí se considera primero el tipo de orden, y luego se selecciona la orden. En realidad debería ser al revés, primero seleccionar la orden, y luego si se selecciona la orden mirar su tipo y hacer todo tipo de burlas:

Así que..:

if(R==1)//238

{

 Alert("yes");

 R=0;

 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);

}


if(R==2)//245

{

 Alert("yes");

 R=0;

 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);

}

Y en el "scroll-type-tralit-stoploss"( =D. ¿Qué no te gusta? Creo que es normal, está muy claro. ), ¿por qué exactamente en todas partes? ¿Y cuándo se ejecutará esta línea, en uno y en el segundo interruptor?

Así se romperá por condición:

 Timen=OrderCloseTime();

 if(Timen>0)

 {

  DeleteSell=OrderDelete(OrderTicketSell);

  OldProfit=0;

  WarBuy=true;

  break;

 }

Pues sí, la ruptura se verá mejor en la cadena OrderClose. Entonces tenemos que añadir OrderDelete.

evillive:

Aquí tienes más pistas.

Este bucle no tiene en cuenta todas las órdenes. Además, si hay más órdenes de un tipo que de otro (por ejemplo, se hacen tres órdenes de bystop), ¿qué ocurrirá?

OrdersTotal empieza en 1 y OrderSelect en 0.

¿Hay más de un pedido del mismo tipo en 1 símbolo? No. Pero voy a echar otro vistazo.

Necesitamos una condición cercana a esta: "Si MA==precio, entonces".

Esto servirá:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))

P.D.: ¡Feliz Año Nuevo!

 
Para algunos no es Nochevieja. ¡¡¡Feliz Año Nuevo!!!
 

¡Feliz Año Nuevo!

Recientemente he empezado a estudiar MQL 4 y quería hacer una pregunta:

Por ejemplo, tengo una condición para abrir una orden:

si (Oferta>=SS+5*Punto)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

La pregunta es: ¿qué condición hay que especificar para abrir la segunda orden en caso de que la primera orden tenga un beneficio de 10 puntos o más?

 
lexdemon:

¡Feliz Año Nuevo!

Recientemente he empezado a estudiar MQL 4 y quería hacer una pregunta:

Por ejemplo, tengo una condición para abrir una orden:

si (Oferta>=SS+5*Punto)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

La pregunta es: ¿qué condición hay que especificar para abrir la segunda orden en caso de que la primera tenga un beneficio de 10 puntos o más?

Mira aquí, hay un montón de funciones para casi todos los casos.

https://www.mql5.com/ru/forum/131859

 
lexdemon:

¡Feliz Año Nuevo!

Recientemente he empezado a estudiar MQL 4 y quería hacer una pregunta:

Por ejemplo, tengo una condición para abrir una orden:

si (Oferta>=SS+5*Punto)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Ahora la pregunta, ¿qué condiciones hay que especificar para abrir la segunda orden en caso de que la primera orden tenga un beneficio de 10 puntos o más?

Pre-seleccionar el orden OrderSelect (Ticket_first_order, SELECT_BY_TICKET);

if(OrderOpenPrice()+10*Point==Ask)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

 
CJIeCaPb

 Нужно условие максимально приближенное к этому: "если MA==цене, то".

Такое  пойдет:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))


Hurra, parece que funciona. He insertado el operador return y "O" en cada bucle para evitar operaciones innecesarias.

Un problema: las órdenes son incómodas, no sé cómo formular la condición.

Archivos adjuntos:
test3.mq4  16 kb
 

Tengo un trader que se llama forexstart, por si sirve de algo. el problema es que escribí un robot de trading que trabaja en gráficos de 1 minuto. analiza el historial en muchos gráficos, el historial se da durante un mes y medio aproximadamente y no más.

tengo un robot de trading que se ejecuta en un gráfico de un minuto. analiza el historial. en muchos gráficos el historial se da para un mes y medio aproximadamente y no más, aunque el gráfico horario - diario - anual muestra el historial.

¿Cómo puedo afrontarlo?


 
pycha:

Tengo un trader llamado forexstart, por si sirve de algo. el problema es que escribí un robot que trabaja en gráficos de 1 minuto. analiza el historial en muchos gráficos, el historial no está presente desde hace un mes y medio y ya no.

tengo un robot de trading que funciona en el gráfico de un minuto. muestra el historial. en muchos gráficos el historial se da para un mes y medio aproximadamente y no más, aunque el gráfico horario - diario - anual muestra el historial. también hay casos en los que el robot vuelve a una fecha determinada y luego se rompe y el juego continúa un par de meses atrás, aunque los gráficos superiores lo muestran de nuevo.

¿Cómo puedo hacer frente a ello?


Si después de unos cuantos ciclos de borrado - descarga del historial del servidor DC, las interrupciones siguen ahí, significa que le darán el historial. Busca en Google Tickstory Lite y prepara un montón de espacio en disco para el historial de ticks, luego alimenta este historial al probador y tendrás un M1 para una década o más.