Aide au codage - page 758

 
anees:

mais j'ai vu que beaucoup de personnes ont posté des codes ici et je suis sûr qu'ils n'ont pas tous été écrits par eux.

En fait, le code que j'ai joint ci-dessus est également disponible sur votre fil de discussion https://www.mql5.com/en/forum/180648/page623, commentaire # 9337.

Pouvez-vous m'aider ? Merci.

Et vous ne voyez pas non plus ce message : https://www.mql5.com/en/forum/180648/page623? S'il vous plaît, soyez sérieux...


Je ne dis pas que le code posté par d'autres utilisateurs est codé par eux (en fait, la plupart ne l'est pas).

Ce que je dis, c'est que je (comme moi, "mladen") ne vais pas toucher au code volé (décompilé) - et vous verrez beaucoup, beaucoup de messages (comme celui que vous "n'avez pas vu") où j'ai dit cela. Donc, à moins que vous puissiez poster le code original, je ne ferai rien avec un tel code. Qu'on le veuille ou non, c'est comme ça ... Bonne chance !

 
Cher Mladen, comment utiliser les fonctions iMA ou iCustomMa avec un prix étendu,
comme par exemple pr_haclose ? Les solutions les plus simples sont les suivantes
iMA(NULL,0,avgPeriod,0,avgType,pr_haclose,i);

iCustomMa(avgType,iMA(NULL,0,1,0,MODE_SMA,pr_haclose,i),avgPeriod,i,0);
renvoyer des avertissements.
 
wojtekpaul:
Cher Mladen, comment utiliser les fonctions iMA ou iCustomMa avec un prix étendu,
comme par exemple pr_haclose ? Les solutions les plus simples sont les suivantes
iMA(NULL,0,avgPeriod,0,avgType,pr_haclose,i);

iCustomMa(avgType,iMA(NULL,0,1,0,MODE_SMA,pr_haclose,i),avgPeriod,i,0);
retourner des avertissements.
Vous devez utiliser la fonction personnalisée get price (au lieu d'utiliser la fonction iMA() pour récupérer le prix). Dans certaines des dernières versions, vous pouvez obtenir la fonction getPrice(), mais dans tous les cas, cela ressemble à ceci :
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);
}  
 

Salut Mladen,

Pourriez-vous ajouter des tampons pour chaque couleur différente ?

Merci !

Dossiers :
 
mladen:

Vous devez utiliser la fonction get price personnalisée (au lieu d'utiliser la fonction iMA() pour récupérer le prix). Dans certaines des dernières versions, vous pouvez obtenir la fonction getPrice()

Ainsi, cette formule
iCustomMa(avgType,getPrice(pr_haclose,pr_open,pr_close,pr_high,pr_low,i),avgPeriod,i,0);
serait correcte ?
 
wojtekpaul:
Donc, cette formule
iCustomMa(avgType,getPrice(pr_haclose,pr_open,pr_close,pr_high,pr_low,i),avgPeriod,i,0);
serait correcte ?
Non

Comme ceci :

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

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

Ces quatre quantités font référence à

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

?
 
wojtekpaul:

Ces quatre quantités se rapportent à

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

?
Non. Si vous regardez la fonction, les 4 paramètres font référence à 4 tableaux contenant les valeurs open, close, high et low. Vous essayez d'utiliser des valeurs entières constantes au lieu des tableaux qui sont attendus dans la fonction. Veuillez utiliser la fonction telle qu'elle est affichée et elle fonctionnera.
 

OK, merci beaucoup pour votre aide :)

(que ferons-nous après le 31 janvier ?) :(

 
Cher Mladen,

Pouvez-vous coder ceci pour l'indicateur mt4 .... qui est dans le codage AFL d'Amibroker ... Merci beaucoup



_SECTION_BEGIN("Tendance du marché") ;
SetChartOptions(0,chartShowArrows|chartShowDates) ;

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

result = arg1 + arg2 ;

retourne le résultat ;
}

Prédire=0 ;
P = ParamField("Champ de prix",-1) ;
Périodes = Param("Périodes", 15, 2, 300, 1, 10 ) ;
Predict = PredictCycle(C,Periods) ;

Acheter = Predict>Ref(Predict,-1) ;
Vendre = Predict<Ref(Predict,-1) ;

Achat = ExRem(Achat,Vente) ;
Vendre = ExRem(Vendre,Acheter) ;

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() ;