Ayuda a la codificación - página 758

 
anees:

pero he visto que muchas personas han publicado códigos aquí que estoy seguro de que no todos fueron escritos por ellos.

De hecho, el código que he adjuntado arriba también está disponible en su hilo https://www.mql5.com/en/forum/180648/page623, Comentario # 9337

¿me pueden ayudar por favor? gracias.

Y no ves este post también : https://www.mql5.com/en/forum/180648/page623? Por favor, ponte serio ...


No estoy diciendo que el código publicado por otros usuarios sea codificado por ellos (de hecho, la mayoría no lo es)

Lo que estoy diciendo es que yo (como yo, "mladen") no voy a tocar el código robado (descompilado) - y verás muchos, muchos posts (como el que "no viste") donde dije eso. Así que, a menos que puedas publicar el código original, no voy a hacer nada con dicho código. Te guste o no, eso es lo que hay ... todo lo mejor

 
Estimado Mladen, ¿cómo utilizar las funciones iMA o iCustomMa con un precio extendido,
como por ejemplo pr_haclose? Las soluciones más simples
iMA(NULL,0,avgPeriod,0,avgType,pr_haclose,i);

iCustomMa(avgType,iMA(NULL,0,1,0,MODE_SMA,pr_haclose,i),avgPeriod,i,0);
devolver las advertencias.
 
wojtekpaul:
Estimado Mladen, ¿cómo utilizar las funciones iMA o iCustomMa con un precio extendido,
como por ejemplo pr_haclose? Las soluciones más simples
iMA(NULL,0,avgPeriod,0,avgType,pr_haclose,i);

iCustomMa(avgType,iMA(NULL,0,1,0,MODE_SMA,pr_haclose,i),avgPeriod,i,0);
devolver las advertencias.
Necesitas usar el get price personalizado (en lugar de usar el iMA() para recuperar el precio). En algunas de las últimas versiones se puede obtener la función getPrice(), pero en cualquier caso se ve así :
enum enPrices
{
   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low
   pr_median,     // Median
   pr_typical,    // Typical
   pr_weighted,   // Weighted
   pr_average,    // Average (high+low+open+close)/4
   pr_medianb,    // Average median body (open+close)/2
   pr_tbiased,    // Trend biased price
   pr_tbiased2,   // Trend biased (extreme) price
   pr_haclose,    // Heiken ashi close
   pr_haopen ,    // Heiken ashi open
   pr_hahigh,     // Heiken ashi high
   pr_halow,      // Heiken ashi low
   pr_hamedian,   // Heiken ashi median
   pr_hatypical,  // Heiken ashi typical
   pr_haweighted, // Heiken ashi weighted
   pr_haaverage,  // Heiken ashi average
   pr_hamedianb,  // Heiken ashi median body
   pr_hatbiased,  // Heiken ashi trend biased price
   pr_hatbiased2  // Heiken ashi trend biased (extreme) price
};

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//
//

#define priceInstances 1
double workHa[][priceInstances*4];
double getPrice(int tprice, const double& open[], const double& close[], const double& high[], const double& low[], int i, int instanceNo=0)
{
  if (tprice>=pr_haclose)
   {
      if (ArrayRange(workHa,0)!= Bars) ArrayResize(workHa,Bars); instanceNo*=4;
         int r = Bars-i-1;
        
         //
         //
         //
         //
         //
        
         double haOpen;
         if (r>0)
                haOpen  = (workHa[r-1][instanceNo+2] + workHa[r-1][instanceNo+3])/2.0;
         else   haOpen  = (open[i]+close[i])/2;
         double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0;
         double haHigh  = MathMax(high[i], MathMax(haOpen,haClose));
         double haLow   = MathMin(low[i] , MathMin(haOpen,haClose));

         if(haOpen  <haClose) { workHa[r][instanceNo+0] = haLow;  workHa[r][instanceNo+1] = haHigh; }
         else                 { workHa[r][instanceNo+0] = haHigh; workHa[r][instanceNo+1] = haLow;  }
                                workHa[r][instanceNo+2] = haOpen;
                                workHa[r][instanceNo+3] = haClose;
         //
         //
         //
         //
         //
        
         switch (tprice)
         {
            case pr_haclose:     return(haClose);
            case pr_haopen:      return(haOpen);
            case pr_hahigh:      return(haHigh);
            case pr_halow:       return(haLow);
            case pr_hamedian:    return((haHigh+haLow)/2.0);
            case pr_hamedianb:   return((haOpen+haClose)/2.0);
            case pr_hatypical:   return((haHigh+haLow+haClose)/3.0);
            case pr_haweighted:  return((haHigh+haLow+haClose+haClose)/4.0);
            case pr_haaverage:   return((haHigh+haLow+haClose+haOpen)/4.0);
            case pr_hatbiased:
               if (haClose>haOpen)
                     return((haHigh+haClose)/2.0);
               else  return((haLow+haClose)/2.0);        
            case pr_hatbiased2:
               if (haClose>haOpen)  return(haHigh);
               if (haClose<haOpen)  return(haLow);
                                    return(haClose);        
         }
   }
  
   //
   //
   //
   //
   //
  
   switch (tprice)
   {
      case pr_close:     return(close[i]);
      case pr_open:      return(open[i]);
      case pr_high:      return(high[i]);
      case pr_low:       return(low[i]);
      case pr_median:    return((high[i]+low[i])/2.0);
      case pr_medianb:   return((open[i]+close[i])/2.0);
      case pr_typical:   return((high[i]+low[i]+close[i])/3.0);
      case pr_weighted:  return((high[i]+low[i]+close[i]+close[i])/4.0);
      case pr_average:   return((high[i]+low[i]+close[i]+open[i])/4.0);
      case pr_tbiased:  
               if (close[i]>open[i])
                     return((high[i]+close[i])/2.0);
               else  return((low[i]+close[i])/2.0);        
      case pr_tbiased2:  
               if (close[i]>open[i]) return(high[i]);
               if (close[i]<open[i]) return(low[i]);
                                     return(close[i]);        
   }
   return(0);
}  
 

Hola Mladen,

¿Podrías añadir topes para cada color diferente?

Gracias.

Archivos adjuntos:
 
mladen:

Es necesario utilizar la función get price personalizada (en lugar de utilizar la función iMA() para recuperar el precio). En algunas de las últimas versiones se puede obtener la función getPrice()

por lo que, esa fórmula
iCustomMa(avgType,getPrice(pr_haclose,pr_open,pr_close,pr_high,pr_low,i),avgPeriod,i,0);
sería correcta?
 
wojtekpaul:
entonces, esa fórmula
iCustomMa(avgType,getPrice(pr_haclose,pr_open,pr_close,pr_high,pr_low,i),avgPeriod,i,0);
sería correcta?
No

Así:

iCustomMa(avgType,getPrice(pr_haclose,Open,Close,High,Low,i),avgPeriod,i,0);
 
mladen:
Así:

...Open,Close,High,Low,...

Esas cuatro cantidades se refieren a

   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low

?
 
wojtekpaul:

Estas cuatro cantidades se refieren a

   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low

?
No. Si echas un vistazo a la función, los 4 parámetros se refieren a 4 arrays que contienen los valores de apertura, cierre, alto y bajo. Usted está tratando de utilizar valores enteros constantes en lugar de arrays que se esperan en la función. Por favor, utilícela tal y como se ha publicado y entonces funcionará
 

OK, ¡muchas gracias por su ayuda! :)

(¿qué haremos después del 31 de enero?) :(

 
Estimado Mladen,

¿Puede plz código de este para mt4 indicador .... su en Amibroker AFL codificación ... Gracias a todos



_SECTION_BEGIN("Tendencia del mercado");
SetChartOptions(0,chartShowArrows|chartShowDates);

function predictCycle( arg1, arg2 )
{
local var1, var2;

resultado = arg1 + arg2;

devolver el resultado;
}

Predict=0;
P = ParamField("Campo precio",-1);
Periodos = Param("Periodos", 15, 2, 300, 1, 10 );
Predict = PredictCycle(C,Periods);

Compra = Predict>Ref(Predict,-1);
Venta = Predict<Ref(Predict,-1);

Compra = ExRem(Compra,Venta);
Venta = ExRem(Venta,Compra);

Plot(Predict, "Predict",colorWhite,styleLine | styleThick);

PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorGreen, 0,L, Offset=-5);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorRed, 0,H, Offset=-5);

_SECTION_END();
Razón de la queja: