[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 235

 
FinBuda писал(а) >>

Bonjour, je demande de l'aide aux connaisseurs, mon indicateur ne veut pas dessiner par le flux, je dois constamment changer de cadre pour le mettre à jour à la dernière barre, comment puis-je corriger ce défaut ? J'en suis très reconnaissant.

Vous ne pouvez pas le tester sans le second indicateur.

 
Vinin >> :

Sans un second indicateur, il n'y a toujours pas de moyen de vérifier.

Désolé. Je me suis trompé :)

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

Désolé. Je me suis trompé :)

Elle fonctionne, bien sûr, mais les freins sont terribles. Il est nécessaire de transférer les calculs de l'indicateur auxiliaire vers l'indicateur principal. En général, il serait préférable d'optimiser les calculs.

Dossiers :
norms2.1.mq4  4 kb
 
Vinin >> :

Elle fonctionne, bien sûr, mais les freins sont terribles. Il est nécessaire de transférer les calculs de l'indicateur auxiliaire vers l'indicateur principal. En général, il serait préférable d'optimiser les calculs.

Merci beaucoup pour votre aide ! Une autre question en cours de route, comment puis-je optimiser les calculs, et comment normaliser au mieux le MACD pour qu'il fonctionne dans certaines limites ? Je suis loin des détails et de la programmation, c'est pourquoi tout ce que j'ai pu trouver de plus ou moins approprié est le normalisateur vu ci-dessus :)

 
FinBuda писал(а) >>

Merci beaucoup pour votre aide ! Et une autre question en cours de route, comment puis-je optimiser les calculs, et comment normaliser au mieux le MACD pour qu'il fonctionne dans certaines limites ? Je suis loin des détails et de la programmation, c'est pourquoi tout ce que j'ai pu trouver de plus ou moins approprié est le normalisateur montré ci-dessus :)

Il peut y avoir de nombreuses options d'optimisation. Je ne suis pas vraiment entré dans le code.

 
FinBuda >> :

Merci beaucoup pour votre aide ! J'ai une autre question : quelle est la meilleure façon d'optimiser le calcul, et comment normaliser le MAKD pour le maintenir dans les limites que j'ai définies ? Je suis loin du matériel et de la programmation, c'est pourquoi tout ce que j'ai pu trouver de plus ou moins approprié est le normalisateur vu ci-dessus :)

Vous utilisez une variante qui a été postée sur la base de code, c'est juste un concept et il n'est pas optimisé pour la performance. Pour des raisons pratiques, je suggère de définir manuellement la variable characteristic_period à partir de variables externes, en la sélectionnant de telle sorte que 3-4 cycles complets de l'indicateur principal se produisent au cours du nombre donné de périodes.

//+------------------------------------------------------------------+
//|                                                   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 >> :

Une autre option - que j'utilise personnellement plus souvent - est de spécifier le nombre de jours pour l'exécution depuis l'extérieur et de les convertir en characteristic_period dans le corps de l'indicateur.

...

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

...

int init()
{

...


characteristic_period=1440./Period()* days_for_normalization;   // 1440 - это количество минут в сутках
}
 
En général, Vinin a raison, le calcul est vraiment plus rapide si le code du second indicateur est inséré dans le premier. L'inconvénient ici est que vous devez faire plus de codage (et ce que vous avez pris de kodobase était l'un des buts de montrer comment simplifier ce travail), plus le deuxième indicateur prend des tampons du premier, ce qui n'est pas toujours acceptable.
 
Merci à tous pour votre aide ! !! Faisons un essai :)
 

Ça ne marche pas...quand on lit tous ces EA ici, mais je n'ai que MM, j'aimerais avoir une petite maturité d'attente de +.... hein....


L'espérance mathématique -0,12 est-elle normale sans optimisation dans un long intervalle de temps ? Je veux dire que tout le monde l'obtient sans optimisation et ensuite l'attente augmente par adaptation, ou ce n'est pas une option et je devrais changer complètement d'EA ?