Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
int Weekday = TimeDayOfWeek(TimeLocal()); //Локальное время |
int Weekdays = TimeDayOfWeek(TimeCurrent()); //Серверное время |
while(IsExpertEnabled()) //До тех пор пока запушенно |
{if(Weekday!=0||Weekday!=6){Exp=true;if(Weekday==1){Info(4,Weekday,0);}} //Если не Сбб. Воск. то разрешено |
if(Weekdays==0||Weekdays==6) //Если Сбб. Воск. то не разрешено |
{
Exp=false;Info(5,Weekdays,0);
if(Weekdays==6){Sleep(86400000);} //Если суббота пауза 24 часа |
if(Weekdays==0){Sleep(3600000);} //Если воскресение пауза 1 час |
}
IsTradeAllowed
Devuelve información sobre la posibilidad de operar con Asesores Expertos.
boolIsTradeAllowed();
La segunda forma de esta llamada devuelve información sobre la capacidad de negociar para un símbolo específico en un momento determinado.
boolIsTradeAllowed(
const string symbol// símbolo
datetimetested_time// hora
);
Parámetros
símbolo
[en] símbolo.
tiempo_de_prueba
[en] Tiempo.
Valor devuelto
Devuelve true si el EA puede operar y el hilo está libre, en caso contrario devuelve false.
Gracias, por supuesto, pero es como dicen para entrar por el ojo de un lugar) También puedo poner una pausa en el euro a 5,0 servidor lo permitirá, y luego con cada ciclo de temporizador tratar de cambiar la pausa, si el error 132 entonces el mercado está cerrado, si es normal, entonces el comercio es, pero en el momento de la negociación de este servidor está inundando, me gustaría resolver el problema humanamente, no a través de "bucles", pero este es el MK desarrolladores.
IsTradeAllowed
Devuelve información sobre la posibilidad de operar con Asesores Expertos.
boolIsTradeAllowed();
La segunda forma de esta llamada devuelve información sobre la capacidad de negociar para un símbolo específico en un momento determinado.
boolIsTradeAllowed(
const string symbol// símbolo
datetimetested_time// hora
);
Parámetros
símbolo
[en] símbolo.
tiempo_de_prueba
[en] Tiempo.
Valor devuelto
Devuelve true si el EA tiene permiso para operar y el hilo para realizar operaciones está libre, en caso contrario devuelve false.
Alexander, te equivocas)
este funciona bastante bien
este funciona bastante bien
Gracias por el consejo, pero cuando el mercado está abierto no es correcto tratar de determinar la posibilidad de trabajar con órdenes, pero va a funcionar.
Por mi parte, mi razonamiento es el siguiente.
Si es necesario operar con el símbolo actual, una señal indirecta de que el mercado está abierto es la llegada de nuevos ticks. Por lo tanto, el evento OnTick es suficiente y la cuestión está cerrada.
Si necesitamos trabajar con símbolos distintos al actual, el hecho de abrir operaciones en el símbolo actual no garantiza que se ejecuten operaciones en algún otro símbolo. Por ejemplo, el Asesor Experto se ha ejecutado en EURUSD, la hora es 09:00 UTC, y queremos operar con acciones de Estados Unidos, cuyo mercado no abrirá hasta las 13:00 UTC. Por lo tanto, OnTick no ayudará. Tendremos que determinar si el mercado se abre por otros símbolos a través de los intentos de enviar órdenes al servidor en determinados intervalos. Enviar una orden una vez por minuto no es en absoluto un bombardeo del servidor, sino un enfoque bastante normal. ¿Qué hay de malo en eso?
sin garrapatas no hay comercio como me dijo una vez servicedesk sobre este problema del día de la semana,
sugirieron una solución como.
TimeDayOfWeek(TimeLocal());
aunque no es del todo correcto, porque el día de la semana puede no ser el mismo que el día de la terminal.
Una condición importante era no intentar abrir pedidos, aunque había recurrido a ello muchas veces en otros proyectos. Para ser sincero, me parece que este es el método más fácil y fiable hasta ahora.
Hasta ahora he encontrado la mejor manera de hacerlo (pero todavía estoy buscando, ver más abajo):
1) Determinar si el comercio está permitido "cara a cara" - segunda forma de la función IsTradeAllowed() (fue descrita anteriormente). Si no, entonces no está permitido :)
2) Comparar la hora de la última cotización utilizando SymbolInfoInteger(<símbolo>, SYMBOL_TIME) con la hora de una de las sesiones de negociación(SymbolInfoSessionTrade()), si la hora de la cotización cae en uno de los rangos de la sesión, entonces se permite la negociación.
3) Comprobar si la hora de la cotización no está demasiado "desfasada": si hace más de xx minutos (comparar SymbolInfoInteger(<símbolo>, SYMBOL_TIME) y TimeCurrent(), entonces pensamos que la cotización está desfasada y, por tanto, no podemos operar por ella (si no me equivoco, fueron unos tres minutos)
La desventaja de este enfoque es la siguiente: puede haber condiciones en las que las operaciones en el símbolo son imposibles, mientras que los ticks pasan.
No me metí en el mecanismo; el desarrollo se hizo para un broker y durante las pruebas han activado dicho modo - los ticks van, pero el trading es imposible. Hasta ahora, no hemos conseguido superar esta variante.
Es justo decir que no me he encontrado con esto en el comercio real. Así que en condiciones "normales" la solución parece tolerable. Pero sigo buscándolo :)
P.S. Los pasos 1 y 2 pueden ser combinados (para transferir SymbolInfoInteger(<símbolo>, SYMBOL_TIME) a la función IsTradeAllowed), pero todavía no he hecho pruebas de tal variante y no lo diré.