¿Sabe cómo construir un indicador para el mercado?
Tengo un archivo con extensión .mq5 y algunos archivos de inclusión con extensión .mqh.
Por lo que tengo entendido, no se puede adjuntar el archivo .mqh al archivo .mqh a través de los recursos, ¿debo convertirlo todo en un solo archivo manualmente?
¿Y si hay una nueva versión :? Es una locura +)))
Gracias.
Usted envía el archivo compilado (.ex5) al Mercado. Este archivo ya contendrá todos sus archivos de inclusión.
Hola, he convertido el indicador de Metatrader 4 a Metatrader 5, pero ahora muestra las flechas en lugares equivocados como en Metatrader 4 en el marco de tiempo de un minuto. ¿Me he equivocado en algo o es por las diferentes cotizaciones en el gráfico de minutos de las versiones 4 y 5 del terminal de un broker?
#property strict#property indicator_chart_window#property indicator_buffers2#property indicator_plots2#property indicator_color1clrBlue#property indicator_color2clrRed#property indicator_width11#property indicator_width21//+------------------------------------------------------------------+double SignalBufferRed[];
double SignalBufferBlue[];
datetime TimeAlert=0;
ENUM_TIMEFRAMES tf0,tf1,tf2,tf3,tf4,tf5; // Было интint S=0;
//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,SignalBufferBlue);
SetIndexBuffer(1,SignalBufferRed);
//--- задать рисование линии PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW);
//--- задание стиля для рисования линии PlotIndexSetInteger(0,PLOT_ARROW,233);
//--- задать рисование линии PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_ARROW);
//--- задание стиля для рисования линии PlotIndexSetInteger(1,PLOT_ARROW,234);
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,5);
PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-5);
//--- установим в качестве пустого значения 0 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- установим в качестве пустого значения 0 PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
tf0=Period();
tf1=next_period(tf0+1);
tf2=next_period(tf1+1);
tf3=next_period(tf2+1);
tf4=next_period(tf3+1);
tf5=next_period(tf4+1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,// обработано баров на предыдущем вызове constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
limit=rates_total-prev_calculated-1;
if(rates_total<1) return(0);
double d=(high[1]-low[1]+high[2]-low[2])/2;
for(i=limit; i>=0; i--)
{
if(S<1 && NormalizeDouble(open[i]-close[i],_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))-iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))-iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))-iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))-iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)),_Digits)<0 &&
NormalizeDouble(iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))-iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)),_Digits)<0)
{
SignalBufferBlue[i]=low[i]-d;
...
S=1;
}
if(S>-1 && NormalizeDouble(open[i]>close[i],_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))-iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))-iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))-iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))-iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)),_Digits)>0 &&
NormalizeDouble(iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))-iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)),_Digits)>0)
{
SignalBufferRed[i]=high[i]+d;
...
S=-1;
}
}
return(rates_total);
}
//+------------------------------------------------------------------+ENUM_TIMEFRAMES next_period(int per) // Было инт
{
if(per > PERIOD_W1) return(PERIOD_MN1); // Былы цифры вместо период_if(per > PERIOD_D1) return(PERIOD_W1); // Былы цифры вместо период_if(per > PERIOD_H4) return(PERIOD_D1); // Былы цифры вместо период_if(per > PERIOD_H1) return(PERIOD_H4); // Былы цифры вместо период_if(per > PERIOD_M30) return(PERIOD_H1); // Былы цифры вместо период_if(per > PERIOD_M15) return(PERIOD_M30); // Былы цифры вместо период_if(per > PERIOD_M5) return(PERIOD_M15); // Былы цифры вместо период_if(per > PERIOD_M1) return(PERIOD_M5); // Былы цифры вместо период_if(per == PERIOD_M1) return(PERIOD_M1); // Былы цифры вместо период_return(Period());
}
//+------------------------------------------------------------------+
Yevgen Butov: Hola! He convertido el indicador de metatrader 4 a metatrader 5, pero ahora muestra las flechas en los lugares equivocados como en metatrader 4 en un período de minutos. ¿Me he equivocado en algo o es por las diferentes cotizaciones en el gráfico de minutos de las versiones 4 y 5 del terminal de un broker?
Haga una simple prueba en el indicador MQL5 y MQL4 - imprima el tiempo de barra #0:
¡Buenas tardes!
¿Sabe cómo construir un indicador para el mercado?
Tengo un archivo con extensión .mq5 y algunos archivos de inclusión con extensión .mqh.
Por lo que tengo entendido, no se puede adjuntar el archivo .mqh al archivo .mqh a través de los recursos, ¿debo convertirlo todo en un solo archivo manualmente?
¿Y si hay una nueva versión :? Es una locura +)))
Gracias.
Usted envía el archivo compilado (.ex5) al Mercado. Este archivo ya contendrá todos sus archivos de inclusión.
Una contrapregunta: "¿Por qué hay que asignar explícitamente un símbolo aquí?
Si utiliza esta función, debe asignar un símbolo a m_symbol en OnInit:
En este caso, si ejecuta el EA en el símbolo "EURUSD.m", "EURUSD.m" se establecerá automáticamente para m_symbol.
Lo que pasa es que el Asesor Experto se cierne sobre un símbolo diferente. Y necesito actualizar las cotizaciones de EURUSD.m
Encontré esta solución pero creo que es incorrecta
Esa es la cuestión, el EA se cierne sobre un símbolo diferente. Y necesito actualizar las cotizaciones de EURUSD.m
He encontrado esta solución pero no creo que sea la correcta
¡¡¡Amigos, por favor, aconsejen!!!
¿Cómo puede la función TimeCurrent() pasar los valores de horas y minutos a las variables para que puedan trabajar con estos valores?
O por ejemplo quiero pasar horas y minutos con la cadena (12:15) y pasar 12 y 15 a las variables. ¿Cómo hacerlo?¡¡¡Amigos, por favor, aconsejen!!!
¿Cómo puede la función TimeCurrent() pasar los valores de horas y minutos a las variables para poder trabajar con estos valores?
O por ejemplo quiero pasar la hora y los minutos con la cadena (12:15) y pasar 12 y 15 a las variables. ¿Cómo hacerlo?TimeToStruct
TimeToStruct
Hola! He convertido el indicador de metatrader 4 a metatrader 5, pero ahora muestra las flechas en los lugares equivocados como en metatrader 4 en un período de minutos. ¿Me he equivocado en algo o es por las diferentes cotizaciones en el gráfico de minutos de las versiones 4 y 5 del terminal de un broker?
Haga una simple prueba en el indicador MQL5 y MQL4 - imprima el tiempo de barra #0:
Esto ayudará a entender qué es lo que...
Haga una simple prueba en el indicador MQL5 y MQL4 - imprima el tiempo de barra #0:
Esto ayudará a entender qué es lo que...
Añadido este texto a OnCalculate, el tiempo de la barra cambia cada minuto ahora, pero ahora no hay flechas en absoluto. ¿Cuál puede ser el error?
Añadido este texto a OnCalculate, ahora la hora de la barra cambia cada minuto, pero ahora no hay flechas. ¿Cuál puede ser el error?
No lo has hecho bien. Compara los valores impresos. Compara el tiempo de barra #0 y el tiempo de barra #rates_total-1. Compara tanto allí como allí...