[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 314

 
hoz:

A mí también me dio el puto error. De hecho, no hay ninguna lógica. Para abrir una orden pendiente segúnhttps://book.mql4.com/ru/appendix/limits, el precio de apertura debe estar por debajo del Bid (para vender) o por encima del Ask (para comprar). Estoy haciendo lo que se requiere.

De vez en cuando me salen errores 0 y 130. Aunque el 130 es un error de stop erróneo, que puede ocurrir durante la modificación, pero no durante la apertura de la orden.

En la captura de pantalla la situación y la impresión mostrada por la función pr.

Por favor, aconséjeme cómo deshacerse de este error. Estoy realmente harto de este error. Lógicamente, no está en el tema en absoluto.

Víctor, además de la conformidad por arriba y por abajo, hay que utilizar la liquidación preventiva, porque mientras se envía la orden, el precio no se queda quieto, ¡así que se da un paso o se entra en la zona restringida! ¡Inserta como en la modificación y un mayor deslizamiento, y estarás bien! ¡Trabajando en Real sin errores! Buena suerte.
 
borilunad:
Víctor, además de arriba-abajo, hay que utilizar un gap preventivo, porque mientras se envía la orden, el precio no se queda quieto, ¡así que se da un paso o un escalón hacia la zona prohibida! ¡Inserta como en la modificación y un mayor deslizamiento, y estarás bien! ¡Trabajar en Real sin errores! Buena suerte.


Boris, entonces el deslizamiento ya vale 3, esto, según entiendo 3 puntos. ¿Cuánto más necesitas?

Te refieres a esto:

bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if ((ND(OOP) - g_stopLevel)> Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Me pregunto cómo implementarlo de una manera mejor, para no poner funciones extra aquí.

 

hoz, en me preguntaba cómo acortar aún más el si.Véase: si ponemos una variable

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)

tenemos cnt=cnt+paso, donde

if(_if) step=1;
}else{ step=-cnt;
}

Pero 1=cnt/cnt, a -cnt=cnt/(-1), la única diferencia es el denominador. Ahora recordemos que x^0=1, x^1=x, es decir, podemos poner nuestra variable booleana _if en el exponente, es decir,paso=cnt/a*(cnt^_if); donde

if(_if) a=1;
}else{ a=-1;
}

Pero ±a es supuestamente 2*_if-1, es decir

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)
int step=cnt/(2*_if-1)*(cnt^_if);//принимает два значения: 1 и -cnt
cnt=cnt+step;

O simplificamos

bool _if=((2*trend-1)*Δ≥const); cnt=cnt+cnt/((2*_if-1)*(cnt^_if));
 
hoz:


Boris, entonces el deslizamiento ya es de 3, eso es lo que entiendo por 3 puntos. ¿Cuánto más necesitas?

Te refieres a esto:

Me pregunto cómo implementar esto de forma más inteligente para no poner funciones extra aquí.

¡Espero que el deslizamiento sea de 3 por 4 dígitos si necesitas 30 por 5!
 

Chicos, por favor, aconsejar un script que da un mensaje que el mercado está abierto y que el mercado está cerrado.

Es decir, cuando llega el lunes 0.00.01 da un mensaje de que el mercado abre, luego el mensaje de que "el mercado está abierto", igualmente, que el mercado ha cerrado.

He escrito un script pero no funciona (( Ayúdame a resolverlo.

// определяем начало и конец торгов.
      // начало торгов в понедельник в 0.00.01
      
      if(DayOfWeek()==1 && Hour()== 0 && Minute()== 0 && Seconds()==01)
      {
         Alert("Рынок открылся.");
      }
      // конец торгов в Пятницу в 23.59.59
      if(DayOfWeek()==5 && Hour()== 23 && Minute()== 59 && Seconds()==59)
      {
         Alert("Пятница, Рынок закрылся.");
      }

 

¿Hay algún robot capaz de colocar órdenes pendientes BAY STOP y SELL STOP En un momento determinado , con un paso mínimo de activación del precio en ese momento. En resumen, bajo la noticia. No tengo tiempo con mis manos.
 
hoz:

A mí también me dio el puto error. De hecho, no hay ninguna lógica. Para abrir una orden pendiente segúnhttps://book.mql4.com/ru/appendix/limits, el precio de apertura debe estar por debajo del Bid (para vender) o por encima del Ask (para comprar). Estoy haciendo lo que se requiere.

De vez en cuando me salen errores 0 y 130. Aunque el 130 es un error de stop erróneo, que puede ocurrir durante la modificación, pero no durante la apertura de la orden.

En la captura de pantalla la situación y la impresión mostrada por la función pr.

Por favor, aconséjeme cómo deshacerse de este error. Estoy realmente harto de este error. Lógicamente, no está en el tema en absoluto.

El error 130 no es necesariamente una orden de parada. También es una distancia para colocar órdenes pendientes al menos int MarketInfo(Symbol(), MODE_STOPLEVEL)
 
borilunad:
¡Espero que el deslizamiento 3 para 4 dígitos, si usted necesita 30 para 5!

Así que no hay ningún deslizamiento en el probador, por lo que... Corregido a 30.

artmedia70:
El error de 130 no es necesariamente una orden de parada. También es una distancia de órdenes pendientes al menos igual a int MarketInfo(Symbol(), MODE_STOPLEVEL)

Aquí está:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if (ND(OOP)> (Ask + g_stopLevel))
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Dónde:

g_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL) * pt;

Está escrito de la misma manera que el tuyo, Artem. Ayer fue lo mismo por lógica. Pero los errores se acumulan. No tiene sentido añadir puntos extra para que funcione en el probador, donde no hay requotes ni deslizamientos en absoluto.

¿Qué debería hacer de forma más universal para no caer en los mismos errores? He visto muchos Asesores Expertos que nunca han sumado 2-3 puntos extra excepto por el deslizamiento. Al fin y al cabo, en este caso habrá una desviación de 6 p. del precio requerido. Y esto no es correcto. Los Asesores Expertos están escritos tanto para ticks como para minutos. Y parece que puede haber precisión en el comercio. Así que, quiero que sea preciso, que no tenga enormes sangrías...

 

¡Amigos!

Ha surgido una cuestión global

¿Es posible obtener el flujo de ticks en el terminal los fines de semana, para poder escribir y depurar EAs tranquilamente?

Ya tengo algunos consejos para utilizarlo en mi robot de trading.

No puedo usar un tick para activar el EA, necesito un flujo de ticks en un rango determinado

¿existe algo así en la naturaleza?

¿Servidores mt4 que emulan las cotizaciones en streaming los fines de semana?

 
pasha5282:

Chicos, por favor, aconsejar un script que da un mensaje que el mercado está abierto y que el mercado está cerrado.

Es decir, cuando el lunes 0.00.01 da el mensaje de que el mercado abre, entonces el mensaje de que "el mercado está abierto", igualmente, que el mercado ha cerrado.

escribí un script pero por alguna razón no funciona (( ayúdame a resolverlo.


Si es un script y se encuentra en la carpeta scpirts, entonces ha funcionado una vez y ha sido eliminado del gráfico. Para mantenerlo permanentemente, ponga su código dentro de este


int start()
{
   while(!IsStopped())
   {
      // вот сюда

      Sleep(500);
   }
}