Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 236

 
s4sha45:

Hola a todos! Acabo de empezar a aprender a escribir un sencillo robot de trading a partir de los ejemplos de los vídeos de YouTube. Quiero escribir un script para abrir la primeraorden de compra, y debe abrirse si no tengo otras órdenes abiertas, el script escribió esto, pero la orden no se abre, por favor, avisen dónde está el error!

<

void OnTick()

{

if(OP_SELL==0 && OP_BUY==0)

int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit, "My order",MagicNumber,0,clrGreen);

>

Ha escrito (textualmente en ruso):

Si 1 es igual a 0 y 0 es igual a 0, entonces abra una posición.

 
Artyom Trishkin:

Ha escrito (textualmente en ruso):

Si 1 es igual a 0 y 0 es igual a 0, entonces abra una posición.

En el video el autor escribió esta línea como if (b==0&& s==0) y funcionó. y antes de eso no introdujo ninguna variable b y s. tal vez la versión es antigua. si esto es incorrecto, entonces ¿cómo debería ser la línea que determina que no tengo órdenes ahora?
 
bool FindOrder(int eType, int eMagic, string eSymbol)
   {
   for(int i=OrdersTotal()-1; i>=0; i--)
      {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderCloseTime()>0) continue;
      if(OrderSymbol()!=eSymbol) continue;
      if(OrderMagicNumber()!=eMagic) continue;
      if(OrderType()!=eType) continue;
      return(true);
      }
   return(false);
   }
bool b=FindOrder(OP_BUY,Magic,Symbol());
if(b)
   {
   
   }
 
s4sha45:

Hola a todos! Acabo de empezar a aprender a escribir un sencillo robot de trading a partir de los ejemplos de los vídeos de YouTube. Quiero escribir un script para abrir la primeraorden de compra, y debe abrirse si no tengo otras órdenes abiertas, el script escribió esto, pero la orden no se abre, por favor, avisen dónde está el error!

<

void OnTick()

  {

  if (OrdersTotal()==0)   int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit,"My order",MagicNumber,0,clrGreen);

  }

Si necesita abrir una orden cuando no hay órdenes de compra, venta, stop o límite.

OrdersTotal()
Los pedidos cerrados no se tienen en cuenta.
 
Александр:

Si necesita abrir una orden cuando no hay órdenes de compra, venta, stop o límite.

Los pedidos cerrados no se tienen en cuenta.
Gracias.
 

Buenas noches, tengo una pregunta: necesito comparar los precios del mercado en cada tick con los precios de un determinado archivo csv (7 columnas), y las órdenes están agrupadas en series y el número de órdenes en cada serie puede ser arbitrario. Quiero entender qué sería más rápido: gastar tiempo en la inicialización para crear un array con todos los datos en cada orden, y luego iterar sobre el array en un tick, o abrir el archivo y copiar todo en el cursor cada vez. Me pregunto cuál es el tiempo aproximado para acceder al archivo y a la matriz, cuánto tiempo voy a ganar. Gracias.

 
Karomos:

Buenas noches, tengo una pregunta: necesito comparar los precios del mercado en cada tick con los precios de un determinado archivo csv (7 columnas), y las órdenes están agrupadas en series y el número de órdenes en cada serie puede ser arbitrario. Quiero entender qué sería más rápido: gastar tiempo en la inicialización para crear un array con todos los datos en cada orden, y luego iterar sobre el array en un tick, o abrir el archivo y copiar todo en el cursor cada vez. Me pregunto cuál es el tiempo aproximado para acceder al archivo y a la matriz, cuánto tiempo voy a ganar. Gracias.

Lo que has escrito no está muy claro, pero el acceso a la memoria es definitivamente más rápido que la lectura de un archivo.

 

Hola. ¿Puede decirme si es posible llamar a la ventana de parámetros del EA de forma programada?

El problema es que los parámetros sólo se pueden inicializar con constantes y quiero calcularlos primero con un determinado algoritmo.

Tengo los niveles BUY_STOP y SELL_STOP en los parámetros de mi EA. En realidad, el Asesor Experto puede calcular estos niveles por sí mismo en la mayoría de los casos, sólo tengo que comprobar su corrección.

Por lo tanto, quiero que mi EA calcule estos niveles al inicio y los ponga en los parámetros y muestre la ventana de parámetros. Si son correctos, pulso OK y el EA continúa su funcionamiento normal. Si mi Asesor Experto ha identificado incorrectamente los niveles, los corrijo a los valores correctos. Si es imposible mostrar la ventana de parámetros programáticamente, entonces aconsejar si podemos de alguna manera inicializar los parámetros (he escrito una función para su cálculo) ANTES de mostrar la ventana de parámetros del EA.

 

¡Queridos expertos!

¿Puede decirme cómo encontrar una orden?

La situación es la siguiente:

- mi EA está abriendo 2 órdenes al mismo tiempo. La SL es la misma, la TP no está fijada.

- Y entonces, bajo ciertas circunstancias, mi EA cerrará la primera orden y tengo que corregir el SL en la segunda.

La cuestión es cómo encontrar el segundo orden.

El problema es que puede haber varios pares abiertos. Pero el momento de la apertura es diferente para cada par.


Tal y como yo lo veo, puede haber muchas variantes. ¿Cómo hacerlo más fácil y correcto?

No quiero escribir la entrada en los comentarios porque el corredor puede borrarla.

En realidad, el segundo orden puede recibir otro magik. Pero esto no resuelve el problema.

Podemos buscar por tiempo o por precio de apertura. Pero, ¿dónde está la garantía de que el segundo pedido se abrirá al mismo precio?

¿Qué me aconseja?

 

El indicador de MT5 dibuja una línea en dos colores.

Los valores de la línea están en el mismo buffer.

¿Hay alguna forma de identificar el color de la línea cuando se solicitan valores del indicador?