[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 198
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
Echa un vistazo aquí .
¡Muchas gracias SK, Vinin!
Un gran ejemplo para workaraund.
Debe haber valido la pena para ser tan sofisticado. :-)
Parece que el MQL4 sabe cómo "aprovechar" el tiempo del programador. :-)
Mira aquí .
Gracias, artículo muy útil.
¡Muchas gracias SK, Vinin!
Gracias, un artículo muy útil.
Si está interesado en este tema, eche un vistazo a este artículo http://www.forextrade.ru/mqlabs/sozdaniie-indikatora-kaghi
En él se discuten muchos detalles de las líneas horizontales y se muestra la solución técnica (alternancia).
También se ilustran las líneas verticales. Pero todavía no he entendido algunas de las reglas. Por ejemplo, basta con cambiar la paridad de los búferes ind., ya que la imagen se tambalea (bloque 4-5, cambiar los números de los búferes de 6 y 7 a 5 y 6, y hacer que el 5º sea 7m).
¿Cuál es el orden de los indicadores y los expertos?
Tengo 2 indicadores en un gráfico.
Y en conjunto, su tiempo de ejecución es a veces mucho mayor que el tiempo entre ticks.
¿Qué indicador se ejecuta primero?
Si no se ejecutan en paralelo, tal vez sea razonable colocarlos en gráficos diferentes, por supuesto, si no hay un orden de ejecución en gráficos diferentes.
¿Qué indicador o Asesor Experto se ejecuta primero si están en el mismo gráfico, y si están en gráficos diferentes?
x[i]=(Open[i]-Close[i]);
BufferMamá[i]=x[i];
No funciona.
Por favor, dígame qué hacer. No sé qué hacer.
x[i]=(Open[i]-Close[i]);
BufferMamá[i]=x[i];
No funciona.
Por favor, dígame qué hacer. No sé qué hacer.
>> ¿Qué hacer? >> ¡Mostrar todo el código!
¿Qué hacer? ¡Muestra todo el código!
//+------------------------------------------------------------------+
//| Momentum.mq4 ||
//| Copyright © 2004, MetaQuotes Software Corp.
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp.
#enlace de propiedad "http://www.metaquotes.net/"
#property indicador_separar_ventana
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- parámetros de entrada
extern int MomPeriod=14;
int ret;
doble x[];
//---- buffers
doble MomBuffer[];
doble ocfor[];
doble octen[];
//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
nombre_corto_de_cadena;
//---- línea indicadora
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MomBuffer);
//---- nombre para la etiqueta de la subventana DataWindow y del indicador
short_name="Mamá("+MamáPeriodo+")";
IndicadorNombreCorto(nombre_corto);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,MomPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Momentum ||
//+------------------------------------------------------------------+
int inicio()
{
int,counted_bars=IndicatorCounted();
//----
if(Bars<=MomPeriod) return(0);
//----
i=Barras;
while(i>=0)
{
x[i]=(Open[i]-Close[i]);
BufferMamá[i]=x[i];
i--;
}
return(0);
}
//+------------------------------------------------------------------+
Si sustituyes Double x[]; por Double x;, todo funciona, pero la cuestión es asignar mombuffer[i]= x[i]
.
.
int inicio()
{
int,counted_bars=IndicatorCounted();
//----
if(Bars<=MomPeriod) return(0);
//----
i=Barras;
ArrayResize(x, i+1);
while(i>=0)
{
x[i]=(Open[i]-Close[i]);
MomBuffer[i]=x[i];
i--;
}
return(0);
}
Si sustituyes Double x[]; por Double x;, todo funciona, pero la cuestión es asignar mombuffer[i]= x[i].
Has declarado un array pero no le has asignado memoria.
Vinin dio una forma de asignar memoria, puedes usar la segunda, a través de la función ArrayResize()