Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1356

 
Lerchik:

Así que lo que está diciendo es que la apertura de una orden de mercado en Ask será igual a la apertura de una orden BuyLimit.

Algo no está bien aquí. Supongamos que el precio de oferta es igual a 1,4500. Así, cuando abrimos una orden de compra en el mercado, se situará en el precio de venta y el precio de compra de la oferta es, digamos, 10 puntos.

Entonces la orden se situará en 1,4510.

Ahora la orden BuyLimit es igual a 1.4500. Y el precio cae 10 puntos por debajo del precio Ask en Ask abrirá una orden. No por la oferta, sino por la demanda.

No encaja ni un poco. Son cosas diferentes y no se pueden comparar así.

¿Quizá me equivoque?

Todas las órdenes de compra se abren por Ask y se cierran por Bid, y viceversa para las órdenes de venta.

Si te da pereza leerlo, abre una cuenta demo y practica.

 
Сергей Таболин:

¿Por qué no empiezas por leer la documentación?

Esto es lo que hay en la documentación:

Orden pendiente

Una orden pendiente es una instrucción de una empresa de corretaje para comprar o vender un instrumento financiero en una fecha futura a unas condiciones determinadas. Existen los siguientes tipos de órdenes pendientes:

  • Límite de compra- solicitud de compra al precio Ask que es igual o inferior al especificado en la orden. El nivel de precios actual es superior al valor de la orden. Por lo general, este tipo de órdenes se coloca con la expectativa de que el precio del valor comience a crecer cuando caiga a un determinado nivel;

Pero no entiendo lo que está escrito aquí y cómo funciona.

Es decir, el precio caerá por debajo del límite inferior y un Askom abrirá una orden. ¿Pero al mismo tiempo la orden se abrirá al mismo precio o superior?

No hay nada sobre esto en ninguna parte. Sólo hay reglas. Aquí nadie quiere explicar por qué.

Así que estoy tratando de lograr algo.

 
Lerchik:

Esto es lo que hay en la documentación:

Orden pendiente

Una orden pendiente es una instrucción de una empresa de corretaje para comprar o vender un instrumento financiero en condiciones específicas en el futuro. Existen los siguientes tipos de órdenes pendientes:

  • Límite de compra- solicitud de compra al precio Ask que es igual o inferior al especificado en la orden. El nivel de precios actual es superior al valor de la orden. Por lo general, este tipo de órdenes se colocan con la expectativa de que el precio del instrumento comience a crecer al caer a un determinado nivel;

Pero no entiendo lo que está escrito aquí y cómo funciona.

Es decir, el precio caerá por debajo del límite inferior y un Askom abrirá una orden. ¿Pero al mismo tiempo la orden se abrirá al mismo precio o superior?

No hay nada sobre esto en ninguna parte. Sólo hay reglas. Aquí nadie quiere explicar por qué.

Así que quiero conseguir algo.

BuyLimit puede establecerse SOLO por debajo del precio Ask. El SellLimit sólo puede fijarse por encima del precio Bid.

El BuyStop sólo puede establecerse por encima del precio Ask. El SellStop sólo puede fijarse por debajo del precio Bid.

Cuando el precio correspondiente alcance la orden correspondiente, ésta se activará y se creará la posición correspondiente.

 
Lerchik:

Esto es lo que hay en la documentación:

Orden pendiente

Una orden pendiente es una instrucción de una empresa de corretaje para comprar o vender un instrumento financiero en condiciones específicas en el futuro. Existen los siguientes tipos de órdenes pendientes:

  • Límite de compra- solicitud de compra al precio Ask que es igual o inferior al especificado en la orden. El nivel de precios actual es superior al valor de la orden. Por lo general, este tipo de órdenes se colocan con la expectativa de que el precio del instrumento comience a crecer al caer a un determinado nivel;

Pero no entiendo lo que está escrito aquí y cómo funciona.

Es decir, el precio caerá por debajo del límite inferior y un Askom abrirá una orden. ¿Pero al mismo tiempo la orden se abrirá al mismo precio o superior?

No hay nada sobre esto en ninguna parte. Sólo hay reglas. Aquí nadie quiere explicar por qué.

Así que estoy buscando algo.

Abra una cuenta de demostración y practique.

ElLímite de Compra se establece por debajo del precio de venta actual y se abrirá cuando el preciode venta sea inferior

El stop de compra se sitúa por encima del precio de venta actual y se abrirá cuandoel precio de venta suba .

Lacompra se abre al precio Ask actual

 
MakarFX:

Abra una cuenta de demostración y practique.

ElLímite de Compra se establece por debajo del precio de venta actual y se abrirá cuandoel precio de venta baje

El Buy Stop se sitúa por encima del precio Ask actual y se abrirá cuandoel Ask suba

Lacompra se abre al precio Ask actual

Eso es algo.

Siguiendo...

Bien, el precio de la oferta ha caído por debajo del precio de la demanda y la demanda abre la orden. Pero, ¿el precio del pedido seguirá siendo el mismo que se estableció en el pedido o será diferente?

 
Lerchik:

Eso es algo.

Siguiendo...

Bien, el precio de oferta ha caído por debajo del precio de la orden y el Ascom ha abierto la orden. Pero, ¿el precio del pedido seguirá siendo el mismo que se estableció en el pedido o será diferente?

1 El precio de venta debe caer hasta el precio de las "probabilidades".

2 El precio se mantiene

 
MakarFX:

1 El precio ascendente debe caer hasta el precio de la pausa.

2 El precio se mantiene

Muchas gracias por la aclaración.

Me preguntaba por qué no funcionaba como quería.

 

Buenas tardes a todos.

Por lo que entendí de las respuestas a mi pregunta anterior, sólo necesito manejar los errores, que pueden ocurrir al abrir las órdenes, eso es lo primero. En segundo lugar, necesito proteger el EA para que no se cuelgue el servidor con cada tick en caso de error.

Primera pregunta, por favor dígame cómo hacer el manejo de errores.

Segunda pregunta: ¿cómo protegerse de los golpes del servidor?

Ahora mis operaciones se abren así

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
    if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print("Buy Open"); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1

// И ОТЛОЖКИ ВОТ ТАК

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   
   if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0&& max_Price>Bid)
   { //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   
   Print("БАЙ СТОП AO УСЛОВИЕ 1");
        if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,Magik_number,TimeCurrent()+order_life_time))Print("BUY_STOP OPEN"); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР
   
   }  //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   } // КОНЕЦ УСЛОВИЕ1



La variable Count Market Buy se calcula con esta función

         void data_orders(string comment="alt",int magik_number=123)
              {
         int I = 0;
   count_orders_all = 0;   //КОЛИЧЕСТВО ВСЕХ УСТАНОВЛЕННЫХ ОРДЕРОВ
   count_orders_market_all = 0; //КОЛИЧСТВО ВСЕХ РЫНОЧНЫХ ОРДЕРОВ
   count_orders_market_buy = 0;
   
   count_orders_stop_buy = 0;    //КОЛИЧЕСТВО СТОП БАЕВ
   count_orders_limit_buy = 0;   // КОЛИЧЕСТВО ЛИМИТ БАЕВ
   
   count_orders_stop_sell = 0;    //КОЛИЧЕСТВО СТОП СЕЛОВ
   count_orders_limit_sell = 0;   //КОЛИЧЕСТВО ЛИМИТ СЕЛОВ
   
   
  lot_orders_buy = 0;    //ОБЪЁМ ЛОТА ПО БАЙ ОРДЕРАМ
         lot_orders_sell = 0;      //ОБЪЁМ ЛОТА ПО СЕЛЛ ОРДЕРАМ
         balance_all = 0;          // БАЛАНС ПО ВСЕМ ОРДЕРАМ
         balance_buy = 0;         // БАЛАНС ПО ОРДЕРАМ БАЙ
         balance_sell = 0;        // БАЛАНС ПО ОРДЕРАМ СЕЛЛ
         
         
         
          for(int i = 0; i <= OrdersTotal();i ++) // перебор всех ордеров в цикле
          {
  
   if(OrderSelect(I , SELECT_BY_POS, MODE_TRADES))// выбираем ордер по переменной цикла
   {
    if(OrderMagicNumber() != magik_number || OrderSymbol() !=Symbol()) // если ордер не нашь то
    {
    continue; // переходим на следующую итерацию
    
    }
    if(comment== OrderComment() || comment=="alt")// если коментарий нашь то 
    {
    count_orders_all+=1;
    if(OrderType()== OP_BUY)
    {
    count_orders_market_all+=1;
    count_orders_market_buy+=1;
    }
    if(OrderType()== OP_SELL)
    {
    count_orders_market_all+=1;
    count_orders_market_sell+=1;
    }
    if(OrderType()== OP_BUYSTOP)
    {
    count_orders_stop_buy+=1;
    }
    if(OrderType()== OP_BUYLIMIT)
    {
    count_orders_limit_buy+=1;
    
    }
    if(OrderType()== OP_SELLSTOP)
    {
    count_orders_stop_sell+=1;
    
    }
    if(OrderType()== OP_SELLLIMIT)
    {
    count_orders_limit_sell+=1;
    
    }
    
    
    
    }
         
         
              }
              }
              }

Si quiero operar con un servidor real, me gustaría saber cómo evitar el chat del servidor en caso de errores.

 
DanilaMactep:

Buenas tardes a todos.

Por favor, escríbanme y díganme cómo manejar los errores correctamente y cómo evitar que el servidor suene en cada tic cuando se produce un error...
if (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}
 
MakarFX:

Y esta solicitud debe escribirse después de cada línea en la que se intente abrir una orden mediante Ordersend, ¿verdad?

Pero tengo una pregunta - si el Remove EA ha eliminado el EA del gráfico, ¿cómo puedo hacer que se vuelva a unir automáticamente al gráfico y siga funcionando? Podría describir el asunto con más detalles - error 141 - demasiadas solicitudes. Si hay demasiadas solicitudes, borramos el EA del gráfico. ¿Qué debo hacer ahora, esperar a levantarme por la mañana, cambiar todo y venir al PC para adjuntar el EA al gráfico de nuevo?

Razón de la queja: