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

 
artmedia70:
Es decir, ¿tengo que añadir una llamada para mostrar información en la ventana del indicador en init()?


intente escribir en init()

int init()
{
Alert("No encuentro tu caja, me voy, aunque me llamaron en la sección init()");
return(0);
}

 
IgorM:


Bueno, intenta escribir en init()

int init()
{
Alert("No encuentro tu caja, me voy, aunque me llamaron en la sección init()");
return(0);
}

:) ¿Estás plagiando? :)
 

Ayúdenme a resolver este problema. Si tengo una operación perdedora, tengo que cambiar el lote, si no, no. Lo hago ......

//====================================================
// Расчет размера позиции
//====================================================
double CalculateLots(){
   double Res=dLots;
   bool bProfit=true;
   int PrevTime=-1;
   double tmpLots;
   for (int i=0;i<OrdersHistoryTotal();i++){
      if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
      if (OrderSymbol()!=Symbol())                    continue;
      if (OrderMagicNumber()!=MAGIC)                  continue;
      if (OrderCloseTime()<PrevTime)                  continue;
      PrevTime=OrderCloseTime();
      if (OrderProfit()>0) bProfit=true; else bProfit=false;
      tmpLots=OrderLots();
   }
   double Lots_Step=MarketInfo(Symbol(), MODE_LOTSTEP);
   if (!bProfit) Res=tmpLots+Lots_Step;
   return(Res);
}

Tengo que cambiar el lote si quiero cambiarlo, pero no puedo. El caso es que cuando cambio de lote ya tengo una orden pendiente (con otros lotes). ¡Necesito eliminar estas órdenes y cambiar el número de lotes en ellas (a uno nuevo), pero los parámetros siguen siendo los mismos !


 


Estimados programadores,
Por favor, responda a la siguiente pregunta:

¿Pueden decirme por qué los datos de una cadena no se introducen correctamente en el array?

extern string Sessions_begin="15:31;14:11";
extern string Sessions_end="22:32;18:12"; 

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,
            // второй время[][1]-первый элемень время(часы), [][2]-минуты.

//
str_len_begin=StringLen(Sessions_begin)

Print("Длина str_len_begin="+str_len_begin);
  for (n=1,i=0; i<=str_len_begin; i+=6,n++)
  {
   mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i,2));
   mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
   mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i,2));
   mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
  Print("n= "+n);
  Print("i= "+i);

  Print("Начало сессии "+n+" в(вывод через Print) "+StringSubstr(Sessions_begin,i,2)+":"+StringSubstr(Sessions_begin,i+3,2)); 
  Print("Конец сессии "+n+" в (вывод через Print) "+StringSubstr(Sessions_end,i,2)+":"+StringSubstr(Sessions_end,i+3,2));
  Print("Начало сессии "+n+" в(вывод через Массив) "+mas_time_begin[n][1]+":"+mas_time_begin[n][2]);
  Print("Конец сессии "+n+" в(вывод через Массив) "+mas_time_end[n][1]+":"+mas_time_end[n][2]);
  }

Esto es lo que tengo ahora:

http://savepic.ru/1410881.gif

 

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

Gracias a los que han respondido.

 
Hedin:


Estimados programadores,
por favor respondan a la siguiente pregunta:

¿Pueden decirme por qué los datos de la cadena no se introducen correctamente en el array?

Esto es lo que tengo ahora:

http://savepic.ru/1410881.gif

El tamaño de la matriz en la segunda dimensión no se establece correctamente:

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,

Los elementos de la matriz empiezan por 0, y se encuentran en estas entradas

mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
quiere escribir los datos en la celda 3 (0, 1, 2), aunque la segunda dimensión está configurada con dos (sólo se pueden utilizar los índices 0, 1).

Solución: O bien ampliar la matriz en la segunda dimensión

int mas_time_begin[10][3], mas_time_end[10][3];  //первый - № сессии,

o reescribir los índices al escribir los valores

mas_time_begin[n][0]=StrToInteger(StringSubstr(Sessions_begin,i,2));
mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][0]=StrToInteger(StringSubstr(Sessions_end,i,2));
mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
 
rosomah:

Señores, ¿pueden aconsejarnos? Tengo un problema con la ordenación de las órdenes cuando habilito o (superpongo) un EA reparado sobre órdenes pendientes ya colocadas. He intentado construir códigos para buscar y reasignar los números de orden disponibles para que el EA los reconozca como propios, pero el resultado es indefinido. Cuando lo habilito, el EA comienza a colocar algunas órdenes pendientes en el mismo lugar con los mismos parámetros..... - ¿Alguien tiene algún código o sugerencia sobre este tema para muchas órdenes?

Gracias por sus comentarios.

Depende de cómo el EA defina "owl - alien", si está usando un número mágico entonces no hay nada que puedas hacer con las órdenes pendientes ya colocadas ya que este parámetro no puede ser cambiado para una orden ya colocada.
Si almacena los billetes, supongamos, en variables globales, entonces ya es más fácil, los billetes ya disponibles se pueden "añadir a la base". Así que esta es la principal pregunta para usted en esta etapa. ¿Cómo lo determina?
 
ToLik_SRGV:

Depende de cómo el EA defina "owl - alien". Si se establece por número mágico entonces no hay nada que hacer con las órdenes pendientes ya colocadas, ya que este parámetro no se puede cambiar para una orden ya colocada.

Sí, y si hay una parrilla de diferentes órdenes pendientes, con agujeros formados porque algunas órdenes pendientes se dispararon, otras se movieron, etc. Hay que reconocerlos, renumerarlos y llenarlos con un "nuevo" Asesor Experto. Por supuesto, podemos hacerlo manualmente, pero... Entonces, ¿por qué molestarse con MTS? Para un pedido, podemos conseguirlo al menos de N.Morzhov:

int poisk;

if(poisk==0)

{ int k;

for(k=0; k<OrderTotal();k++)

{ if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==false)break;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic)cjntinue

ticket_buy1=OrderTicket();

poisk=1; }}

¿pero cómo tratar un conjunto de órdenes?

 
¿Quién sabe cuándo está previsto que salga el tutorial de mql5?
 
Abzasc:
¿Quién sabe cuándo está previsto que salga el tutorial de mql5?

https://www.mql5.com/ru/forum/491