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

 
Taras Slobodyanik:

mi código escribe un Long-ChartID en una Variable Global temporal.

Visualmente, si se pulsa F3, se muestra cero (u otro valor diferente).
Esto sucede porque el terminal piensa que es un valor doble y trata de mostrarlo, pero nosotros le dimos largo, que es un formato de número completamente diferente.

Si este valor se lee como un doble normal, será un desastre.
Si lo lee mi código, volverá a ser largo (el mismo que guardamos).
Si hace clic manualmente en esta variable en la ventana del terminal, se restablecerá porque el terminal detectará el intercambio.

¿Cómo puedo utilizar el resultado en CHART_BRING_TO_TOP?
 
Artyom Trishkin:

Eliminar la inicialización del tiempo en OnInit()

Gracias.

¿Podría decirme dónde está el error? Cuando llamo a fractal regular, la flecha se pone por condición, donde debería estar, cuando llamo a iFreeNumFractals, la condición se cumple, debería haber una flecha, pero no la hay. Idealmente, la imagen debería ser la misma si comentamos las líneas con fractal regular y descomentamos iFreeNumFractals, pero...

#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1


//--- indicator buffers
double         BufferUP[];
double         BufferDN[];

int dist=3;
string nameInd;
datetime timf=0;
int numf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(0,233);
   SetIndexArrow(1,234);
  
   
//---
//---
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
//---
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         limit=rates_total-2;
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         
         if(fub(i))
           {
            BufferUP[i]=low[i]-dist*Point;
           }

         Comment("");
        }
      //--- return value of prev_calculated for next call

     }
   return(rates_total);
  }
//+
bool fub(int ib)//
  {
   bool bingob=false,flag_verh_f=0;
   int start_bar=0,numbarfrup=0,kfr_all=0;
   double high_old=0,prfra=0,f_up=0,f_dn=0,f=0;

     {
      for(int i_i=ib+3; i_i<Bars-2; i_i++)
        {
         if(high_old<High[i_i]) high_old=High[i_i];

        f_up=iFractals(Symbol(),0,MODE_UPPER,i_i);
        //f_up=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
         f_dn=iFractals(Symbol(),0,MODE_LOWER,i_i);
         //f_dn=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,1,i_i),Digits);
         if(f_up>0 && f_up>iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i)+10*Point)//Если фрактал найден выше МА+10 pips
           {
            numbarfrup=i_i;
           }
         if(f_dn>0 && f_dn<iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i))
           {
            start_bar=numbarfrup;break;
           }
        }
      for(int i_i=start_bar; i_i<Bars-2; i_i++)
        {
         f=iFractals(Symbol(),0,MODE_UPPER,i_i);
         //f=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
         if(f>0)kfr_all++;
         if(f>0 && Low[ib]<f+1*_Point && Open[ib]>f //Сравнение фрактала с текущ баром
            &&
            high_old-f>=100*Point//от максимума до фрактала 100 пп
            )
           {
            bingob=true;
            prfra=f;
            timf=Time[i_i];
            break;
           }
         if(kfr_all==3)break;
        }
     }
// numfb=iBarShift(NULL,PERIOD_CURRENT,timf,true);
   if(bingob)
     {flag_verh_f=true;}
   if(bingob==false)
      flag_verh_f=false;

   return(flag_verh_f);

  }
//



 
inter78:
¿Cómo puedo utilizar el resultado de CHART_BRING_TO_TOP?

al igual que antes usamos CHART_BRING_TO_TOP

 
Hola chicos, tengo en el mercado tres ordenes de compra a un precio el precio sube 10 pips y tenemos +10 pips por cada orden quiero bloquear tres ordenes de venta, ahora como hacer para que estas ordenes ya no se verifiquen en mkl4
 
Ghabo:

Gracias.

¿Puede decirme dónde está el error? La situación es la siguiente, cuando llamo al fractal habitual, la flecha es puesta por la condición, donde debería estar, cuando llamo a iFreeNumFractals, la condición se cumple, debería haber una flecha, pero no lo es. Las líneas de iFreeNumFractals están comentadas, la configuración está establecida como para el fractal habitual. En teoría, la imagen debería ser la misma si comento las líneas con el fractal habitual y comento iFreeNumFractals, pero...




¿Los indicadores iFreeNumFractals tienen la misma configuración que los Fractales estándar y los estándar en el gráfico?

Si es así, ¿sus señales son las mismas?

 
Aleksandr Egorov:
Hola chicos, tengo en el mercado tres órdenes de compra a un precio, el precio sube 10 pips, cada orden tiene +10 pips quiero bloquear tres órdenes de venta, ahora ¿cómo debo hacer que estas órdenes no se comprueban en mkl4 más?

Si quiere que se le entienda lo que quiere exactamente, utilice los signos de puntuación en su texto. Por lo demás, todo en un montón - vete a saber lo que quieres decir...

 
Taras Slobodyanik:

igual que antes se utilizaba CHART_BRING_TO_TOP

Desde que lo usé, nada funciona. Probablemente no será muy difícil para usted hacer lo mismo, sólo como un indicador y llevarlo hasta CHART_BRING_TO_TOP.
 
Artyom Trishkin:

Si quiere que se le entienda, utilice los signos de puntuación en su texto. Si no es así, lo has metido todo en el mismo saco: vete a saber a qué te refieres...

Tenemos tres órdenes de compra en el mercado a un precio, el precio sube 10 pips, tenemos +10 pips por cada orden, quiero bloquear tres órdenes de venta, ahora como hacer para que estas órdenes ya no se verifiquen en mcl4

 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos

Taras Slobodyanik, 2018.10.07 22:12

GlobalVariableCheck()- comprueba si esta variable ya existe, si no, entonces
GlobalVariableTemp()- crea una variable temporal, que se borrará por sí misma en el siguiente arranque.

Este punto está claro, la pregunta es ¿por qué si no hay GP creado sólo temporal y no permanente a través deGlobalVariableSet?

 
Artyom Trishkin:

¿Los indicadores iFreeNumFractals tienen la misma configuración que los Fractales estándar y los estándar en el gráfico?

Si los hay, ¿coinciden sus señales?

Los fractales coinciden completamente.

Las flechas de los fractales estándar en la captura de pantalla

iFreeNumFractals pone el primero y el último, los tres del medio están ausentes.

aqz

Razón de la queja: