[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 222

 
Ma che cazzo! Dopotutto è FLOOD o un forum a tema. Dovresti essere bandito per sempre per queste sciocchezze.
 

L'essenza della domanda è che ho bisogno di contare il numero di barre in ogni blocco continuo del diagramma a barre dell'indicatore superiore. Ho scritto un tale indicatore (il più basso). In esso, il valore di ogni colonna del grafico a barre corrisponde al numero di barre in un blocco continuo dell'indicatore superiore, ma inizia a visualizzare solo dalla sua installazione (la linea verticale rossa).Voglio che venga visualizzato sulle barre precedenti (come quando si installa AO o CCI), cioè il "quadro" era simile all'indicatore centrale (è lo stesso indicatore, ma installato ancora prima). Ascolterò qualsiasi suggerimento con gratitudine (preferibilmente con snippet di codice).

#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'essenza della domanda è che ho bisogno di contare il numero di barre in ogni blocco continuo del diagramma a barre dell'indicatore superiore. Ho scritto un tale indicatore (il più basso). In esso, il valore di ogni colonna del grafico a barre corrisponde al numero di barre in un blocco continuo dell'indicatore superiore, ma inizia a visualizzare solo dalla sua installazione (la linea verticale rossa).Ma ho bisogno che venga visualizzato anche su barre precedenti (come quando si installa AO o CCI), cioè il "quadro" era simile all'indicatore centrale (è lo stesso dell'indicatore inferiore, ma è stato installato anche prima).

Qualcosa del genere?

-

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

Qualcosa del genere?

-


Grazie mille! Proprio quello che ti serve!
 
Ciao, potresti dirmi perché una posizione si apre ma lo stop e il profitto no. Grazie in anticipo!

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:

aiuto!!!

indicatore di media mobile semplice

come applicarlo in un EA a: dati di indicatori precedenti

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


Spam. Abbastanza di un ramo separato
 
Vinin:

È meglio scrivere molte parole piuttosto che aiutare solo "questo è un credo di vita superiore, credo".
 
xanzelÈ meglio scrivere un sacco di parole che aiutare solo "questa è un'aspettativa divita più alta".
C'è una sola pena per lo spamming: il banning. Quindi sto solo salvando un'anima persa. Se non ti piace, ti aiuterò sempre con il divieto.
 

Signori! Buona sera!

Potresti dirmi perché il compilatore pensa che nel codice seguente

la variabile int Ticket è indefinita.

Genera un errore

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





Ma la variabile Ticket è anche definita nell'istruzione di assegnazione nel codice sottostante e il codice si compila con successo

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:

Signori! Buona sera!

Potresti dirmi perché il compilatore pensa che nel codice seguente

la variabile int Ticket è indefinita.

Genera un errore

'Ticket' - variabile non definita C:\Program Files\Alpari NZ MT4(2)\experts\hhhh.mq4 (18, 6)


Ma la variabile Ticket è anche definita nell'istruzione di assegnazione nel codice sottostante e il codice si compila con successo


Probabilmente mancano solo le parentesi in un punto

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