Aide au codage - page 759

 
Très cher MLADEN

En ce qui concerne les avertissements lors de la compilation "valeur de retour de ''order send/select,modify,close'' ont été corrigés en ajoutant (bool dummyResult) précédemment mais maintenant je vous vois utiliser simplement (bool dummy), est-ce que c'est ok pour tout et chaque situation ou le nouveau (bool dummy) pour certains indicateurs et situations spécifiques ?

Salutations
 
mntiwana:
Très cher MLADEN

En ce qui concerne les avertissements lors de la compilation "la valeur de retour de ''order send/select,modify,close'' ont été corrigés en ajoutant (bool dummyResult) précédemment mais maintenant je vous vois utiliser simplement (bool dummy), est-ce que c'est ok pour tout et chaque situation ou le nouveau (bool dummy) pour certains indicateurs et situations spécifiques ?

salutations
En général, ces avertissements sont bénins.

Ce qui est utilisé pour vraiment vérifier si les opérations d'ordre sont correctes est GetLastError() (car il donne beaucoup plus de détails que le simple retour booléen que le retour par défaut des opérations d'ordre renvoie) - donc, oui c'est OK, et ensuite, si plus de détails pour une erreur possible est nécessaire, alors, par tous les moyens, GetLastError() devrait être utilisé.
 
wojtekpaul:

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

WojtekPaul,

Que voulez-vous dire ?

 
chrisstoff:

WojtekPaul,

Que voulez-vous dire ?

Il voulait dire ceci : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated

Mais vérifiez aussi ce post : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089
 
mladen:
En général, ces avertissements sont bénins.

Ce qui est utilisé pour vraiment vérifier si les opérations de commande sont correctes est GetLastError() (puisqu'il donne beaucoup plus de détails que le simple retour booléen que le retour par défaut des opérations de commande renvoie) - donc, oui c'est OK, et ensuite, si plus de détails pour une erreur possible sont nécessaires, alors, par tous les moyens, GetLastError() devrait être utilisé.
Très cher MLADEN

Merci pour votre aide et vos conseils.

Salutations
 
mladen:
Il voulait dire ceci : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated

Mais regardez aussi ce message : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089

Mladen,

Merci pour ces informations. C'est / était l'un de mes forums les plus favorables, donc c'est une mauvaise nouvelle pour moi aussi. Néanmoins, il y a d'autres endroits sur le net avec des fonctionnalités de forum et de chat prêtes à l'emploi. (J'en ai mis un exemple dans le fil "Forex-TSD va être supprimé...").

 

Bonjour à tous,


J'ai besoin d'un codeur pour mettre une flèche avec alerte pour cette extrategia. Manuellement cette stratégie donne 100% de victoire.


Ci-dessous le lien vers la stratégie.

http://www.binaryoptionsedge.com/topic/1879-high-power-option-2015/page-2#entry108014

Poste n°29

Obrigado.

 

Cher Mladen, est-il possible que les deux fonctions suivantes :

iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_HIGH,i);

and

iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);
(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
où ma_ema est défini ci-dessous :
#define _maWorkBufferx1 1
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   if (length<=1) return(price);
   int r = Bars-i-1;
   switch (mode)
   {
      // ...
      case ma_ema   : return(iEma(price,length,r,instanceNo));
      // ...
      default : return(0);
   }
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
   double alpha = 2.0 / (1.0+period);
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
renvoient des valeurs différentes (pour les mêmes MAPeriod et i) ? Cela signifierait-il que iEma fonctionne légèrement différemment de l'EMA intégrée ?
que iEma fonctionne de façon légèrement différente de l'EMA intégrée ?
 
wojtekpaul:

Cher Mladen, est-il possible que les deux fonctions suivantes :

iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_HIGH,i);

and

iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);
(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
#define _maWorkBufferx1 1
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   if (length<=1) return(price);
   int r = Bars-i-1;
   switch (mode)
   {
      // ...
      case ma_ema   : return(iEma(price,length,r,instanceNo));
      // ...
      default : return(0);
   }
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
   double alpha = 2.0 / (1.0+period);
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
renvoient des valeurs différentes (pour les mêmes MAPeriod et i) ? cela signifierait-il que
que iEma fonctionne de manière légèrement différente de l'EMA intégrée ?
L'EMA dépend des valeurs précédentes. Si vous avez calculé les valeurs sur l'ensemble de la série, elles devraient retourner des valeurs très similaires. Si ce n'est pas le cas (si vous avez essayé de calculer une seule valeur), elles ne seront pas les mêmes puisque le iMA() calculera, derrière les rideaux, la série entière, alors que le iCustomMa() ne calculera que les valeurs que vous avez demandées.

Faites tourner en boucle l'iCustomMa() sur l'ensemble de la série, et les résultats devraient être identiques.


PS : cette iEma() est obsolète. La nouvelle version se déroule comme suit (elle ne va pas changer les valeurs, mais elle est "strict mode proof")
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
  
   workEma[r][instanceNo] = price;
   if (r>0 && period>1)
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
 

Merci beaucoup pour votre réponse rapide !

trouver le code actuel des moyennes mobiles:

enum enMaTypes
{
   ma_sma,     // simple moving average - SMA
   ma_ema,     // exponential moving average - EMA
   ma_dsema,   // double smoothed exponential moving average - DSEMA
   ma_dema,    // double exponential moving average - DEMA
   ma_tema,    // tripple exponential moving average - TEMA
   ma_smma,    // smoothed moving average - SMMA
   ma_lwma,    // linear weighted moving average - LWMA
   ma_pwma,    // parabolic weighted moving average - PWMA
   ma_alxma,   // Alexander moving average - ALXMA
   ma_vwma,    // volume weighted moving average - VWMA
   ma_hull,    // Hull moving average
   ma_tma,     // triangular moving average
   ma_sine,    // sine weighted moving average
   ma_linr,    // linear regression value
   ma_ie2,     // IE/2
   ma_nlma,    // non lag moving average
   ma_zlma,    // zero lag moving average
   ma_lead,    // leader exponential moving average
   ma_ssm,     // super smoother
   ma_smoo     // smoother
};

Pour autant que je sache, c'est la dernière liste de moyennes mobiles disponibles en code ouvert.

(les autres MAs sont déjà au format ex4).