Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 49
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Gracias, ¿es esto correcto?
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.
Lea sobre la conversión
Lea sobre la conversión
Gracias, ¿la condición en sí es correcta?
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".
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 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_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.
Gracias, funciona.
Podrían decirme cómo obtener el nivel del indicador estocástico correctamente, desde el marco de tiempo alto.
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.
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
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])
{
}
}
}
//+------------------------------------------------------------------+
...