[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 222

 

L'essence de la question est que j'ai besoin de compter le nombre de barres dans chaque bloc continu du diagramme à barres de l'indicateur supérieur. J'ai écrit un tel indicateur (le plus bas). Dans celui-ci, la valeur de chaque colonne du diagramme à barres correspond au nombre de barres dans un bloc continu de l'indicateur supérieur, mais il ne commence à s'afficher QUE depuis son installation (la ligne verticale rouge).Je veux qu'il s'affiche sur les barres précédentes (comme lorsqu'on installe AO ou CCI), c'est-à-dire que la "photo" soit similaire à l'indicateur du milieu (c'est le même indicateur, mais installé encore plus tôt). J'écouterai toute suggestion avec gratitude (de préférence avec des extraits de code).

#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:

L'essence de la question est que j'ai besoin de compter le nombre de barres dans chaque bloc continu du diagramme à barres de l'indicateur supérieur. J'ai écrit un tel indicateur (le plus bas). Dans celui-ci, la valeur de chaque colonne du diagramme à barres correspond au nombre de barres dans un bloc continu de l'indicateur supérieur, mais il ne commence à s'afficher QUE depuis son installation (la ligne verticale rouge).Mais j'ai besoin qu'il soit affiché sur les barres précédentes également (comme lorsque vous installez AO ou CCI), c'est-à-dire que l'"image" était similaire à l'indicateur du milieu (il est le même que l'indicateur du bas, mais il a été installé encore plus tôt).

Quelque chose comme ça ?

-

#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:

Quelque chose comme ça ?

-


Merci beaucoup ! Juste ce dont vous avez besoin !
 
Bonjour, pouvez-vous me dire pourquoi une position s'ouvre mais pas le stop ni le profit. Merci d'avance !

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:

A l'aide ! !!

indicateur de moyenne mobile simple

comment l'appliquer dans une EE aux : Données des indicateurs précédents

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


Spam. Une branche à part entière
 
Vinin:

Il est préférable d'écrire beaucoup de mots que de simplement aider "c'est un credo de vie plus élevé, je suppose".
 
xanzel Ilvaut mieux écrire beaucoup de mots que d'aider simplement "c'est une attente devie plus élevée".
Une seule sanction est prévue pour le spamming : le bannissement. Donc je sauve juste une âme perdue. Si tu n'aimes pas ça, je peux toujours t'aider pour l'interdiction.
 

Messieurs ! Bonsoir !

Pourriez-vous me dire pourquoi le compilateur pense que dans le code ci-dessous

la variable int Ticket est indéfinie.

Il génère une erreur

'Ticket' - variable non définie C:\Program Files\Alpari NZ MT4(2)\experts\hhh.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 );//открыть ордер       
}





Mais la variable Ticket est également définie dans l'instruction d'affectation dans le code ci-dessous et le code se compile avec succès.

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:

Messieurs ! Bonsoir !

Pourriez-vous me dire pourquoi le compilateur pense que dans le code ci-dessous

la variable int Ticket est indéfinie.

Il génère une erreur

'Ticket' - variable non définie C:\Program Files\Alpari NZ MT4(2)\experts\hhh.mq4 (18, 6)


Mais la variable Ticket est également définie dans l'instruction d'affectation dans le code ci-dessous et le code se compile avec succès.


Il manque probablement juste des parenthèses à un endroit.

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

Messieurs ! Bonsoir !

Pourriez-vous me dire pourquoi le compilateur pense que dans le code ci-dessous

la variable int Ticket est indéfinie.

Il génère une erreur

'Ticket' - variable non définie C:\Program Files\Alpari NZ MT4(2)\experts\hhh.mq4 (18, 6)

Mais la variable Ticket est également définie dans l'instruction d'affectation dans le code ci-dessous et le code se compile avec succès.

La variable int Ticket est locale et sera réinitialisée au prochain tick.