[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 222

 
Qué carajo. Al fin y al cabo es FLOOD o un foro temático. Deberían prohibirte para siempre por semejante basura.
 

La esencia de la pregunta es que necesito contar el número de barras en cada bloque continuo del diagrama de barras del indicador superior. Escribí un indicador de este tipo (el más bajo). En él, el valor de cada columna del diagrama de barras corresponde al número de barras en un bloque continuo del indicador superior, pero comienza a mostrar SOLO desde su instalación (la línea vertical roja).Quiero que se muestre en las barras anteriores (como cuando se instala AO o CCI), es decir, que la "imagen" sea similar a la del indicador del medio (es el mismo indicador, pero instalado incluso antes). Escucharé cualquier sugerencia con gratitud (preferiblemente con fragmentos de código).

#property indicator_separate_window
#property indicator_minimum -7
#property indicator_maximum 7
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 DarkOrange
#property indicator_width1  2
#property indicator_width2  2
#property indicator_level1 0.0
//--- buffers
double UpMapBuffer[];
double DnMapBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,UpMapBuffer);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,DnMapBuffer);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {   
    
    int i;

    for(i=1;i<Bars;i++)                                                  
     {
      double AO_Sig_Sig_1 = iCustom(NULL,0,"Signal-Signal",0,i);                           
      double AO_Sig_Sig_2 = iCustom(NULL,0,"Signal-Signal",0,i+1);
                  
      if((AO_Sig_Sig_1!=AO_Sig_Sig_2))
       {
        break;
        i=0;
       }                                                                
     }
         
    i=i*(AO_Sig_Sig_1); 
            
    if(i>0)            
     {
      UpMapBuffer[0]=i;
     }
    else
     {
      UpMapBuffer[0]=0;
     } 
         
    if(i<0)         
     {
      DnMapBuffer[0]=i;
     }
    else
     {
      DnMapBuffer[0]=0;
     }            
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

La esencia de la pregunta es que necesito contar el número de barras en cada bloque continuo del diagrama de barras del indicador superior. Escribí un indicador de este tipo (el más bajo). En él, el valor de cada columna del diagrama de barras corresponde al número de barras en un bloque continuo del indicador superior, pero comienza a mostrar SOLO desde su instalación (la línea vertical roja).Pero necesito que se muestre también en las barras anteriores (como cuando se instala el AO o el CCI), es decir, que la "imagen" sea similar a la del indicador del medio (es la misma que la del indicador inferior, pero se instaló incluso antes).

¿Algo así?

-

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Bisque
#property indicator_width1 2
#property indicator_width2 2
//===============================
double fx1[],fx2[];
double ao,ao1;
int ti,n,fs;
//******************************************************************
int init()
{
   SetIndexBuffer(0,fx1); SetIndexStyle(0,2);
   SetIndexBuffer(1,fx2); SetIndexStyle(1,2);
   
   SetLevelValue(0,0);
   SetLevelValue(1,10);
   SetLevelValue(2,20);
   SetLevelValue(3,-10);
   SetLevelValue(4,-20);   

   return(0);
}
//******************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1); 
   if (cbi==1) cbi--;
   if (cbi>1) {cbi=Bars-37; n=0; ti=Time[cbi];}  
   //-------------------------------------------------
   for(int i=cbi; i>=0; i--) 
   {
      if (ti!=Time[i]) {n++; ti=Time[i];}
      
      ao  = iAO(NULL,0,i); 
      ao1 = iAO(NULL,0,i+1); 
      
      if (ao>ao1) {if (fs==2) n=1; fs=1;} else
      if (ao<ao1) {if (fs==1) n=1; fs=2;}
      
      if (fs==1) {fx1[i]=n;  fx2[i]=0;} else
      if (fs==2) {fx2[i]=-n; fx1[i]=0;}
   } 
   
   return(0);
}
//******************************************************************
 
ANG3110:

¿Algo así?

-


¡Muchas gracias! Justo lo que necesitas.
 
Hola, podríais decirme por qué se abre una posición pero no se abre el stop ni el profit. Gracias de antemano.

int start()
{
double Sl =Low[1];
double Tpb =((High[1]-Open[1])/Tp)+Open;
double bar2b;
if (Open[2]<Close[2])bar2b=(High[2]-Open[2];
double bar1b;
if(Open[1]<Close[1])bar1b=(High[1]-Open[1]);
if(bar2b<bar1b)OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Sl,Tpb,",16384,0,Green);
 
xanzel:

¡¡Ayuda!!

indicador de media móvil simple

cómo aplicarlo en un EA a: Datos de indicadores anteriores

iMA(NULL,0,8,0,MODE_EMA,PRICE_PREVIOUS,0);


Spam. Suficiente con una rama separada
 
Vinin:

Es mejor escribir un montón de palabras que sólo ayudar a "este es un credo de vida superior supongo".
 
xanzel Esmejor escribir un montón de palabras que sólo ayudar a "esa es una expectativa devida más alta".
Existe una sanción por hacer spam: el baneo. Así que sólo estoy salvando un alma perdida. Si no te gusta, siempre te ayudaré con la prohibición.
 

¡Caballeros! ¡Buenas noches!

¿Podría decirme por qué el compilador piensa que en el código siguiente

la variable int Ticket es indefinida.

Genera un error

'Ticket' - variable no definida C:\NArchivos de programa\NAlpari NZ MT4(2)\N-expers.mq4 (18, 6)

int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 
 #include <OMASS.mq4> //объявление и инициализация массива
 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv[43],  value, WHOLE_ARRAY,  0, MODE_ASCEND) //функция ищет самое близкое к текущей цене значение
 if (MathAbs(NormalizeDouble(Bid - S,Digits))<=0.5*Point//если текущая цена отличается от значени возвращенного функцией не более чем 0,5 п.
 if (Bid==Price  )
 int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}





Pero la variable Ticket también está definida en la sentencia de asignación en el código siguiente y el código se compila correctamente

int start()

{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);    
 

  
      if (Bid==Price  )
     
  int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );



Спасибо.
 
solnce600:

¡Caballeros! ¡Buenas noches!

¿Podría decirme por qué el compilador piensa que en el código siguiente

la variable int Ticket es indefinida.

Genera un error

'Ticket' - variable no definida C:\NArchivos de programa\NAlpari NZ MT4(2)\N-expers.mq4 (18, 6)


Pero la variable Ticket también está definida en la sentencia de asignación en el código siguiente y el código se compila correctamente


Probablemente sólo faltan paréntesis en un lugar

if (MathAbs(NormalizeDouble(Bid - S,Digits))<=0.5*Point//если текущая цена отличается от значени возвращенного функцией не более чем 0,5 п.