Hay lógicas complejas que funcionan durante veinticuatro horas, pero en un momento dado se congelan. Esto ocurre a veces en EX5, cuyo código fuente no se puede editar. ¿Es posible determinar desde el exterior que un indicador o un Asesor Experto se cuelga? ¿Recoger estadísticas sobre la parte calculada de un determinado indicador?
Con los indicadores, parece posible, porque están en un estado colgado matan la actualización de los gráficos en su símbolo. El Asesor Experto puede rastrearlo, aunque sin especificar qué indicador causó el rastro.
Estableciendo récords de prohibiciones. Durante las prohibiciones recibo respuestas en el foro, pero sólo puedo leerlas. Y después de que se levante otra prohibición es muy difícil recordar a quién y dónde contestó para continuar. ¿Es posible resolver este asunto (sin el consejo de no ser baneado más)? Y, en general, a veces uno lee, pero no tiene tiempo de responder de inmediato. ¿Es posible establecer una bandera de recordatorio para "responder más tarde"?
comp: Estableciendo récords de prohibiciones. Durante las prohibiciones recibo respuestas en el foro, pero sólo puedo leerlas. Y después de que se levante otra prohibición es muy difícil recordar a quién y dónde contestó para continuar. ¿Es posible resolver este asunto (sin el consejo de no ser baneado más)? Y, en general, a veces uno lee, pero no tiene tiempo de responder de inmediato. ¿Es posible establecer un indicador de recordatorio para "responder más tarde"?
Primero hay que pensar, y luego hacer. No al revés. Entonces no habrá problemas de memoria.
¡¡¡Totalmente apoyado!!! ¿Es posible responder a una pregunta-sugerencia
comp: A veces lo lees y no tienes tiempo de responder de inmediato. ¿Es posible poner algún tipo de indicador de recordatorio para "responder más tarde"?
comp: ¿Es posible poner una bandera de recordatorio a ti mismo para "responder más tarde"?
Te entiendo en parte. Todo el mundo quiere una solución a sus problemas inmediatos. En tu caso, es demasiado. Tú, incluso sentado en una casa de baños, estás tratando de construir desarrolladores.
¿Pueden ustedes explicar por qué es así? Si debe ser así, por favor, añade en la documentación que sólo se tiene en cuenta el primer dígito después del punto.
Colegas, por favor, ayuda. No tengo suficiente cerebro propio.
El robot, que ha colocado órdenes de Límite, necesita eliminar la orden restante al cerrar una posición abierta (no importa si está en stop o en beneficio), pero no todas las órdenes, sino aquella cuyo número mágico es igual al ticket de la posición cerrada. Por lo tanto, el desencadenante del borrado debe ser el evento de cierre de la posición. Para mí no importa en este caso, cómo esta posición ha cerrado (sólo por la condición resultará que si el cierre por SL, entonces no hay límites, que debe ser eliminado). Pero si detallamos y lo hacemos bien, el gatillo es un TP.
Por lo tanto, el robot borra la orden, pero no después de que la posición se haya cerrado, sino tan pronto como se haya abierto. Y empieza a luchar contra sí mismo colocando yborrando constantementelas órdenes pendientes. Por favor, vea lo que está mal.
inputdouble lot = 0.2;
inputdouble TakeProfitPips = 50;
inputdouble StopLossPips = 200;
int bar=0;
int shift=1;
int tiket;
int otkt;
double price;
int cnt;
double TPp,SLp;
int tkt;
int n;
int type;
int _OrdersTotal = 0;
// кол-во позиций, соответствующих критериям (текущий инструмент и заданный MagicNumber),// состоянием на текущий тикint now_OrdersTotal = 0;
// кол-во позиций, соответствующих критериям (текущий инструмент и заданный MagicNumber),// состоянием на предыдущий тикstaticint pre_OrdersTotal = 0;
// массив открытых позиций состоянием на текущий тикint now_OrdersArray[][2]; // [№ в списке][№ тикета, тип позиции]// текущий номер позиции в массиве now_OrdersArray (для перебора)int now_CurOrder = 0;
// текущий номер позиции в массиве pre_OrdersArray (для перебора)int pre_CurOrder = 0;
// массив для хранения количества закрытых позиций каждого типаint now_ClosedOrdersArray[6][3]; // [тип ордера][тип закрытия] // временные флагиbool OrderClosed = true, PendingOrderOpened = false;
// временные переменныеint pre_OrdersArray[][2]; // [количество позиций][№ тикета, тип позиции]//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
voidOnTick()
{
if(OrdersTotal()== 0 && iTime(Symbol(),PERIOD_M1,1)==D'14.01.16 16:30')
{
price=Open[shift];
tiket=OrderSend(Symbol(),OP_SELLLIMIT,lot,price,3,price+StopLossPips*Point,price-TakeProfitPips*Point);
if(tiket<0)
{
Print("Ошибка OrderSend № - ",GetLastError());
}
}
if(OrdersTotal()!=0)
{
for(cnt=0; cnt<OrdersTotal(); cnt++)
OrderSelect(cnt,SELECT_BY_POS); // Если есть следующий
{ // Анализ ордеров:
price=OrderOpenPrice();
otkt = OrderTicket();
n=otkt;
//--------------------------------------------------------------if(OrderType()==OP_SELL && OrderMagicNumber()==0)
{
tiket=OrderSend(Symbol(),OP_SELLLIMIT,lot*3,price+100*Point,1,price+StopLossPips*Point,price-TakeProfitPips*Point,"My order",n);
tiket=OrderSend(Symbol(),OP_SELLLIMIT,lot*9,price+200*Point,1,price+StopLossPips*Point,price-TakeProfitPips*Point,"My order",n);
}
}
}
_OrdersTotal = OrdersTotal(); // запоминаем общее количество позицийArrayResize( now_OrdersArray, _OrdersTotal ); // изменяем размер массива открытых позиций под текущее кол-воArrayInitialize( now_OrdersArray, 0.0 ); // обнуляем массив
now_OrdersTotal = 0; // обнуляем количество позиций, соответствующих критериямArrayInitialize( now_ClosedOrdersArray, 0.0 ); // обнуляем массивы закрытых позиций и сработавших ордеров//+------------------------------------------------------------------+//| Перебираем все позиции и записываем в массив //+------------------------------------------------------------------+for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
if ( OrderSelect( z, SELECT_BY_POS ) )
{
now_OrdersArray[now_OrdersTotal][0] = OrderTicket();
now_OrdersArray[now_OrdersTotal][1] = OrderType();
now_OrdersTotal ++;
}
}
ArrayResize( now_OrdersArray, now_OrdersTotal ); // изменяем размер массива открытых позиций под кол-во позиций, соответствующих критериям//+------------------------------------------------------------------+//| Перебираем список позиций предыдущего тика, и считаем сколько закрылось позиций и//| сработало отложенных ордеров//+------------------------------------------------------------------+for ( pre_CurOrder = 0; pre_CurOrder < pre_OrdersTotal; pre_CurOrder ++ )
{
tkt = pre_OrdersArray[pre_CurOrder][0]; // запоминаем тикет и тип ордера
type = pre_OrdersArray[pre_CurOrder][1];
OrderClosed = true; // предпологаем, что если это позиция, то она закрыласьfor ( now_CurOrder = 0; now_CurOrder < now_OrdersTotal; now_CurOrder ++ ) // перебираем все позиции из текущего списка открытых позиций
{
if ( tkt == now_OrdersArray[now_CurOrder][0] ) // если позиция с таким тикетом есть в списке,
{ OrderClosed = false; // значит позиция не была закрыта (ордер не был удалён)break;
}
}
if ( OrderClosed ) // если была закрыта позиция (удалён ордер),
{
if (OrderSelect( tkt, SELECT_BY_TICKET )) // выбиаем ее
n = tkt; // присваеваем n номер тикета
}
}
//+------------------------------------------------------------------+//| Удаляем ордер с магическим номером = тикету закрытой ранее позиции //+------------------------------------------------------------------+for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
if ( OrderSelect( z, SELECT_BY_POS ) )
otkt = OrderTicket();
if (n == OrderMagicNumber ())
{OrderDelete( otkt );}
}
return;
}
Me pueden decir si hay un mecanismo incorporado para determinar en qué mercado está funcionando el robot de trading, es necesario identificar los mercados FOREX y FORTS.
Ayuda, chicos, no puede poner el idioma ruso en MT4 en Macbook, parece estar presente, pero se muestra en jeroglíficos, pero en el editor de meta está bien. Lo construí todo a través de Play on mac,
Hay lógicas complejas que funcionan durante veinticuatro horas, pero en un momento dado se congelan. Esto ocurre a veces en EX5, cuyo código fuente no se puede editar. ¿Es posible determinar desde el exterior que un indicador o un Asesor Experto se cuelga? ¿Recoger estadísticas sobre la parte calculada de un determinado indicador?
Con los indicadores, parece posible, porque están en un estado colgado matan la actualización de los gráficos en su símbolo. El Asesor Experto puede rastrearlo, aunque sin especificar qué indicador causó el rastro.
Estableciendo récords de prohibiciones. Durante las prohibiciones recibo respuestas en el foro, pero sólo puedo leerlas. Y después de que se levante otra prohibición es muy difícil recordar a quién y dónde contestó para continuar. ¿Es posible resolver este asunto (sin el consejo de no ser baneado más)? Y, en general, a veces uno lee, pero no tiene tiempo de responder de inmediato. ¿Es posible establecer un indicador de recordatorio para "responder más tarde"?
Primero hay que pensar y luego hacer. No al revés. Entonces no habrá problemas de memoria.
¡¡¡Palabras de oro !!!
A veces lo lees y no tienes tiempo de responder de inmediato. ¿Es posible poner algún tipo de indicador de recordatorio para "responder más tarde"?
¿Es posible poner una bandera de recordatorio a ti mismo para "responder más tarde"?
Pregunta sobre MathRound() en MQL4, que "devuelve un valor redondeado al entero más cercano de un valor numérico especificado".
Código:
Resultado:
¿Pueden ustedes explicar por qué es así? Si debe ser así, por favor, añade en la documentación que sólo se tiene en cuenta el primer dígito después del punto.
Colegas, por favor, ayuda. No tengo suficiente cerebro propio.
El robot, que ha colocado órdenes de Límite, necesita eliminar la orden restante al cerrar una posición abierta (no importa si está en stop o en beneficio), pero no todas las órdenes, sino aquella cuyo número mágico es igual al ticket de la posición cerrada. Por lo tanto, el desencadenante del borrado debe ser el evento de cierre de la posición. Para mí no importa en este caso, cómo esta posición ha cerrado (sólo por la condición resultará que si el cierre por SL, entonces no hay límites, que debe ser eliminado). Pero si detallamos y lo hacemos bien, el gatillo es un TP.
Por lo tanto, el robot borra la orden, pero no después de que la posición se haya cerrado, sino tan pronto como se haya abierto. Y empieza a luchar contra sí mismo colocando yborrando constantementelas órdenes pendientes. Por favor, vea lo que está mal.
Ayuda, chicos, no puede poner el idioma ruso en MT4 en Macbook, parece estar presente, pero se muestra en jeroglíficos, pero en el editor de meta está bien. Lo construí todo a través de Play on mac,
Se agradecería mucho el uso de Wine 1.9.4.