carlosojbe:
Buenos dias. Estoy aprendiendo poco a poco a programar en Metatrader 4, y las dudas que me van surjiendo, voy solucionandoles poco a poco, con muchas horas frente a la pantalla. Pero tengo una duda que no consigo solucionar. he realizado un indicador técnico MUY básico, siendo el siguiente:
1.- Usa el editor de código cuando pegues un código aquí en el foro. (SRC)
2.- Debería ser algo así;
if (indicador=indicator_level1) UpArrowBuffer[j]=High[j] + 100*Point; if (indicador=indicator_level2) DownArrowBuffer[j]=Low[j] - 100*Point;
Es decir, que en vez de mayor (>) o menor (<)...que lo haga simplemente cuando sea igual (=). Debería funcionar.
Si es que hay veces que nos perdemos en lo mas tontuno...jeje
Saludos!
Muchas Gracias Miguel Angel. Solucionado. Como bien dices, lo más tonto suele dar los mayores quebraderos de cabeza. Un saludo.
tambien nos gustaria ver el robot ya modificado!!! un saludo
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
Buenos dias. Estoy aprendiendo poco a poco a programar en Metatrader 4, y las dudas que me van surjiendo, voy solucionandoles poco a poco, con muchas horas frente a la pantalla. Pero tengo una duda que no consigo solucionar. he realizado un indicador técnico MUY básico, siendo el siguiente:
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_level1 1.6634
#property indicator_level2 1.6517
//--- plot UpArrow
#property indicator_label1 "UpArrow"
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrViolet
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot DownArrow
#property indicator_label2 "DownArrow"
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrOrange
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- input parameters
input int BarssToProcess=1000;
//--- indicator buffers
double UpArrowBuffer[];
double DownArrowBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,UpArrowBuffer);
SetIndexBuffer(1,DownArrowBuffer);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
SetIndexArrow(0,241);
SetIndexArrow(1,242);
SetIndexStyle(0,DRAW_ARROW,STYLE_DASHDOT,3,clrViolet);
SetIndexStyle(1,DRAW_ARROW,STYLE_DASHDOT,3,clrOrange);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit=rates_total-prev_calculated;
if (limit>BarssToProcess)limit=BarssToProcess;
for (int j=0; j<limit; j++)
{
double indicador=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,j);
if (indicador > indicator_level1) UpArrowBuffer[j]=High[j] + 100*Point;
if (indicador < indicator_level2) DownArrowBuffer[j]=Low[j] - 100*Point;
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
No tiene mayor complicación, pero cuando compilo y lo ejecuto en el terminal, lógicamente me llena la pantalla de flechas hacia arriba y hacia abajo, ya que las condiciones se cumplen en todas ellas (ver foto). La pregunta es: ¿Alguien podría decirme cómo realizar un filtro para que solo aparezca una flecha cuando la linea (indicador) cruza hacia arriba la linea horizontal morada (indicator_level1) o cuando la linea (indicador) cruza hacia abajo la linea horizontal morada (indicator_level2) y no todas las que salen?. Muchas gracias........