Estimados todos.
Estoy tratando de construir base indicador personalizado en iBand.
Después de mucho buscar me decido a publicar aquí puede ser que alguien me puede ayudar.
Aquí está el indicador completo.
Problema 1 es:
Se puede ver en la imagen adjunta, no se porque tengo verde bajo el grafico.
Estoy tratando de construir base indicador personalizado en iBand.
Después de mucho buscar me decido a publicar aquí puede ser que alguien me puede ayudar.
Aquí está el indicador completo.
/Esto es MQL5\Indicators\Anhnt\iBand_Display.mq5 #property indicator_chart_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot Middle #property indicator_label1 "Middle" #property indicator_type1 DRAW_LINE //--- parcela Superior #property indicator_label2 "Upper" #property indicator_type2 DRAW_LINE //--- parcela Inferior #property indicator_label3 "Lower" #property indicator_type3 DRAW_LINE //================================================== // Parámetros de entrada //================================================== input int InpBBPeriod = 14; input ENUM_APPLIED_PRICE inp_Applied_Price = PRICE_MEDIAN; input double InpBBDeviation = 2.0; input int InpBBShift = 0; input color InpMiddleColor = clrYellow; input color InpUpperColor = clrYellow; input color InpLowerColor = clrYellow; input int InpMiddleWidth = 2; input int InpUpperWidth = 2; input int InpLowerWidth = 2; input bool inp_BB_Show_Upper = true; input bool inp_BB_Show_Middle = true; input bool inp_BB_Show_Lower = true; input ENUM_LINE_STYLE InpMiddleStyle = STYLE_DOT; input ENUM_LINE_STYLE InpUpperStyle = STYLE_DOT; input ENUM_LINE_STYLE InpLowerStyle = STYLE_DOT; //================================================== #include <Anhnt/Configuration/NamingConfiguration.mqh> //================================================== // Búferes indicadores //================================================== double MiddleBuffer[]; double UpperBuffer[]; double LowerBuffer[]; //================================================== // Variables globales //================================================== int g_bb_handle = INVALID_HANDLE; //https://www.mql5.com/es/docs/indicators/ibands //--- mantendremos el número de valores en el indicador de Bandas de Bollinger //+------------------------------------------------------------------+ int OnInit() { //================================================== // Establecer buffers //================================================== SetIndexBuffer(BASE_LINE, MiddleBuffer, INDICATOR_DATA); SetIndexBuffer(UPPER_BAND, UpperBuffer, INDICATOR_DATA); SetIndexBuffer(LOWER_BAND, LowerBuffer, INDICATOR_DATA); ArraySetAsSeries(MiddleBuffer, true); ArraySetAsSeries(UpperBuffer, true); ArraySetAsSeries(LowerBuffer, true); //================================================== // Aplicar los valores INPUT a los gráficos (modo seguro en tiempo de ejecución) //================================================== PlotIndexSetInteger(BASE_LINE, PLOT_LINE_COLOR, InpMiddleColor); PlotIndexSetInteger(UPPER_BAND, PLOT_LINE_COLOR, InpUpperColor); PlotIndexSetInteger(LOWER_BAND, PLOT_LINE_COLOR, InpLowerColor); PlotIndexSetInteger(BASE_LINE, PLOT_LINE_STYLE, InpMiddleStyle); PlotIndexSetInteger(UPPER_BAND, PLOT_LINE_STYLE, InpUpperStyle); PlotIndexSetInteger(LOWER_BAND, PLOT_LINE_STYLE, InpLowerStyle); PlotIndexSetInteger(BASE_LINE, PLOT_LINE_WIDTH, InpMiddleWidth); PlotIndexSetInteger(UPPER_BAND, PLOT_LINE_WIDTH, InpUpperWidth); PlotIndexSetInteger(LOWER_BAND, PLOT_LINE_WIDTH, InpLowerWidth); PlotIndexSetInteger( BASE_LINE, PLOT_DRAW_TYPE, inp_BB_Show_Middle ? DRAW_LINE : DRAW_NONE ); PlotIndexSetInteger( UPPER_BAND, PLOT_DRAW_TYPE, inp_BB_Show_Upper ? DRAW_LINE : DRAW_NONE ); PlotIndexSetInteger( LOWER_BAND, PLOT_DRAW_TYPE, inp_BB_Show_Lower ? DRAW_LINE : DRAW_NONE ); string name = SMT_PREFIX + SMT_BB_NAME + "(" + (string)InpBBPeriod + "," + DoubleToString(InpBBDeviation, 1) + ")"; IndicatorSetString(INDICATOR_SHORTNAME, name); //================================================== // Crear asa iBands //================================================== g_bb_handle = iBands( _Symbol, _Period, InpBBPeriod, InpBBShift, InpBBDeviation, inp_Applied_Price ); if(g_bb_handle == INVALID_HANDLE) { Print("iBand_Display INIT FAILED. Unable to create iBands handle. GetLastError = ", GetLastError()); return INIT_FAILED; } Print("iBand_Display INIT SUCCESS"); return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ 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[] ) { //https://www.mql5.com/es/docs/indicators/ibands&nbsp; //--- espera hasta que iBands esté listo int calculated = BarsCalculated(g_bb_handle); if(calculated <= InpBBPeriod) return 0; // Print("DEBUG from OnCalculate After Waiting BarsCalculated | Symbol=", _Symbol, // " | Period=", _Period, // " | BarsCalculated(iBands)=", calculated); //--- Este bloque se ejecuta cuando el indicador se adjunta inicialmente a un gráfico if(prev_calculated == 0) { ArrayInitialize(MiddleBuffer, EMPTY_VALUE); ArrayInitialize(UpperBuffer, EMPTY_VALUE); ArrayInitialize(LowerBuffer, EMPTY_VALUE); int to_copy = MathMin(calculated, rates_total); // Copiar todos los datos disponibles a la vez CopyBuffer(g_bb_handle, BASE_LINE, 0, to_copy, MiddleBuffer); CopyBuffer(g_bb_handle, UPPER_BAND, 0, to_copy, UpperBuffer); CopyBuffer(g_bb_handle, LOWER_BAND, 0, to_copy, LowerBuffer); // Print("DEBUG from OnCalculate First Initial | Symbol=", _Symbol, // " | Period=", _Period, // " | BarsCalculated(iBands)=", calculated); return rates_total; } //--- Este bloque se ejecuta en cada nueva apertura de barra if(prev_calculated != rates_total && prev_calculated != 0) { //================================================== // PRÓXIMAS EJECUCIONES: // Sólo actualiza la barra más nueva (índice 0). // NO desplace arrays manualmente (las series se encargan de ello). //================================================== double tmp[1]; if(CopyBuffer(g_bb_handle, BASE_LINE, 0, 1, tmp) > 0) MiddleBuffer[0] = tmp[0]; if(CopyBuffer(g_bb_handle, UPPER_BAND, 0, 1, tmp) > 0) UpperBuffer[0] = tmp[0]; if(CopyBuffer(g_bb_handle, LOWER_BAND, 0, 1, tmp) > 0) LowerBuffer[0] = tmp[0]; return rates_total; } return rates_total; } //+------------------------------------------------------------------+ bool FillArraysFromBuffers( double &base_values [], // MiddleBuffer double &upper_values [], // Búfer superior double &lower_values [], // LowerBuffer int shift, // shift = 0 → tiempo real int ind_handle, int amount ) { // NOTA: // Actualmente no se utiliza. // Conservado para futuros ayudantes / lógica EA como estaba previsto. ResetLastError(); if(CopyBuffer(ind_handle, BASE_LINE, -shift, amount, base_values) < 0) return false; if(CopyBuffer(ind_handle, UPPER_BAND, -shift, amount, upper_values) < 0) return false; if(CopyBuffer(ind_handle, LOWER_BAND, -shift, amount, lower_values) < 0) return false; return true; }Muy facil, solo quiero permitir al usuario mostrar u ocultar lineas individuales como BASE_LINE,UPPER_BAND,LOWER_BAND y color personalizado solamente.
Problema 1 es:
Se puede ver en la imagen adjunta, no se porque tengo verde bajo el grafico.
Archivos adjuntos:
Problem_1.jpg
217 kb
Nguyen Tuấn Anh # :
Caros.
Estoy intentando crear un indicador personalizado basado en iBand.
Después de mucha investigación, decidí publicar aquí, tal vez alguien me pueda ayudar.
Aquí está el indicador completo. Es muy sencillo, sólo quiero permitir que el usuario muestre u oculte líneas individuales, como BASE_LINE, UPPER_BAND, LOWER_BAND y sólo el color personalizado.
El problema 1 es:
Como puede ver en la imagen adjunta, no veo por qué hay un área verde debajo del gráfico.
Estas líneas verdes son el indicador de volumen. Para desactivarlo, debe abrir las propiedades del gráfico y desactivar el indicador de volumen. O simplemente configure el color del volumen a CL_NONE, para que estas líneas verdes desaparezcan.
Caros.
Estoy intentando crear un indicador personalizado basado en iBand.
Después de mucha investigación, decidí publicar aquí, tal vez alguien me pueda ayudar.
Aquí está el indicador completo. Es muy sencillo, sólo quiero permitir que el usuario muestre u oculte líneas individuales, como BASE_LINE, UPPER_BAND, LOWER_BAND y sólo el color personalizado.
El problema 1 es:
Como puede ver en la imagen adjunta, no veo por qué hay un área verde debajo del gráfico.
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
Artículo publicado De lo básico a intermedio: Indicador (III):
En el artículo anterior, "Del básico al intermedio: Indicador (II)", nos divertimos mucho y aprendimos mucho, ya que se demostró cómo implementar una media móvil de forma muy simple, práctica y perfectamente funcional. Sin embargo, aquello que se mostró puede considerarse solo una breve introducción al mundo de la programación MQL5, ya que el material es bastante básico, simple y directo. Sin embargo, podemos hacer mucho más.
Así que, querido lector, intenta comprender los conceptos que se exponen aquí. No intentes simplemente copiar el código ni pienses que, solo porque tú no consigues hacerlo, nadie más sabe cómo hacer esto o aquello. Entender el concepto es más importante que entender el código en sí. Dado que el código puede cambiar en función de quién lo escriba. El concepto, sin embargo, siempre se mantendrá. Comenzaremos con algo muy sencillo, ya que lo que se verá puede llegar a ser muy complicado si aplicamos ciertas funcionalidades de repente.
Autor: CODE X