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

 
mila.com:

Gracias, ¿es esto correcto?

label =ObjectGetInteger(0,nm,OBJPROP_COLOR,0);

if(label==Lime) BUY_ = true;

No, así se obtienen los datos de color como tipo int.

Intenta ver lo que está impreso en el comentario.

Comment( ColorToString((color)ObjectGetInteger(0,"NaneOBJ",OBJPROP_COLOR,0), true) );

Lea sobre la conversión

 
Vitaly Muzichenko:

Lea sobre la conversión

Gracias, ¿la condición en sí es correcta?
 
mila.com:
Gracias, ¿la condición en sí es correcta?
string label = ColorToString((color)ObjectGetInteger(0,"MP140269",OBJPROP_COLOR,0), true);
if(label==Lime) BUY_ = true;

if(label==Red) BUY_ = false;
Probablemente no. Si los datos son de tipocadena, hay que encerrarlos entre comillas y escribir una coincidencia de color completa carácter por carácter: "clrLime".
 
Vitaly Muzichenko:
Probablemente no. Si los datos son de tipocadena, hay que encerrarlos entre comillas y escribir una coincidencia de color completa carácter por carácter: "clrLime".
Gracias, ha funcionado )
 
Vitaly Muzichenko:
Probablemente no. Si los datos son de tipocadena, debe encerrarlos entre comillas, y escribir la correspondencia completa de color carácter por carácter: "clrLime".
No, no tienes que encerrarlo entre comillas - son constantes. Es decir, debería ser así: if(label==clrLime) {}
 
Artyom Trishkin:
No, no es necesario que esté entre comillas - son constantes. Es decir, debería ser así: if(label==clrLime) {}

Gracias, funciona.

Podrían decirme cómo obtener correctamente el nivel del indicador estocástico del marco temporal alto.

      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
      double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
      double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
      
      if(sto2_0>55)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      

Cuando el indicador se fija en un marco temporal alto, todo es correcto, la flecha se fija cuando la línea del indicador está por encima de 55.

Cuando se cambia a un gráfico más bajo, el caos.

 
mila.com:

Gracias, funciona.

Podrían decirme cómo obtener el nivel del indicador estocástico correctamente, desde el marco de tiempo alto.

      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
      double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
      double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
      
      if(sto2_0>55)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      

Cuando el indicador se fija en un marco temporal alto, todo es correcto, la flecha se fija cuando la línea del indicador está por encima de 55.

Cuando se cambia a un gráfico más bajo, el caos.

Si se trata del ciclo del indicador, entonces para saber qué barra del marco temporal alto corresponde a la barra, indicada por el índice del ciclo en el marco temporal bajo, es necesario obtener el tiempo de la barra i. A continuación, este tiempo se utiliza para identificar la barra de la trama alta que corresponde a este tiempo. Por ejemplo: un compás de H4 corresponde a cuatro compases de H1. Por lo tanto, cuatro valores del índice de ciclo i de H1 señalarán la misma barra en H4.

Por tus variables (sus nombres) no puedo entender de qué barra estás obteniendo los valores. Así que es difícil decir algo más que la teoría.

 
Artyom Trishkin:

Si se trata del ciclo del indicador, para saber qué barra del marco temporal superior corresponde a la barra, indicada por el índice del ciclo en el tf inferior, es necesario obtener la hora de la barra i. A continuación, este tiempo se utiliza para identificar la barra de la trama alta que corresponde a este tiempo. Por ejemplo: un compás de H4 corresponde a cuatro compases de H1. En consecuencia, cuatro valores del índice de ciclo i del marco temporal H1 señalarán la misma barra en el marco temporal H4.

De tus variables (sus nombres) no puedo entender de qué barra obtienes los valores. Por lo tanto, es difícil decir algo más que la teoría.

El indicador se pone en M1.

La condición principal para la flecha alcista es la línea indicadora en M5 por encima del nivel 55.

Esta condición no se cumple, aunque la línea esté por debajo del nivel 55 en M5, la flecha sigue colocada.

 

cómo escribir la condición "si el máximo de 1 barra es mayor que el mínimo de 3..." en el robot.

El disparador no debe ser "OnTick()"

pero cada vez que la barra 0 se convierte en 1

 
trader781:

cómo escribir la condición "si el máximo de 1 barra es mayor que el mínimo de 3..." en el robot.

El disparador no debe ser "OnTick()"

pero cada vez que la barra 0 se convierte en 1

Puedes hacer esto

//+------------------------------------------------------------------+
//|                                                       test03.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CNevBar
  {
private:
   datetime          curbar;
   datetime          lastbar;
public:
                     CNevBar();
                    ~CNevBar();
   bool              new_bar(string symbol,ENUM_TIMEFRAMES period);
  };
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
  {

  }
//+------------------------------------------------------------------+
void CNevBar::~CNevBar(void)
  {

  }
//+------------------------------------------------------------------+
bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
  {
   curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
   if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return(true);
     }
   return(false);
  }

CNevBar newbar;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar.new_bar(_Symbol,PERIOD_CURRENT))
     {
      if(High[1]>Low[3])
        {

        }
     }

  }
//+------------------------------------------------------------------+

...

Razón de la queja: