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

 
¿Puedes enseñar cómo abrir y cerrar una operación en MT4 desde el mercado y desde las órdenes pendientes?
 

¡¡¡Hola queridos programadores!!!
Estoy haciendo un contador de garrapatas para la vela, ¡y algo ha salido mal! Quiero hacer que cuente ticks cuando el precio solo sube, pero cuenta cuando sube y cuando baja (todos los ticks, y quiero solo ticks crecientes) Mira plz...

double CountTickBUY()
{

double old_price;
double delta_cur; 
double price = 0;
double old_open_price = 0;

for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
         if(OrderSymbol() == _Symbol && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
           {
           old_price = iClose(NULL, 0 , i);
           price = iOpen(NULL, 0 , i);

           delta_cur = old_price > price;
           if(delta_cur > 0) 
             {
             count_plusbuy++;
             }
           }
   }
   return(count_plusbuy);
}
 
sviter-pro:

¡¡¡Hola queridos programadores!!!
Estoy haciendo un contador de garrapatas para la vela, ¡y algo ha salido mal! Quiero hacer que cuente ticks cuando el precio solo sube, pero cuenta cuando sube y cuando baja (todos los ticks, y quiero solo ticks crecientes) Mira plz...

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}
 
Konstantin Nikitin:

¡Muchas gracias!

 

Konstantin Nikitin: Считает тики на кождой свече хорошо, но по 2 раза! Тоесть если отсчет пошел от 1.00000 и дошел до 1.00100 он 100 пунктов щитает, потом когда спустилась цена до 1.00080 он ждет и не считает, но когда цена опять начинает расти от 1.00080 то опять начинает считать пункты, а надо что бы ждал до 1.00100 и от нее считал дальше!!!

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}



 

Por favor, explique qué comprueba exactamente la función "IsTradeAllowed" cuando se llama a su segunda forma.

Sé que el primer formulario comprueba si se permite el comercio automático y si hay un flujo de comercio libre. ¿Y la segunda forma? ¿Cuáles son exactamente las comprobaciones que tienen lugar cuando se llama al segundo formulario?

 
Asa saas:

Por favor, explique qué comprueba exactamente la función "IsTradeAllowed" cuando se llama a su segunda forma.

Sé que el primer formulario comprueba si el comercio automático está permitido y si el flujo de comercio es libre. ¿Y la segunda forma? ¿Cuáles son exactamente las comprobaciones que se realizan cuando se llama al segundo formulario?

La segunda forma de llamada devuelve información sobre la posibilidad de operar con un símbolo concreto en un momento determinado.


Si el flujo comercial está libre isTradeContextBusy

 
Alekseu Fedotov:

La segunda forma de la llamada devuelve información sobre la capacidad de negociación de un determinado símbolo en un momento determinado.


Si el flujo comercial está libre isTradeContextBusy

¿La primera forma de la función "IsTradeAllowed" no comprueba también si el hilo comercial está libre o no?

Sólo utilizo la segunda forma de la función "IsTradeAllowed" para saber si el mercado está abierto antes de ejecutar las órdenes.

Sin embargo, no entiendo muy bien si tengo que utilizar una función separada para comprobar si un flujo libre como "IsTradeContextBusy" está disponible o si la segunda forma de "IsTradeAllowed" ya hace esta comprobación.

 
Asa saas:

¿La primera forma de "IsTradeAllowed" no comprueba también si el flujo comercial es libre o no?

Sólo utilizo la segunda forma de la función "IsTradeAllowed" para saber si el mercado está abierto antes de ejecutar las órdenes.

Sin embargo, no estoy muy seguro de si tengo que utilizar una función por separado para comprobar si un flujo libre como "IsTradeContextBusy" está disponible o si la segunda forma de "IsTradeAllowed" ya hace esa comprobación.

1. No

2. No, no permite operar con Asesores Expertos, pero puede hacerlo manualmente

3. necesita utilizar otra función para comprobar el flujo comercial ("IsTradeContextBusy()")

 
Asa saas:

¿El primer formulario "IsTradeAllowed" no comprueba también si el flujo comercial es libre o no?

Sí, así es. Al menos, así lo dice la documentación. Yo mismo no sé por qué se hace, pero el hecho sigue siendo el mismo:

Возвращаемое значение

Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.

Simplemente utilizo la segunda forma de la función "IsTradeAllowed" para saber si el mercado está abierto antes de ejecutar las órdenes.

Sin embargo, no estoy muy seguro de si la función para comprobar si el flujo libre está disponible como "IsTradeContextBusy" debe utilizarse por separado o la segunda forma "IsTradeAllowed" ya realiza dicha comprobación.

Pero no está claro con la segunda forma. Es responsable del tiempo en el futuro o en el pasado.