[¡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 235

 
FinBuda писал(а) >>

Hola, pido ayuda a los entendidos, mi indicador no quiere dibujar por el flujo, tengo que cambiar constantemente de marco para actualizarlo a la última barra. Estoy muy agradecido por ello.

No se puede probar sin el segundo indicador.

 
Vinin >> :

Sin un segundo indicador, todavía no hay forma de comprobarlo.

Lo siento. Me corrijo :)

Archivos adjuntos:
indu2.mq4  3 kb
 
FinBuda писал(а) >>

Lo siento. Me corrijo :)

Funciona, por supuesto, pero los frenos son terribles. Es necesario transferir los cálculos del indicador auxiliar al principal. En general, sería mejor optimizar los cálculos.

Archivos adjuntos:
norms2.1.mq4  4 kb
 
Vinin >> :

Funciona, por supuesto, pero los frenos son terribles. Es necesario transferir los cálculos del indicador auxiliar al principal. En general, sería mejor optimizar los cálculos.

Muchas gracias por su ayuda. Otra pregunta en el camino, ¿cómo puedo optimizar los cálculos, y la mejor manera de normalizar el MACD para ejecutar dentro de ciertos límites? Sólo estoy lejos de los detalles y la programación es por eso que todo lo que pude encontrar un más o menos adecuado es el normalizador visto anteriormente :)

 
FinBuda писал(а) >>

Muchas gracias por su ayuda. Y otra pregunta en el camino, ¿cómo puedo optimizar los cálculos, y la mejor manera de normalizar el MACD para ejecutar dentro de ciertos límites? Es que estoy lejos de los detalles y la programación por eso todo lo que he podido encontrar más o menos adecuado es el normalizador mostrado arriba :)

Puede haber muchas opciones de optimización. No me he metido en el código.

 
FinBuda >> :

Muchas gracias por su ayuda. Tengo otra pregunta, ¿cuál es la mejor manera de optimizar el cálculo, y cómo normalizar el MAKD para mantenerlo dentro de los límites que he definido? Es que estoy lejos del hardware y la programación por eso todo lo que he podido encontrar más o menos adecuado es el normalizador visto arriba :)

Usted está utilizando una variante que se publicó en la base de código, es sólo un concepto y no está optimizado para el rendimiento. A efectos prácticos, sugiero establecer la variable characteristic_period manualmente a partir de las variables externas, seleccionándola de forma que se produzcan 3-4 ciclos completos del indicador principal durante el número de periodos dado

//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|                                                  al_su31@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, al_su"
#property link      "al_su31@mail.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_level4 -0.25
#property indicator_level5 -0.5
#property indicator_level6 -0.75
#property indicator_color1 RoyalBlue
//---- input parameters
#define PERIODS_CHARACTERISTIC 3

extern string  Indicator="ind-2";
extern int     mode=0;
extern int     param1=8;//Ну или 9, не важно...
extern int     param2=34;
//extern int param3;Скока надо параметров, стока и задаем
extern double  characteristic_period; //как видите, переменную вынесли вовне

//---- buffers 
double Normalizer[];
double sigma;

//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0, Indicator, param1, param2,/*param3, и т.д.:)*/ mode, shift));
}

double MathTanh(double x)
{ 
   double exp;
   if( x>0)  {exp=MathExp(-2* x);return ((1-exp)/(1+exp));}
   else {exp=MathExp(2* x);return ((exp-1)/(1+exp));}
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("Normalized "+ Indicator);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Normalizer);
   SetIndexDrawBegin(0, characteristic_period);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i, j, limit, counted_bars=IndicatorCounted();
   double S;
   if( counted_bars>0) counted_bars--;
   limit=MathMax(Bars- counted_bars-1,0);
//----
   for( i= limit; i>=0; i--)
   {
      S=0;
      for( j=0; j< characteristic_period; j++) S+=MathPow( Indyuk( i+ j),2);
      S/= characteristic_period;
      S=MathSqrt( S);
      if( S>0) Normalizer[ i]= Indyuk( i)/ S;
      Normalizer[ i]= MathTanh( Normalizer[ i]);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alsu >> :

Otra opción -que personalmente uso más a menudo- es especificar el número de días para la ejecución desde el exterior y convertirlos en characteristic_period en el cuerpo del indicador

...

extern double days_for_normalization=3;   // например, смотрим за три дня

...

int init()
{

...


characteristic_period=1440./Period()* days_for_normalization;   // 1440 - это количество минут в сутках
}
 
En general, Vinin tiene razón, el cálculo es realmente más rápido si el código del segundo indicador se inserta en el primero. La desventaja aquí es que tienes que hacer más codificación (y lo que tomaste de kodobase era uno de los propósitos de mostrar cómo simplificar este trabajo), además de que el segundo indicador ocupa buffers del primero, lo cual no siempre es aceptable.
 
¡¡¡Gracias a todos por su ayuda!!! Vamos a intentarlo :)
 

No está funcionando... cuando se leen todos estos EAs aquí, pero sólo tengo MM, me gustaría tener un poco de madurez expectativa de +.... eh...


¿Es normal la expectativa matemática -0,12 sin optimización en un intervalo de tiempo largo? Me refiero a que todo el mundo lo consigue sin optimización y luego la expectativa sube por la adaptación, o no es una opción y debo cambiar de EA por completo?