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

 
Sergey Gritsay:
R ¿Qué objetos no son diferentes? y ¿qué significa cambiar el tipo de objeto, las propiedades se colapsan?

Esto significa que si reemplazo el objeto línea horizontal por una línea de tendencia o una línea vertical en la vela actual en mi código actual, un objeto seguirá funcionando y será rojo independientemente de los parámetros del otro objeto.

El propósito de todas estas manipulaciones es combinar el indicador y el EA, ahora estoy tratando de encontrar el error en sí.

Es decir, crea movimientos y borra con total normalidad, pero necesito el azul cuando compro, no el rojo cuando vendo de cualquier manera.
 

Saludos. ¿Puedes decirme cuál es la entrada del paréntesis () después de "double bb" y cuál es la entrada del paréntesis {} para"double bb(int buff,int shift)" en este caso?

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


También aquí. Comprar y Vender tienen el tipo bool. ¿Cómo puedo averiguar qué se les asigna cuando se utiliza "< , &&, >"? ?

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:

Saludos. ¿Puedes decirme cuál es la entrada del paréntesis () después de "double bb" y cuál es la entrada del paréntesis {} para"double bb(int buff,int shift)" en este caso?

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


También aquí. Comprar y Vender tienen el tipo bool. ¿Cómo puedo averiguar qué se les asigna cuando se utiliza "< , &&, >"? ?

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. es una función. Entre paréntesis - parámetros, que se pasan a la función cuando se llama. En este caso - número de búfer del indicador y desplazamiento de la barra, de la que obtenemos los valores del indicador.

2) Las variables booleanas se asignan con el resultado de la expresión lógica completa, siguiendo el signo de asignación (=). Si todas las condiciones son verdaderas, la variable se asigna como verdadera, de lo contrario - falsa
 
Artyom Trishkin gracias
 
trader781:

Esto significa que si reemplazo el objeto línea horizontal por una línea de tendencia o una línea vertical en la vela actual en mi código actual, un objeto seguirá funcionando y será rojo independientemente de los parámetros del otro objeto.

El propósito de todas estas manipulaciones es combinar el indicador y el EA, ahora estoy tratando de encontrar el error en sí debido a lo que está causando.

Es decir, se mueve y borra con total normalidad, pero necesito el azul cuando compro, no el rojo cuando vendo de cualquier manera.
significa que has vuelto a configurar los parámetros del objeto gráfico de forma incorrecta
 
Sergey Gritsay:
Así que estás configurando mal los parámetros del objeto gráfico de nuevo.

lo más probable.

Parece de manual, pero el resultado no es el mismo, por eso he lanzado el código aquí.

 
¡Hola!
No puedo entender por qué hay una Variable Global de Terminal de Cliente en la terminal si no la he creado(GlobalVariablesTotal() muestra "1"). ¿Quizás haya algún preajuste por parte del terminal? Entonces por qué cuando quiero saber su nombre y llamo a la función GlobalVariableName(0) o GlobalVariableName(1), no se muestran los nombres. Por favor, dígame cuál puede ser el problema.
 

Saludos. Necesito obtener los datos de la línea roja del indicador que no se superpone al gráfico de precios, sino que se muestra por separado debajo de él. Estoy intentando hacerlo como con los indicadores que se superponen al gráfico, pero algo falla. ¿En qué me equivoco?

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

Este es el indicador propiamente dicho

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

Saludos. Necesito obtener los datos de la línea roja del indicador que no se superpone al gráfico de precios, sino que se muestra por separado debajo de él. Estoy intentando hacerlo como con los indicadores que se superponen al gráfico, pero algo falla. ¿En qué me equivoco?

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

Este es el indicador propiamente dicho

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

Se abre la ventana de parámetros de entrada y se enumeran eniCustom por orden.

Te faltan los tres primeros valores de la línea:

 
Vitaly Muzichenk, gracias.
Razón de la queja: