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

 

Buenas tardes, distinguidos expertos.

¿Podría aconsejarme sobre esta cuestión?

¿Existe alguna función estándar en MQL4 que permita determinar el valor máximo/mínimo que tomó el precio en el intervalo comprendido entre la barra i-ésima y la j-ésima?

Muchas gracias de antemano.

 
Morzh09:

Buenas tardes, distinguidos expertos.

¿Podría aconsejarme sobre esta cuestión?

¿Existe alguna función estándar en MQL4 que permita determinar el valor máximo/mínimo que tomó el precio en el intervalo comprendido entre la barra i-ésima y la j-ésima?

Muchas gracias de antemano.

https://docs.mql4.com/ru/series/iHighest

https://docs.mql4.com/ru/series/iLowest

 
¿Qué te parece esto?
void CheckForOpen() { 

//

s=0;
     t_up=icustom(.........................);
     if(t_up==1)
        {
          s=1;
          for(k=0;k<10;k++)             //количество раз проверки
            {
               sleep(30000);             //
             //думаю что в этом месте рефреш ????????
               if(t_up==1)
                    s=1;
                else
                    {
                       s=0;
                       break;
                    }
             }
           if(s==1)op="buy";
        }
      else
        {
          s=0;
          break;
        }
return;
}
Hay que refrescarse en algún sitio. Y una pregunta: ¿cuáles son las consecuencias de usar Slap?
 
gince:
Y si lo haces así, tienes que refrescar en alguna parte. Y una pregunta: ¿qué consecuencias tiene el uso de la bofetada?

Elsueño en el probador no funciona.

¿Por qué no te funciona la comprobación de cada garrapata? ¿El indicador es "pesado"?

 

¡Buenas tardes, queridos expertos! Estoy aprendiendo a programar en MOL4. No sé cómo escribir correctamente la condición: "Si hay más órdenes de compra que de venta".

 
fanat:

¡Buenas tardes, queridos expertos! Estoy aprendiendo a programar en MOL4. No sé cómo escribir correctamente la condición: "Si hay más órdenes de compra que de venta".

¿Abierto? ¿Cerrado? ¿Mercado? ¿Aplazado?
Hay una diferencia.
 
fanat:

¡Buenas tardes, queridos expertos! Estoy aprendiendo a programar en MOL4. No sé cómo escribir correctamente la condición: "Si hay más órdenes de compra que de venta". Por favor, ayuda.


1. Contar el número de pedidos del primer tipo

2. Contar el número de pedidos del segundo tipo

3. Comparar resultados

extern int Magic=20100906;
//+------------------------------------------------------------------+
//|     Массив для хранения количества открытых позиций каждого типа |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| int Order_Count[6];                                              |
//+------------------------------------------------------------------+
int Order_Count[6];

//+------------------------------------------------------------------+
//|       Функция возвращаюшая количество ордеров определенного типа |
//|                                   исхода из заданных ограничений |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| int Order_Count_Calculate(string lSymbol, int lMagic, int lOP=-1)|
//+------------------------------------------------------------------+
int Order_Count_Calculate(string lSymbol, int lMagic, int lOP=-1){
   ArrayInitialize(Order_Count,0);
   for (int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderSymbol() != lSymbol)                   continue;
      if (OrderMagicNumber() != lMagic)                continue;
      Order_Count[OrderType()]++;
   }
   if (lOP!=-1) return(Order_Count[lOP]);
   return(0);
}

int start(){
   Order_Count_Calculate(Symbol(), Magic);
   if (Order_Count[OP_BUY]>Order_Count[OP_SELL])
   // Ваши действия
   return(0);
}

 

¡¡¡Hola!!!

Un simple indicador con flechas. Ayer ambos caminos.... de ninguna manera... Hoy con la cabeza despejada sigo sin ver el error.....

¡¡¡¡¡NO ESTÁ DIBUJANDO NADA!!!!! Por favor, dígame dónde me he equivocado....

//+------------------------------------------------------------------+
//|                                         Indicator_OsMA_Stoch.mq4 |
//|                                                                  |
//|           огромное cпасибо за помощь Vinin и granit77            |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int       Fast_EMA=8;      // пар-ры OsMA
extern int       Slow_EMA=34;     // пар-ры OsMA
extern int       Signal_EMA=1;    // пар-ры OsMA
extern double    N = 0.0002;      // контр. линия
extern int     KPeriod     = 21;  // Период (количество баров) для вычисления линии %K.
extern int     DPeriod     = 5;   // Период усреднения для вычисления линии %D.
extern int     Slowing     = 8;   // Значение замедления.
extern int       A = 20;          // расстояние от бара
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double OsMA[];
double Stoch[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_ARROW, EMPTY, 1);
   SetIndexArrow(0,234);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW, EMPTY, 1);
   SetIndexArrow(1,233);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexBuffer(2,OsMA);
   SetIndexBuffer(3,Stoch);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   
   for(int i = limit; i>= 0; i--) {
      ExtMapBuffer2[i] = EMPTY;
      ExtMapBuffer1[i] = EMPTY;
      OsMA[i]=iOsMA(NULL,0,Fast_EMA,Slow_EMA,Signal_EMA,PRICE_OPEN,i);
      Stoch[i]=iStochastic(NULL,0,KPeriod,DPeriod,Slowing,1,0,MODE_MAIN,i);
      if(true                &&
        (OsMA[i]>OsMA[i+1])  ||
        (OsMA[i]<OsMA[i+1])  &&
        (Stoch[i+1]>Stoch[i])||
        (Stoch[i+1]<Stoch[i])
        )
      {
       if((OsMA[i]<-N)&&(Stoch[i]<20)) ExtMapBuffer2[i] = Low[i] -A*Point;
       if((OsMA[i]> N)&&(Stoch[i]>80)) ExtMapBuffer1[i] = High[i]+A*Point; 
      }
   }
   return(0);
}
//+------------------------------------------------------------------+ 
 
Por favor, ayuda. Hay varias órdenes pendientes (10 por ejemplo). Una de ellas se abre y se dispara (no importa si es una orden de toma o de pérdida). En el siguiente tick, la siguiente orden pendiente debe ser establecida. Es difícil identificar la orden por un tick o un magik (el número de posiciones que pueden dispararse no está limitado). Por eso decidí que la forma más fácil de elegir un momento para poner una orden pendiente sería comparar el último y el penúltimo valor de la variable (lo que sea) de las posiciones que ya se han cerrado. Gracias.
 
dimon74:
Por favor, ayuda. Hay varias órdenes pendientes (10 por ejemplo). Uno de ellos se abre y se dispara (no importa si es toma o pérdida). En el siguiente tick, la siguiente orden pendiente debe ser establecida. Es difícil identificar la orden por un tick o un número mágico (el número de posiciones que pueden activarse no está limitado). Por eso decidí que la forma más fácil de elegir un momento para poner una orden pendiente sería comparar el último y el penúltimo valor de la variable (lo que sea) de las posiciones que ya se han cerrado. Gracias.

¿Qué cambiará la próxima vez?
Razón de la queja: