Sí, no lo entiendo, no sé, tampoco puedo enviar a bot por nombre, sólo por ID. ¿Cómo te lo envías a ti mismo? O mejor dicho, ¿cómo metes tu id en el carrito? Yo solo lo consigo al bot.
Obtengo cualquier documento de identidad a través del bot Get My ID.
Sí, confundí mi ID y el bot. Enviamos a nosotros mismos en un mensaje privado de nuestro propio bot))))
Del artículo de Andrei
Hay que tener en cuenta que en estos ejemplos pasamos el chat_id como destinatario del mensaje. No podemos saberlo de antemano para enviar un mensaje al usuario hasta que él/ella empiece a chatear con el bot primero. Tampoco hay forma de contactar con el usuario por su número de teléfono móvil o @nombredeusuario. Esto se hace, obviamente, por motivos de seguridad, para que los bots no envíen spam. Pero los bots pueden publicar mensajes en el canal dirigiéndose al usuario por su nombre utilizando la segunda opción SendMessage.
Tuve algún fallo la semana pasada - la función de leer la cola de mensajes de Telegram dejó de funcionar. Es decir, los mensajes salientes se envían como antes, tanto texto como capturas de pantalla, pero la función GetUpdates() no devuelve nada, la cola de chat está siempre vacía.
¿Alguien se ha encontrado con un fallo así? ¿Cuál puede ser la razón?
He completado el código para enviar el mensaje de telegrama a mt5 pero estoy teniendo un pequeño error, al enviar comando de cierre de muchos comandos de cierre al mismo tiempo, sólo puede enviar una orden pero no muchas órdenes.
¿Alguien me puede ayudar a ver donde me estoy equivocando?
//--- ahora procesa la lista de posiciones cerradas
max_time = 0;
double day_profit = 0;
bool is_closed = false;
int totalhis = hist_position.PositionsTotal();
for(int i = 0; i < totalhis; i++) {
//---
pos_symbol = PositionGetSymbol(i); // Obtener el nombre del símbolo
digits = (int)SymbolInfoInteger(pos_symbol, SYMBOL_DIGITS); // Obtener el número de dígitos del precio//--- Seleccione una posición cerrada por su índice en la listaif(hist_position.SelectByIndex(i)) {
ulong ticket = hist_position.Ticket();
datetime time_open = hist_position.TimeOpen();
ulong time_open_msc = hist_position.TimeOpenMsc();
datetime time_close = hist_position.TimeClose();
ulong time_close_msc = hist_position.TimeCloseMsc();
long type = hist_position.PositionType();
string type_desc = hist_position.TypeDescription();
long magic = hist_position.Magic();
long pos_id = hist_position.Identifier();
double volume = hist_position.Volume();
double price_open = hist_position.PriceOpen();
double price_sl = hist_position.StopLoss();
double price_tp = hist_position.TakeProfit();
double price_close = hist_position.PriceClose();
double commission = hist_position.Commission();
double swap = hist_position.Swap();
double profit = hist_position.Profit();
string symbol = hist_position.Symbol();
string open_comment = hist_position.OpenComment();
string close_comment = hist_position.CloseComment();
string open_reason_desc = hist_position.OpenReasonDescription();
string close_reason_desc = hist_position.CloseReasonDescription();
string deal_tickets = hist_position.DealTickets(",");
//---int deals_count = HistoryDealsTotal(); // de la posición seleccionadaint orders_count = HistoryOrdersTotal(); // de la posición seleccionadaif(TimeToString(TimeCurrent(), TIME_DATE) == TimeToString(time_close, TIME_DATE)) {
day_profit += profit + swap + commission;
}
if(time_close <= _closed_last_time) continue;
//is_closed = true;string msg = StringFormat
(
"ACCOUNT: { #%s } \n" +
"------------ { CLOSE } -----------\n" +
"CLOSE ORDER - %s %s\n" +
"Time (GTM+0): %s\n" +
"------------ { CLOSE } -----------\n" +
"Volume: %s\n" +
"Open Price: %s\n" +
"Close Price: %s\n" +
"Gain/Loss: %s USD\n" +
"---TOTAL PROFIT TODAY---\n" +
"%s USD\n",
IntegerToString(login),
symbol,
PositionTypeToString(type),
TimeToString(time_close, TIME_DATE | TIME_SECONDS),
DoubleToString(volume, 2),
DoubleToString(price_open, digits),
DoubleToString(price_close, digits),
DoubleToString(profit, 2),
DoubleToString(day_profit, 2)
);
int res = bot.SendMessage(InpChannelName, msg);
if(res != 0)
Print("Error: ", GetErrorDescription(res));
max_time = MathMax(max_time, time_close);
}
_closed_last_time = MathMax(max_time, _closed_last_time);
}
He completado el código para el envío de mensajes de telegrama a mt5 pero estoy teniendo un pequeño error, al enviar comando de cierre de muchos comandos de cierre al mismo tiempo, sólo puede enviar una orden, pero no muchas órdenes.
¿Alguien me puede ayudar a ver donde me estoy equivocando?
Si usted está sirviendo a muchos usuarios a través del bot hay un límite de 30 interacciones por segundo, creo.
Yo sólo lo uso personalmente y sólo para enviar cada cuenta mt5 a telegram. pero al abrir o cerrar el comando al mismo tiempo, sólo puede enviar un mensaje a telegram
Yo sólo lo uso personalmente y sólo para enviar cada cuenta mt5 a telegram. pero al abrir o cerrar el comando al mismo tiempo, sólo puede enviar un mensaje a telegram
No había código cuando contesté , veo que se puede sustituir el bot.SendMessage por una función que añada el mensaje a una lista de ráfagas . También podrías seguir creciendo el mensaje y enviarlo fuera del bucle pero ahí chocarías con limitaciones de caracteres.
Un breve esquema podría ser así :
Tienes un array de cadenas llamado "Bandeja de salida".
Un intervalo de tiempo dentro del cual procesas el Outbox, así que "OnTimer()" (puede que ya lo estés usando si también estás leyendo de telegram)
Entonces impones -tú mismo- un límite de milisegundos entre cada mensaje no con la función Sleep() sino recordando cuándo se envió el último mensaje.
Puedes usar GetTickCount() para sondear los milisegundos y almacenar los últimos ms que dejó el mensaje y restarlo de los ms actuales para obtener la distancia en tiempo.Hay una muy muy muy rara ocasión aquí que el tiempo final es < que el tiempo de inicio en cuyo caso haces esto : (UINT_MAX-start_time+end_time)
Si la distancia en milisegundos desde el último mensaje es mayor que el límite en milisegundos que has impuesto, entonces envías el siguiente mensaje desde la bandeja de salida.
En lugar de llamar a bot.SendMessage en el bucle ahora llamas a Outbox.add_message_for_sending o algo así.
Con una modificación que también almacene los ids de chat también podrías almacenar a dónde va el mensaje y esa sería la solución para múltiples usuarios.
Sí, no lo entiendo, no sé, tampoco puedo enviar a bot por nombre, sólo por ID. ¿Cómo te lo envías a ti mismo? O mejor dicho, ¿cómo metes tu id en el carrito? Yo solo lo consigo al bot.
Consigo cualquier ID a través del bot Get My ID
Obtengo cualquier documento de identidad a través del bot Get My ID.
Sí, confundí mi ID y el bot. Enviamos a nosotros mismos en un mensaje privado de nuestro propio bot))))
Del artículo de Andrei
Hay que tener en cuenta que en estos ejemplos pasamos el chat_id como destinatario del mensaje. No podemos saberlo de antemano para enviar un mensaje al usuario hasta que él/ella empiece a chatear con el bot primero. Tampoco hay forma de contactar con el usuario por su número de teléfono móvil o @nombredeusuario. Esto se hace, obviamente, por motivos de seguridad, para que los bots no envíen spam. Pero los bots pueden publicar mensajes en el canal dirigiéndose al usuario por su nombre utilizando la segunda opción SendMessage.
Hola,
Estoy tratando de añadir un nuevo idioma al archivo de búsqueda, pero tengo estos parámetros hexadecimales que no entiendo el significado:
¿Qué es eso de \xF1EC\xF1E7 en el inglés, por ejemplo, y cómo convertirlo para obtener pt flag?
Tuve algún fallo la semana pasada - la función de leer la cola de mensajes de Telegram dejó de funcionar. Es decir, los mensajes salientes se envían como antes, tanto texto como capturas de pantalla, pero la función GetUpdates() no devuelve nada, la cola de chat está siempre vacía.
¿Alguien se ha encontrado con un fallo así? ¿Cuál puede ser la razón?
¡Hola!
Todas las etiquetas están descritas en los documentos sobre la API de Telegram.
hola chicos,
He completado el código para enviar el mensaje de telegrama a mt5 pero estoy teniendo un pequeño error, al enviar comando de cierre de muchos comandos de cierre al mismo tiempo, sólo puede enviar una orden pero no muchas órdenes.
¿Alguien me puede ayudar a ver donde me estoy equivocando?
hola chicos,
He completado el código para el envío de mensajes de telegrama a mt5 pero estoy teniendo un pequeño error, al enviar comando de cierre de muchos comandos de cierre al mismo tiempo, sólo puede enviar una orden, pero no muchas órdenes.
¿Alguien me puede ayudar a ver donde me estoy equivocando?
Si usted está sirviendo a muchos usuarios a través del bot hay un límite de 30 interacciones por segundo, creo.
Si usted está sirviendo a muchos usuarios a través del bot hay un límite de 30 interacciones por segundo, creo.
Yo sólo lo uso personalmente y sólo para enviar cada cuenta mt5 a telegram.
pero al abrir o cerrar el comando al mismo tiempo, sólo puede enviar un mensaje a telegram
Yo sólo lo uso personalmente y sólo para enviar cada cuenta mt5 a telegram.
pero al abrir o cerrar el comando al mismo tiempo, sólo puede enviar un mensaje a telegram
No había código cuando contesté , veo que se puede sustituir el bot.SendMessage por una función que añada el mensaje a una lista de ráfagas . También podrías seguir creciendo el mensaje y enviarlo fuera del bucle pero ahí chocarías con limitaciones de caracteres.
Un breve esquema podría ser así :