Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 114

 
Sergey Gritsay:
R Quali oggetti non sono diversi? e cosa significa cambiare il tipo di oggetto, le proprietà crolleranno?

Questo significa che se sostituisco l'oggetto linea orizzontale con una linea di tendenza o una linea verticale sulla candela corrente nel mio codice attuale, un oggetto funzionerà ancora e sarà rosso indipendentemente dai parametri dell'altro oggetto.

Lo scopo di tutte queste manipolazioni è di combinare l'indicatore e l'EA, ora sto cercando di trovare l'errore stesso.

cioè crea movimenti e cancella abbastanza normalmente, ma ho bisogno del blu quando compro, non del rosso quando vendo comunque.
 

Saluti. Puoi dirmi qual è la voce della parentesi () dopo "double bb" e qual è la voce della parentesi {} per"double bb(int buff,int shift)" in questo caso?

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


Anche qui. Buy e Sell hanno il tipo bool. Come posso capire cosa viene assegnato loro quando si usa "< , &&, >"? ?

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  
 
Andrey Sokolov:

Saluti. Puoi dirmi qual è la voce della parentesi () dopo "double bb" e qual è la voce della parentesi {} per"double bb(int buff,int shift)" in questo caso?

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


Anche qui. Buy e Sell hanno il tipo bool. Come posso capire cosa viene assegnato loro quando si usa "< , &&, >"? ?

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  


1. è una funzione. Tra parentesi - parametri, che vengono passati alla funzione quando viene chiamata. In questo caso - numero di buffer dell'indicatore e offset della barra, da cui otteniamo i valori dell'indicatore.

2) Le variabili booleane sono assegnate con il risultato dell'intera espressione logica, seguendo il segno di assegnazione (=). Se tutte le condizioni sono vere, alla variabile viene assegnato true, altrimenti - false
 
 
trader781:

Questo significa che se sostituisco l'oggetto linea orizzontale con una linea di tendenza o una linea verticale sulla candela corrente nel mio codice attuale, un oggetto funzionerà ancora e sarà rosso indipendentemente dai parametri dell'altro oggetto.

Lo scopo di tutte queste manipolazioni è quello di combinare l'indicatore e l'EA, ora sto cercando di trovare l'errore stesso a causa di ciò che accade.

cioè si muove e cancella abbastanza normalmente, ma ho bisogno del blu quando compro, non del rosso quando vendo in qualsiasi modo.
significa che hai impostato nuovamente i parametri dell'oggetto grafico in modo errato
 
Sergey Gritsay:
Quindi stai di nuovo impostando male i parametri dell'oggetto grafico.

molto probabilmente.

Sembra seguire i tutorial, ma il risultato non è lo stesso, ecco perché ho buttato qui il codice.

 
Ciao!
Non riesco a capire perché c'è una variabile globale Client Terminal nel terminale se non l'ho creata io(GlobalVariablesTotal() mostra "1"). Forse c'è qualche preimpostazione del terminale? Allora perché quando voglio sapere il suo nome e chiamo la funzione GlobalVariableName(0) o GlobalVariableName(1), non viene mostrato alcun nome. Per favore, ditemi quale potrebbe essere il problema?
 

Saluti. Ho bisogno di ottenere i dati sulla linea rossa dell'indicatore che non è sovrapposta al grafico del prezzo ma è visualizzata separatamente sotto di esso. Sto cercando di fare come con gli indicatori che si sovrappongono al grafico, ma qualcosa non va. Dove mi sbaglio?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

Ecco l'indicatore stesso

#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"

//ну если проще запулить в одно окно три мульти с настройками
//1 EUR-USD
//2 EURGBP
//3 EURJPY
//если все три в состоянии перекупленности  значит Бай и наоборот

#property indicator_separate_window
#property  indicator_buffers 6
#property   indicator_color1  Green
#property   indicator_color2  Red
#property   indicator_color3  Yellow
#property indicator_level1 0
#property indicator_level2 5
#property indicator_level3 -5

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

double       buf[];
double    MA_buf[];
double      buf2[];
double   MA_buf2[];
double      buf3[];
double   MA_buf3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(0, buf);
  
   SetIndexStyle(4,DRAW_NONE);
   SetIndexBuffer(4,MA_buf);
  
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, buf2);
  
   SetIndexStyle(3,DRAW_NONE);
   SetIndexBuffer(3,MA_buf2);  
    
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, buf3);
  
   SetIndexStyle(5,DRAW_NONE);
   SetIndexBuffer(5,MA_buf3);
  
   IndicatorShortName("ytg_Def_RSI_3_Symbol");
   Comment("yuriytokman@gmail.com");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   double RSI_1, RSI_2, RSI_12, RSI_22, RSI_13, RSI_23;
  
   int limit;
   int counted_bars=IndicatorCounted();
  
   if(counted_bars<0) return(-1);

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=limit; i>=0; i--)
   {
     RSI_1 = iRSI(Symbol_1,0,RSI_1_Period,applied_price,i);
     RSI_2 = iRSI(Symbol_1,0,RSI_2_Period,applied_price,i);

     MA_buf[i] = (RSI_1-RSI_2);
    
    
     RSI_12 = iRSI(Symbol_2,0,RSI_1_Period,applied_price,i);
     RSI_22 = iRSI(Symbol_2,0,RSI_2_Period,applied_price,i);

     MA_buf2[i] = (RSI_12-RSI_22);
    
    
     RSI_13 = iRSI(Symbol_3,0,RSI_1_Period,applied_price,i);
     RSI_23 = iRSI(Symbol_3,0,RSI_2_Period,applied_price,i);

     MA_buf3[i] = (RSI_13-RSI_23);          
   }
   for(i=limit; i>=0; i--)
   {
     buf[i] = iMAOnArray(MA_buf,0,ma_period,0,ma_method,i);
    
     buf2[i] = iMAOnArray(MA_buf2,0,ma_period,0,ma_method,i);    
    
     buf3[i] = iMAOnArray(MA_buf3,0,ma_period,0,ma_method,i);    
   }  
  
  
//----
   return(0);
  }
 
Andrey Sokolov:

Saluti. Ho bisogno di ottenere i dati sulla linea rossa dell'indicatore che non è sovrapposta al grafico del prezzo ma è visualizzata separatamente sotto di esso. Sto cercando di fare come con gli indicatori che si sovrappongono al grafico, ma qualcosa non va. Dove mi sbaglio?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

Ecco l'indicatore stesso

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

Si apre la finestra dei parametri di input e li si elenca iniCustom in ordine.

Ti mancano i valori delle prime tre linee:

 
Vitaly Muzichenk, grazie.
Motivazione: