Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 137

 
FOTOGRAF14:

Hola a todos! Cómo escribo mi condición! Necesito poner una orden de stop-loss después de que el precio haya superado la distancia de stop-loss

para Buy.....

si( )

{

------------

}

para Sell.....


para transferir el STB al Breakeven, el ticket de la orden y la distancia en pips se pasan a la función

void zero_profit(int ticket, int distance)
  {
   double sl=0.0;

   if(OrderSelect(ticket,SELECT_BY_TICKET))
     {
      if(OrderType()==OP_BUY)
        {
         if(Bid>=OrderOpenPrice() && Bid-OrderOpenPrice()>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())return;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=OrderOpenPrice() && OrderOpenPrice()-Ask>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())return;
        }
      ResetLastError();

      if(sl<=0)return;
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0))
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," ",TypeToStr(OrderType())," №- ",error);
         Print(rezult);
        }

     }
  }


...

 
Vitaly Muzichenko:

No habrá ninguna pintura)

La lógica de búsqueda en sí es pesada, y cómo hacerla más fácil, aún no lo sé.

Vitaly, al principio intenté explicarte que no son los cálculos los que ralentizan al probador, sino los objetos gráficos en las pruebas visuales. Hazlo como él aconseja

Alexey Kozitsyn:

Se puede rodar en el indicador sin dibujar). Y es mejor hacer una elección. Hop - dibujo, hop - no dibujo:)

y ver la diferencia de velocidad.

Ni siquiera es el dibujo lo que se retrasa, sino la presencia de gráficos en el gráfico.

 
Alexey Viktorov:

Ni siquiera es el dibujo lo que ralentiza las cosas, sino la presencia de gráficos en el gráfico.

No hay discusión... Por eso dije que cuando no lo necesito, lo desactivo (DRAW_NONE) y listo... y puedes acceder a los valores igualmente.
 
Alexey Viktorov:

Vitaly, al principio intenté explicarte que no son los cálculos los que ralentizan al probador, sino los objetos gráficos en las pruebas visuales. Haz lo que dice

y ver la diferencia de velocidad.

Ni siquiera es el dibujo lo que se retrasa, sino la presencia de gráficos en el gráfico.

Pruebo la función sin ningún tipo de gráfico, el gráfico se hizo sólo para ver la corrección de los cálculos mientras se escribía el código - era puramente técnico y hace tiempo que se eliminó del código. El gráfico está en blanco durante la prueba.

Por lo tanto, cuando no tengo la función, entonces las pruebas "vuelan", pero conectar la función - va lentamente.

P.D. En principio no necesito objetos gráficos. Olvídate de los gráficos: ¡no los tengo ni los tendré!

 
Vitaly Muzichenko:

Pruebo la función sin ningún tipo de gráfico, el gráfico se hizo sólo para ver si los cálculos eran correctos mientras se escribía el código - era puramente técnico y se eliminó del código hace mucho tiempo. El gráfico está en blanco durante la prueba.

Así que, cuando no tengo función, las pruebas "vuelan", pero conectar la función - va lento.

P.D. En principio no necesito objetos gráficos. Olvídate de los gráficos: ¡no los tengo ni los tendré!

¿Has mirado aquí?
 
Artyom Trishkin:
¿Has mirado aquí?

Genial, intentaré meter las funciones en el EA. Publicaré el resultado más tarde.

¡¡¡Gracias!!!

 
Por favor, ayude a entender cómo escribir el código correctamente para obtener el índice de las barras abiertas a las 4:00 y a las 15:00
 
missha689:
Por favor, ayúdeme a entender cómo escribir el código correctamente para obtener el índice de las barras abiertas a las 4:00 y a las 15:00

Esa es una.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Son dos.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Esa es una.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Son dos.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Entiendo que se ajusta a un día concreto ya que se especifica la fecha, pero cómo hago para que el índice de barras esté a 15 ayer y el índice de barras esté a 4 hoy
 
¿Pueden decirme cómo averiguar la fecha y la hora de ayer mediante un programa?
Razón de la queja: