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

 
ara66676:

Por favor, ayúdenme, no encuentro respuesta a una simple pregunta.

intTimeSeconds(,,,,,)Devuelve el número de segundos transcurridos desde el inicio del minuto de la hora especificada.

Si inserto la hora de apertura del bar en la función

TimeSeconds(iTime(NULL,PERIOD_M5,0))

¿cómo puedo saber que faltan 10 segundos para que se cierre la barra?

Bien, resta el tiempo transcurrido del número de segundos del periodo...

PeriodSeconds(PERIOD_M5) - TimeSeconds(iTime(_Symbol, PERIOD_M5, 0));



 
AlexeyVik:

Porque hay que leer la documentación hasta el final. Y hay un ejemplo en él

Gracias. En el ejemplo este"ArrayResize" me desordenó la cabeza. :)

En la documentación, creo que estos paréntesis "array[]" son innecesarios porque se puede entender por la propia palabra que es un array. :)

int  ArrayInitialize( 
   int     array,     // инициализируемый массив 
   int     value        // значение, которое будет установлено 
   );
 
AlexeyVik:

Así que resta el tiempo transcurrido del número de segundos en un período...



Muchas gracias, llevo cinco años usando mql4 y no sabía que existía esa función, muchas gracias de nuevo ))

Por desgracia, no sirvió de nada, en la quinta esta comprobación no funciona...((

 
if(id==CHARTEVENT_MOUSE_MOVE)
                                       {
                                       // получ и преобраз координ мыши
                                       ChartXYToTimePrice(0,lparam,dparam,huin,timeVline,priceVline);
                                       // переместить нa них линию
                                       ObjectSet(stockname+"timeVline",OBJPROP_TIME1,timeVline);                                     
                                              
                                        } 
Esta pieza es así. en un gráfico real, donde el indicador se ejecuta desde cero, funciona como debería.
No puedo ver lo que está mal, pero si ejecuto el indicador en el probador, la línea no se mueve después del ratón.
tampoco sé qué hace la variable que llamé huin?
 
ara66676:

Muchas gracias, llevo cinco años usando mql4 y no sabía que existía esa función, muchas gracias de nuevo ))

Por desgracia, no sirvió de nada, en la quinta esta comprobación no funciona...((

Así que debería haber especificado... El principio es el mismo.

TimeCurrent() - (datetime) SeriesInfoInteger(_Symbol, PERIOD_M5, SERIES_LASTBAR_DATE);


También puede utilizar CopyTime()...


No... No es así.

(datetime) SeriesInfoInteger(_Symbol, PERIOD_M5, SERIES_LASTBAR_DATE) + PeriodSeconds(PERIOD_M5) - TimeCurrent():
 

¡¡¡¡GUROS DÍGANME!!!! ¿Por qué no se abre una orden de venta? ????

//+------------------------------------------------------------------+

//| Nombre del proyecto ||

//| Copyright 2012, CompanyName |

//| http://www.companyname.net |

//+------------------------------------------------------------------+

#propiedad estricta

//+------------------------------------------------------------------+

//| Función de inicialización de expertos |

//+------------------------------------------------------------------+


entrada doble L=0,01;

input int TakeProfit = 150;

input int StopLoss = 150;

entrada int Magia = 0;

//+------------------------------------------------------------------+

int b=0;

int s=0;

//+------------------------------------------------------------------+

int OnInit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Función de garrapata experta ||

//+------------------------------------------------------------------+

void OnTick()

{

//+------------------------------------------------------------------+

//| Abrir una orden de compra |||

//+------------------------------------------------------------------+

si(b==0)

{

b=Mi_diversión_b();

}

//+------------------------------------------------------------------+

//| Abrir una orden de venta |

//+------------------------------------------------------------------+

si(s==0)

{

double preciob=Mi_diversión_p();

Comentario("El precio de la orden de compra",preciob);

if(preciob==Oferta) /*No se ejecuta por qué*/.

{

s=Mi_diversión_s(preciob);/*NO EJECUTADO, POR QUÉ//

}

}

}

//+------------------------------------------------------------------+

//| función de desinicialización experta |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{


}

//+------------------------------------------------------------------+

//| Función personalizada para abrir el primer pedido (compra) ||

//+------------------------------------------------------------------+

int Mi_diversión_b()

{

b=OrderSend(_Symbol,0,0.01,Ask,0,0,",414,0,clrBlue);

volver(b);

}

//+------------------------------------------------------------------+

//| Función definida por el usuario para determinar el precio de la primera orden (compra) |

//+------------------------------------------------------------------+

double Mi_diversión_p()

{

doble pb=0;

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)

if(OrderMagicNumber()==414)

{

pb=Precio abierto del pedido();

}

return(pb);

}

//+------------------------------------------------------------------+

//| Función personalizada para abrir la primera orden (vender) |

//+------------------------------------------------------------------+

int Mi_diversión_s(double preciob)

{

s=EnviarOrden(_Símbolo,1,0.01,preciob,0,0,",0,0,clrRed);

volver(b);

}

//+------------------------------------------------------------------+


Archivos adjuntos:
test.mq4  2 kb
 
AlexeyVik:

Bueno, deberías haber especificado... El principio es el mismo


También puede utilizar CopyTime()...


No... Es un poco diferente.

Gracias, ha funcionado. Variante correcta:

(TimeCurrent() - (datetime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIES_LASTBAR_DATE))>290

¡¡¡Gracias de nuevo, ahora podemos eliminar montañas de código y utilizar esta línea!!! ))

 
ara66676:

Gracias, ha funcionado. Variante correcta :

(TimeCurrent() - (datetime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIES_LASTBAR_DATE))>290

¡¡¡Gracias de nuevo, ahora podemos eliminar montañas de código y utilizar esta línea!!! ))

Al parecer, no importaba si era el tiempo transcurrido desde la apertura del bar o el tiempo hasta el final del mismo. Esta variante dará exactamente el tiempo transcurrido desde el inicio de la barra y no el tiempo hasta el final de la barra.

¿Y cuál es el número 290? ¿Por qué tenemos que comprobar más de 290?

 
AlexeyVik:

Aparentemente no importaba si era el tiempo transcurrido desde el inicio de la barra o el tiempo hasta el final de la barra. Esta opción daría exactamente el tiempo transcurrido desde el inicio de la barra, no el tiempo hasta el final de la barra.

¿Cuál es el número 290? ¿Por qué tenemos que comprobar más de 290?

EN ESTE CASO, EL NÚMERO 290 MUESTRA QUE HAN PASADO MÁS DE 290 SEGUNDOS DESDE QUE SE ABRIÓ LA BARRA. PERDÓN POR EL PIE DE FOTO, SE HA QUEDADO ATASCADO ))))
 

Error de compilación (2): Magia - identificador no declarado

Por favor, ayúdenme a corregir

bool CheckExists(int Tipo)
{
bool Result = True;
for(int = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS))
if(OrderType() == Type && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
if(OrderOpenTime() >= Time[0])
Resultado = False;
for(i = 0; i < OrdersHistoryTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
if(OrderType() == Type &&& OrderOpenTime() >= Time[0]
&& OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
Result = False;
}

return(Result);
}