[¡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 370

 
Bion >> :

He hecho lo que me has aconsejado.

Debe utilizar la fecha LastTime;
datetime Pausa=3600;

int inicio()
{
if(TimeCurrent()<LastTime+Pause)return(0);

...

bool cl() {if(OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType();
double l=LotesdeOrden();
int tik=OrderTicket();Alert("tik=", tik);
}
si (t==OP_BUY) OrderClose(tik,l,Bid,3,Red);
if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green);
LastTime=TimeCurrent();
}

Pero en el Probador de Estrategias, la orden se abre de acuerdo con las condiciones, pero no reacciona al tiempo.

Además, el probador no reacciona al parámetro "tiempo de existencia de la orden pendiente", es decir, no se elimina cuando es el momento de borrarla.

¿Se supone que es así?

¿Cómo podemos hacer que el comprobador tenga en cuenta el tiempo transcurrido desde que se cerró el pedido?


En segundo lugar, no es muy agradable para asignar el valor a la variable global en alguna función oscura, hay dos maneras de salir, ya sea por el paso por referencia, o como siempre que la función devuelve el valor de tipo booleano, a continuación, si se completó con éxito, puede asignar el valor a la variable global, por supuesto, las variables para si también es de alerta, pero es su negocio .... pero eso es sólo un decir))) No está claro en su código cuándo se llama a esta función y si se llama en absoluto. Intenta comprobar los resultados en el archivo de registro y lo entenderás.
 

Aquí está el código completo, he eliminado todas las funciones, declarado las variables como debe ser, pero el resultado es el mismo - en el modo de prueba, no reacciona al tiempo, coloca órdenes adicionales en la misma barra.

¿Qué necesita?


double q0=0;
double q1=0;
double q2=0;
double q3=0;
datetime LastTime;
datetime Pause=3600;
int typ, tik;
double l;

int start()
{

datetime t=Hour();

if (t==8) {q0=0; q1=0; q2=0; q3=0;}

if (t>=9) {

int i0=0;
while (q0==0) { q0=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Rojo,Oro, Plata,0,i0); i0++; }

int i1=0;
while (q1==0) { q1=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Rojo,Oro, Plata,1,i1); i1++; }

int i2=0;
while (q2==0) { q2=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Rojo,Oro, Plata,2,i2); i2++; }

int i3=0;
while (q3==0) { q3=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Rojo,Oro, Plata,3,i3); i3++; }


Comment("g0=",q0, "\n", "g1=",q1, "\n", "g2=",q2, "\n", "g3=",q3 ); }

double os0=iOsMA(NULL,0,5,26,9,4,0);

double os1=iOsMA(NULL,0,5,26,9,4,1);

// ver desde aquí


if(TimeCurrent()<(LastTime+Pause))return(0);

if ( OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS);
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ==OP_BUY && os1<0) { LastTime=TimeCurrent(); OrderClose(tik,l,Bid,3,Red);}
if (typ==OP_SELL && os1>0) { LastTime=TimeCurrent();OrderClose(tik,l,Ask,3,Green);}

}

return(0);
}
//+------------------------------------------------------------------+

 

Hola.

Pregunta para los expertos

La situación es la siguiente: el Asesor Experto está colgado en la cuenta demo, las cotizaciones pasan, los precios cambian, pero el Asesor Experto ha dejado de operar desde hace tiempo, se genera un error en el registro :


2009/12/30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. Sin precio

Par - USDCAD


Comenzó el 2009.12.30 16:46:06 y se detuvo el

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 128. El tiempo de espera para la transacción ha expirado

Estoy de acuerdo en que 43 minutos es significativo, y lo que es peor, estropea el algoritmo de ekspert.

Más interesante aún es el error que aparece cuando intento enviar una orden OP_BUYSTOP :-0 (¿qué tipo de cotizaciones puede haber para las órdenes pendientes?)


136 SIN PRECIOS = SIN COTIZACIONES:


¿Por qué no hay precios si cambian constantemente en la pantalla?


La cuestión fue planteada aquí https://www.mql5.com/ru/forum/105903/page2 por un respetado goldtrader, pero no ha sido resuelta oficialmente (espero que este asunto no sea una especie de TABU que no queramos discutir a la vista de todos)


Me gustaría saber "por qué ocurre esto" y "cómo prevenir o manejar este tipo de errores".


Espero que no sea un TABÚ que la gente no quiera discutir en público). Gracias de antemano por la respuesta.

 
AndBar >> :

Hola.

Pregunta para los expertos -

La situación es la siguiente: Asesor Experto en una cuenta demo, se pasan las cotizaciones, los precios cambian, pero el Asesor Experto ha dejado de operar durante algún tiempo, el error se genera en el registro :


2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. No hay precios
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 136. Sin precio

Par - USDCAD


El error comenzó el 2009.12.30 16:46:06 y se detuvo el

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de error = 128. El tiempo de espera para la transacción ha expirado

Estarás de acuerdo en que 43 minutos son significativos y, lo que es peor, estropean el algoritmo del experto.

Más interesante aún es el error que aparece cuando intento enviar una orden OP_BUYSTOP :-0 (¿qué tipo de cotizaciones hay para las órdenes pendientes?)


136 SIN PRECIOS = SIN COTIZACIONES:


¿Por qué no hay precios si en la pantalla cambian constantemente?


La cuestión se ha planteado aquí https://www.mql5.com/ru/forum/105903/page2 por un respetado goldtrader, pero no se ha resuelto oficialmente (espero que no sea una especie de cuestión de TABU que no se quiere discutir a la vista)


Me gustaría saber "por qué" y "cómo prevenir o manejar este tipo de errores".

¿qué es la revisión de la plataforma?

Se ha discutido más de una vez sobre los diferentes flujos de datos. Para el comercio automatizado, el flujo se ha cerrado. Aparentemente.

 
AndBar писал(а) >>

136 SIN PRECIOS = SIN COTIZACIONES:

Esto suele ocurrir antes de que se publique la noticia. No se puede hacer nada, a no ser que se haga un pedido con antelación y se tire detrás del precio el mayor tiempo posible. 43 minutos es demasiado tiempo.

 
Bion писал(а) >>

Aquí está el código completo, quité todas las funciones, declaré las variables que eran necesarias, pero el resultado es el mismo - en el modo de prueba no reacciona al tiempo, hace órdenes adicionales en la misma barra.

La pregunta era sobre una pausa después del cierre. Habrá una pausa después del cierre.

-

Hay varios huecos en una barra. Después de una apertura debe memorizar la hora de la barra y antes de una apertura debe comprobar que la hora de la barra no es igual a la hora de la última apertura. Es mejor utilizar GlobalVariable para recordar este tiempo.

-

En todo mientras sería una buena idea añadir while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - mejor hacerlo después de comprobar si la orden se ha cerrado realmente: if(OrderClose(...))LastTime=TimeCurrent();

 
Integer писал(а) >>

La pregunta era sobre una pausa después de la hora de cierre. Habrá una pausa después del cierre.

-

Múltiples aperturas en la misma barra. Después de la apertura hay que recordar la hora del bar, y antes de la apertura comprobar que la hora del bar no es igual a la última hora de apertura. Es mejor utilizar GlobalVariable para recordar este tiempo.

-

En todo mientras sería una buena idea añadir while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - mejor hacerlo después de comprobar si la orden se ha cerrado realmente: if(OrderClose(...))LastTime=TimeCurrent();

Según el tutorial, una variable GV sólo puede tener el tipo double, ¿cómo debemos poner el número de segundos?

He comprobado si se ha cerrado un pedido, pero sigue fallando y sigue dando error.


if(Time[0]<(LastTime+Pause))return(0);

if ((OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS;)
typ=Tipo de orden();
tik=OrderTicket();
l=Lotes de pedido();
si (typ==OP_BUY && os1<0) si (OrderClose(tik,l,Bid,3,Red)) LastTime=Hora[0];
if (typ==OP_SELL && os1>0) if (OrderClose(tik,l,Ask,3,Green)) LastTime=Hora[0];
}

¿Podría darnos un ejemplo o un enlace en el que se haya aplicado con éxito la tarea de retrasar la apertura del siguiente pedido una hora después del anterior?

 
Bion писал(а) >>

Del libro de texto - una variable GV sólo puede tener el tipo double - entonces, ¿cómo se pone el número de segundos en ella?

¡Ahhhh, entonces olvídate de todo y ten un feliz año nuevo!

¡Feliz Año Nuevo a todos!

 
Estaba trabajando con un indicador, todo estaba bien, luego cuando cambié de marco de tiempo la terminal comenzó a colgarse, volví a instalar el windup, todavía se cuelga. Por qué(((((((((((((
 
Fosfalugel писал(а) >>
Estaba trabajando con un indicador, todo iba bien, luego al cambiar de timeframe el terminal empezó a congelarse, reinstalé Windows, sigue congelándose. Por qué(((((((((((((

El indicador luminoso probablemente debería ser desechado. O pregúntale a Papá Noel. Es la víspera de Año Nuevo.