une stratégie commerciale basée sur la théorie des vagues d'Elliott - page 64

 
<br/ translate="no">Je suis totalement d'accord avec Rosh. Le débit entrant est mieux associé au delta, et Close[] au volume accumulé dans le réservoir. Cependant, il me semble que puisque Close[] est le total cumulé du delta, les deux séries sont très étroitement liées. Par conséquent, leurs coefficients de Hurst doivent être en corrélation. Mais vous ne devriez pas vous fier à mon opinion. Tout ce que je dis est basé uniquement sur ma compréhension générale. Quand je travaillerai avec mes mains, je pourrai me faire une opinion plus éclairée.


Et je penche progressivement vers ce point de vue. Un point reste à éclaircir, à savoir. Supposons, en raisonnant par analogie, que Close[] soit le niveau d'eau d'un réservoir. Nous n'avons aucun moyen de mesurer l'apport exact (précipitations, nombreux cours d'eau, etc.), mais nous allons estimer l'apport, par le niveau.

Lorsque le niveau de l'eau augmente, tout est clair - l'afflux sera une différence positive. Mais si nous avons commencé l'observation pendant un été sec et par conséquent - des valeurs négatives de la variation du niveau. Après tout, une baisse du niveau ne signifie pas qu'il n'y a pas eu d'afflux, mais simplement qu'il y a eu plus d'écoulement que d'afflux. Le débit entrant moyen doit être égal au volume libéré du réservoir chaque année. Une fois encore, une certaine cyclicité apparaît.

Je veux clarifier ce qui est méthodologiquement correct de prendre comme entrée pour mon cas :
- Seulement la différence
- Seulement la différence modulo
- Seulement la différence positive

Intuitivement, je comprends que l'essentiel est de déterminer correctement le flux entrant.

Je doute également qu'il y ait une corrélation entre Close[] et Close[i]-Close[i+1]. J'ai essayé une fois de le trouver en utilisant des méthodes DSP (à titre d'essai, je déboguais à l'époque des fonctions permettant de déterminer la corrélation et l'autocorrélation des signaux), le résultat du calcul - pas du tout lié. En général, cela peut être observé à l'œil nu, si vous regardez la forme du signal. Mais ce sont des méthodes DSP, il n'est peut-être pas logique de les utiliser dans ce cas.

De plus, on ne peut pas reconstruire la série originale par Close[i]-Close[i+1] seulement - l'information nécessaire est simplement perdue, et le calcul de Hearst est effectué, en fait, par une série différente de celle d'origine.
 
<br / translate="no">J'aimerais clarifier ce qui est méthodologiquement correct à prendre comme flux entrant pour mon cas :
-Différence seulement
- différence modulo
- seule différence positive

Intuitivement, je comprends que l'essentiel est de déterminer correctement le flux entrant.

Je doute également qu'il y ait une corrélation entre Close[] et Close[i]-Close[i+1].
...
De plus, on ne peut pas reconstruire la série originale par Close[i]-Close[i+1] seulement - l'information nécessaire est simplement perdue, et le calcul de Hearst est effectué, en fait, par une série différente de l'originale.


Je ne prendrais que la différence. De même, si vous avez une bonne raison, ne dites pas que vous ne pouvez pas l'utiliser :)

http://forex.kbpauk.ru/showflat.php/Cat/0/Number/120077/an/0/page/0#Post120077
 
<br/ translate="no">En effet, j'utilise des approches complètement différentes. Bien que l'analyse spectrale des séries aléatoires soit, je pense, une direction très intéressante. Cependant, trop compliqué pour moi. Et trop loin de ma spécialité, pour la reprendre maintenant.


Et je ne suis pas un "numériseur" professionnel. Il y a trois mois, je suis tombé sur un article faisant l'éloge de l'utilisation des DSP dans le trading. J'ai trouvé cela intéressant, et j'ai décidé de fabriquer un jeu de base de filtres numériques. Eh bien, c'était fait. Je suis allé dans une librairie, j'ai choisi les deux livres les plus épais et je les ai achetés. Après avoir lu les 200 premières pages du premier livre que j'ai rencontré, je l'ai fermé et, en marmonnant des jurons, je suis allé chercher le livre poussiéreux de mathématiques en deux volumes.

Je n'étais pas intéressé par l'achat d'un produit tout fait (j'ai assez d'argent pour cela), mais par la fabrication de mon propre produit, en supposant que l'étude de ce domaine - de nouvelles idées apparaîtront. Et c'est ce qui s'est passé. En 3 mois, sans aucune distraction, j'ai obtenu ce que je voulais - des indicateurs basés sur le DSP et beaucoup d'idées.

Mais la perfection ne connaît pas de frontières....) :о))) Je veux demander à des professionnels (c'est plus rapide ou je le ferai moi-même, mais plus tard) de définir certaines spécifications des filtres existants et d'écrire un filtre vraiment adaptatif.

D'après ce qui est proposé - personne ne les a, je veux dire aucun filtre adaptatif.

PS : Et j'en viendrai bientôt aux spectres :o))))
 
<br / translate="no"> ...
Je ne prendrais que la différence.
...


Je pense la même chose. Il y a beaucoup de données justes, enfin ... presque justes.
 
Et je ne suis pas un professionnel de la "numérisation"<br/ translate="no"> ......
- Indicateurs basés sur le DSP et un tas d'idées.
......
D'après ce qui est proposé, personne n'en a, je veux dire aucun filtre adaptatif.
PS : Et j'en viendrai bientôt aux spectres :o))))

Voilà, je crois au DSP et je ne suis pas un "numériseur" professionnel.
Je l'utilise :
"Package d'analyse technique par des méthodes de filtrage numérique
Développé grâce à Keny (Oleg, Krasnoyarsk, unclekenny@yandex.ru) et
Goodman (Zyabrev Ilya, Moscou, info@goodman.ru)
Aide aux tests - Tsygankov Andrey gypsy@mail.ru, Elizarov Oleg TOPpoint@yandex.ru
Distribué gratuitement selon les principes "AS-IS".
Veuillez informer l'auteur de toutes les remarques et erreurs"
et il y a une idée non réalisée sur la façon d'optimiser les filtres à la volée :
Il n'y a rien de nouveau. Cela a été fait manuellement des centaines de fois, mais comment l'automatiser ? -
Je parle de FATL SATL (FATL-SATL, FATL SATL CD ...) et du réglage manuel de leurs paramètres
à l'aide d'un analyseur de spectre (inclus dans le paquet).
Il faut une bibliothèque qui effectue une analyse du spectre, donnant en sortie les périodes de
densité maximale du signal (série chronologique). En analysant ces données
pour différents fragments de séries temporelles, vous pouvez essayer de deviner les périodes, les phases, les coefficients pondérés (amplitudes) des composantes harmoniques (comment ? je ne le sais pas encore)
Plus on peut déterminer de composantes harmoniques, plus il est probable de prévoir l'évolution des séries. C'est tout.
Yeshe. Si la prévision diffère beaucoup de la réalité, on peut supposer la réaction
du marché aux nouvelles fortes. C'est tout.

Pas un programmeur et pas un mathématicien. :)
Cette branche est clairement au-delà de mes compétences. Je le mâche depuis une semaine maintenant. :(
 
Vladislav, j'ai une question sur l'indicateur Murray. J'ai remarqué il y a longtemps, lorsque j'utilise votre indicateur dans mon Expert Advisor (la dernière version), qu'il y a parfois des jours où la nouvelle version de l'indicateur n'affiche pas correctement les niveaux, alors que l'ancienne version n'a pas cet inconvénient. Pour éviter de tels échecs à ces moments-là, j'utilise simplement les derniers niveaux correctement calculés. Auparavant, j'avais mis cela sur le compte d'une imperfection du testeur MT4, mais il s'est produit la situation que j'ai observée depuis longtemps dans mon conseiller expert lors de tests sur l'historique (c'est-à-dire que le testeur ne s'est pas trompé en indiquant la possibilité d'une telle situation !) Veuillez consulter les captures d'écran à l'adresse https://c.mql5.com/mql4/forum/2006/06/Murrey_new_and_old.zip.
Deux captures d'écran réalisées avec une seule différence dans le réglage de la version de calcul (OldVersion : true et false)
Vous pouvez voir que l'ancienne version montre les niveaux habituels, tandis que la nouvelle montre un échec avec les mêmes paramètres - des niveaux de Murray "collants". Pouvez-vous commenter cette situation ? Les niveaux de Murray "collés" dans la nouvelle version de l'indicateur sont-ils simplement un échec technique ou ont-ils une signification plus profonde ? Par exemple, aucun niveau de Murray ne peut exister aujourd'hui en raison du mouvement le plus fort et nous devrions juste attendre jusqu'à ce qu'ils soient correctement calculés par exemple le lundi et alors nous pouvons décider d'entrer sur le marché ? Et aujourd'hui, par exemple, si vous n'avez pas réussi à entrer hier, il vaut mieux rester en dehors du marché ? J'aimerais connaître votre opinion sur cette question.

PS : Mais maintenant, avec la nouvelle barre, la nouvelle version a commencé à afficher les mêmes niveaux de Murray que l'ancienne. Il s'agit probablement d'une erreur technique de la nouvelle version du calcul des niveaux de Murray.

PPS : Quelques barres supplémentaires sont venues et les niveaux de la nouvelle version sont à nouveau collés ensemble.
 
Paquet d'analyse technique pour les méthodes de filtrage numérique

où puis-je le voir ?
google est silencieux
 
Vladislav J'ai une question sur l'indicateur Murray.
...............................................
PS : Mais maintenant avec l'arrivée de la nouvelle barre et la nouvelle version a commencé à montrer les mêmes niveaux de Murray que l'ancienne. Il s'agit probablement d'une erreur technique de la nouvelle version du calcul des niveaux de Murray.

PPS : Quelques barres supplémentaires sont venues et les niveaux de la nouvelle version sont à nouveau collés ensemble.


C'est étrange - je vais garder un œil dessus - bien sûr, ça ne devrait pas être comme ça. Il faut surveiller l'initialisation des tableaux, je vais vérifier.
En fait, je ne l'ai pas, mais je ne l'utilise pas comme un indicateur séparé - j'ai juste intégré le code dans le conseiller expert.

HH J'ai trouvé un autre endroit où il y avait une faute de frappe. Vous aviez raison - l'erreur est technique. Voici le code corrigé :

i//+------------------------------------------------------------------+
//|                                                   MMLevls_VG.mq4 |
//|                       Copyright © 2006, Vladislav Goshkov (VG).  |
//|                                           4vg@mail.ru            |
//|                                       Many thanks to Tim Kruzel  |
//+------------------------------------------------------------------+
#property copyright "Vladislav Goshkov (VG)."
#property link      "4vg@mail.ru"

#property indicator_chart_window

// ============================================================================================
// * Линии 8/8 и 0/8 (Окончательное сопротивление).
// * Эти линии самые сильные и оказывают сильнейшие сопротивления и поддержку.
// ============================================================================================
//* Линия 7/8  (Слабая, место для остановки и разворота). Weak, Stall and Reverse
//* Эта линия слаба. Если цена зашла слишком далеко и слишком быстро и если она остановилась около этой линии, 
//* значит она развернется быстро вниз. Если цена не остановилась около этой линии, она продолжит движение вверх к 8/8.
// ============================================================================================
//* Линия 1/8  (Слабая, место для остановки и разворота). Weak, Stall and Reverse
//* Эта линия слаба. Если цена зашла слишком далеко и слишком быстро и если она остановилась около этой линии, 
//* значит она развернется быстро вверх. Если цена не остановилась около этой линии, она продолжит движение вниз к 0/8.
// ============================================================================================
//* Линии 6/8 и 2/8 (Вращение, разворот). Pivot, Reverse
//* Эти две линии уступают в своей силе только 4/8 в своей способности полностью развернуть ценовое движение.
// ============================================================================================
//* Линия 5/8 (Верх торгового диапазона). Top of Trading Range
//* Цены всех рынков тратят 40% времени, на движение между 5/8 и 3/8 линиями. 
//* Если цена двигается около линии 5/8 и остается около нее в течении 10-12 дней, рынок сказал что следует 
//* продавать в этой «премиальной зоне», что и делают некоторые люди, но если цена сохраняет тенденцию оставаться 
//* выше 5/8, то она и останется выше нее. Если, однако, цена падает ниже 5/8, то она скорее всего продолжит 
//* падать далее до следующего уровня сопротивления.
// ============================================================================================
//* Линия 3/8 (Дно торгового диапазона). Bottom of Trading Range
//* Если цены ниже этой лини и двигаются вверх, то цене будет сложно пробить этот уровень. 
//* Если пробивают вверх эту линию и остаются выше нее в течении 10-12 дней, значит цены останутся выше этой линии 
//* и потратят 40% времени двигаясь между этой линией и 5/8 линией.
// ============================================================================================
//* Линия 4/8 (Главная линия сопротивления/поддержки). Major Support/Resistance
//* Эта линия обеспечивает наибольшее сопротивление/поддержку. Этот уровень является лучшим для новой покупки или продажи. 
//* Если цена находится выше 4/8, то это сильный уровень поддержки. Если цена находится ниже 4/8, то это прекрасный уровень 
//* сопротивления.
// ============================================================================================
extern bool OldVersion = false;
extern int P = 90;
extern int MMPeriod = 1440;
extern int StepBack = 0;

extern color  mml_clr_m_2_8 = White;       // [-2]/8
extern color  mml_clr_m_1_8 = White;       // [-1]/8
extern color  mml_clr_0_8   = Aqua;        //  [0]/8
extern color  mml_clr_1_8   = Yellow;      //  [1]/8
extern color  mml_clr_2_8   = Red;         //  [2]/8
extern color  mml_clr_3_8   = Green;       //  [3]/8
extern color  mml_clr_4_8   = Blue;        //  [4]/8
extern color  mml_clr_5_8   = Green;       //  [5]/8
extern color  mml_clr_6_8   = Red;         //  [6]/8
extern color  mml_clr_7_8   = Yellow;      //  [7]/8
extern color  mml_clr_8_8   = Aqua;        //  [8]/8
extern color  mml_clr_p_1_8 = White;       // [+1]/8
extern color  mml_clr_p_2_8 = White;       // [+2]/8

extern int    mml_wdth_m_2_8 = 2;        // [-2]/8
extern int    mml_wdth_m_1_8 = 1;        // [-1]/8
extern int    mml_wdth_0_8   = 2;        //  [0]/8
extern int    mml_wdth_1_8   = 1;        //  [1]/8
extern int    mml_wdth_2_8   = 1;        //  [2]/8
extern int    mml_wdth_3_8   = 1;        //  [3]/8
extern int    mml_wdth_4_8   = 2;        //  [4]/8
extern int    mml_wdth_5_8   = 1;        //  [5]/8
extern int    mml_wdth_6_8   = 1;        //  [6]/8
extern int    mml_wdth_7_8   = 1;        //  [7]/8
extern int    mml_wdth_8_8   = 2;        //  [8]/8
extern int    mml_wdth_p_1_8 = 1;        // [+1]/8
extern int    mml_wdth_p_2_8 = 2;        // [+2]/8

extern color  MarkColor   = Blue;
extern int    MarkNumber  = 217;


double  dmml = 0,
        dvtl = 0,
        sum  = 0,
        v1 = 0,
        v2 = 0,
        mn = 0,
        mx = 0,
        x1 = 0,
        x2 = 0,
        x3 = 0,
        x4 = 0,
        x5 = 0,
        x6 = 0,
        y1 = 0,
        y2 = 0,
        y3 = 0,
        y4 = 0,
        y5 = 0,
        y6 = 0,
        octave = 0,
        fractal = 0,
        range   = 0,
        finalH  = 0,
        finalL  = 0,
        mml[13];

string  ln_txt[13],        
        buff_str = "";
        
int     
        bn_Lo   = -1,
        bn_Hi   = -1,
        extr_bn_Lo  = -1,
        extr_bn_Hi  = -1,
        OctLinesCnt = 13,
        mml_thk = 8,
        mml_clr[13],
        mml_wdth[13],
        mml_shft = 35,
        nT = 0,
        nB = 0,
        nP = 0,
        nDigits = 0,
        i = 0;
int NewPeriod=0;
int CurPeriod=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
//---- indicators
   CurPeriod=Period();
   if(MMPeriod>CurPeriod)
      NewPeriod   = P*MathCeil(MMPeriod/CurPeriod);
   else NewPeriod = P;
   
   ln_txt[0]  = "[-2/8]P";// "extremely overshoot [-2/8]";// [-2/8]
   ln_txt[1]  = "[-1/8]P";// "overshoot [-1/8]";// [-1/8]
   ln_txt[2]  = "[0/8]P";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
   ln_txt[3]  = "[1/8]P";// "Weak, Stall and Reverse - [1/8]";// [1/8]
   ln_txt[4]  = "[2/8]P";// "Pivot, Reverse - major [2/8]";// [2/8]
   ln_txt[5]  = "[3/8]P";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
   ln_txt[6]  = "[4/8]P";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
   ln_txt[7]  = "[5/8]P";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
   ln_txt[8]  = "[6/8]P";// "Pivot, Reverse - major [6/8]";// [6/8]
   ln_txt[9]  = "[7/8]P";// "Weak, Stall and Reverse - [7/8]";// [7/8]
   ln_txt[10] = "[8/8]P";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
   ln_txt[11] = "[+1/8]P";// "overshoot [+1/8]";// [+1/8]
   ln_txt[12] = "[+2/8]P";// "extremely overshoot [+2/8]";// [+2/8]

   //mml_shft = 3;
   mml_thk  = 3;

   // Начальная установка цветов уровней октав и толщины линий
   mml_clr[0]  = mml_clr_m_2_8;   mml_wdth[0] = mml_wdth_m_2_8; // [-2]/8
   mml_clr[1]  = mml_clr_m_1_8;   mml_wdth[1] = mml_wdth_m_1_8; // [-1]/8
   mml_clr[2]  = mml_clr_0_8;     mml_wdth[2] = mml_wdth_0_8;   //  [0]/8
   mml_clr[3]  = mml_clr_1_8;     mml_wdth[3] = mml_wdth_1_8;   //  [1]/8
   mml_clr[4]  = mml_clr_2_8;     mml_wdth[4] = mml_wdth_2_8;   //  [2]/8
   mml_clr[5]  = mml_clr_3_8;     mml_wdth[5] = mml_wdth_3_8;   //  [3]/8
   mml_clr[6]  = mml_clr_4_8;     mml_wdth[6] = mml_wdth_4_8;   //  [4]/8
   mml_clr[7]  = mml_clr_5_8;     mml_wdth[7] = mml_wdth_5_8;   //  [5]/8
   mml_clr[8]  = mml_clr_6_8;     mml_wdth[8] = mml_wdth_6_8;   //  [6]/8
   mml_clr[9]  = mml_clr_7_8;     mml_wdth[9] = mml_wdth_7_8;   //  [7]/8
   mml_clr[10] = mml_clr_8_8;     mml_wdth[10]= mml_wdth_8_8;   //  [8]/8
   mml_clr[11] = mml_clr_p_1_8;   mml_wdth[11]= mml_wdth_p_1_8; // [+1]/8
   mml_clr[12] = mml_clr_p_2_8;   mml_wdth[12]= mml_wdth_p_2_8; // [+2]/8
   
   
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
//---- TODO: add your code here
Comment(" ");   
for(i=0;i<OctLinesCnt;i++) {
    buff_str = "mml"+i;
    ObjectDelete(buff_str);
    buff_str = "mml_txt"+i;
    ObjectDelete(buff_str);
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

//=========================================================================
int FindeExtrHi_bn(int n_bg, int n_nd ){

int    ext_bn = -1;
double ext_Hi = -10000000000000000000.0;
int    k = 0;
int    stop_bn = -1;
int    start_bn = -1;
int    cur_bn = n_bg;
    //Print(" FindeExtrHi_bn : n_bg = ", n_bg," n_nd = ", n_nd);
    if(n_bg<n_nd){
       start_bn = n_bg+1;
       stop_bn  = n_nd; 
       //Print(" FindeExtrHi_bn (n_bg<n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for(int j=start_bn;j<stop_bn;j++){
          if( (High[j]>High[j+1])&&(High[j]>High[j-1])&&(High[j]>ext_Hi) ){
             ext_bn = j;
	          ext_Hi = High[j];
	          }
	       }//for(int j=start_bn;j<stop_bn;j++){
       }//if(n_bg<n_nd){


    if(n_bg>n_nd){
       start_bn = n_bg;
       stop_bn  = n_nd+1; 
       //Print(" FindeExtrHi_bn (n_bg>n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for( j=start_bn;j>stop_bn;j--){
          if( (High[j]>High[j+1])&&(High[j]>High[j-1])&&(High[j]>ext_Hi) ){
             ext_bn = j;
	          ext_Hi = High[j];
	          }
          }//for(int j=start_bn;j>stop_bn;j--){
       }//if(n_bg>n_nd){
   
   //Print(" FindeExtrHi_bn:=> ext_bn = ",ext_bn);
   return(ext_bn);
   }

//=========================================================================
int FindeExtrLo_bn(int n_bg, int n_nd ){

int    ext_bn = -1;
double ext_Lo = 10000000000000000000.0;
int    stop_bn = -1;
int    start_bn = -1;
int    cur_bn = n_bg;


    //Print(" FindeExtrLo_bn : n_bg = ", n_bg," n_nd = ", n_nd);

    if(n_bg<n_nd){
       start_bn = n_bg+1;
       stop_bn  = n_nd; 
       //Print(" FindeExtrLo_bn (n_bg<n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for(int j=start_bn;j<stop_bn;j++){
          if( (Low[j]<Low[j+1])&&(Low[j]<Low[j-1])&&(Low[j]<ext_Lo) ){
             ext_bn = j;
	          ext_Lo = Low[j];
	          }
	       }//for(int j=start_bn;j<stop_bn;j++){
       }//if(n_bg<n_nd){


    if(n_bg>n_nd){
       start_bn = n_bg;
       stop_bn  = n_nd+1; 
       //Print(" FindeExtrLo_bn (n_bg>n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for( j=start_bn;j>stop_bn;j--){
          if( (Low[j]<Low[j+1])&&(Low[j]<Low[j-1])&&(Low[j]<ext_Lo) ){
             ext_bn = j;
	          ext_Lo = Low[j];
	          }
          }//for(int j=start_bn;j>stop_bn;j--){
       }//if(n_bg>n_nd){
   //Print(" FindeExtrLo_bn:=> ext_bn = ",ext_bn);
   return(ext_bn);
   }

int start() {
//---- TODO: add your code here

if( (nT!=Time[0])||(nP!=Period())||(nB!=Bars) ) {
   CurPeriod=Period();
   if(MMPeriod>CurPeriod)
      NewPeriod   = P*MathCeil(MMPeriod/CurPeriod);
   else NewPeriod = P;
   
  //price
  //Print("MMLevls : NewPeriod = ",NewPeriod);
   if(OldVersion){
      bn_Lo = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
      bn_Hi = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
   } else {//  if(OldVersion){
      extr_bn_Lo = FindeExtrLo_bn(NewPeriod+StepBack,StepBack);
      extr_bn_Hi = FindeExtrHi_bn(NewPeriod+StepBack,StepBack);
      if(extr_bn_Lo>=0){
         bn_Lo = extr_bn_Lo;
         //Print("MMLevls : 1 bn_Lo = ",bn_Lo);
         for(int k=0;k<1;k++){
            if(Low[k]<Low[extr_bn_Lo]) {
               bn_Lo = k;
               break;
               }
            }
         //Print("MMLevls : 2 bn_Lo = ",bn_Lo);
         } else bn_Lo = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
      if(extr_bn_Hi>=0){
         bn_Hi = extr_bn_Hi;
         for(k=0;k<1;k++){
            if(High[k]>High[extr_bn_Hi]) {//ошибка была здесь
               bn_Hi = k;                // И здесь была описка
               break;
               } 
            }
         } else  bn_Hi = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
      // Пусть будет на всякий случай :).
      if(High[bn_Hi]<Low[bn_Lo]){
         //Print("MM ??? HiLo :High[",bn_Hi,"] = ",High[bn_Hi]," Low",bn_Lo,"] = ",Low[bn_Lo]);
         bn_Lo = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
         bn_Hi = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
         }

      }//} else {//  if(OldVersion){

   //Print("MMLevls : Low[",bn_Lo,"] = ",Low[bn_Lo]," High[",bn_Hi,"] = ",High[bn_Hi]);
 
   v1 = Low[bn_Lo];
   v2 = High[bn_Hi];

//determine fractal.....
   if( v2<=250000 && v2>25000 )
   fractal=100000;
   else
     if( v2<=25000 && v2>2500 )
     fractal=10000;
     else
       if( v2<=2500 && v2>250 )
       fractal=1000;
       else
         if( v2<=250 && v2>25 )
         fractal=100;
         else
           if( v2<=25 && v2>12.5 )
           fractal=12.5;
           else
             if( v2<=12.5 && v2>6.25)
             fractal=12.5;
             else
               if( v2<=6.25 && v2>3.125 )
               fractal=6.25;
               else
                 if( v2<=3.125 && v2>1.5625 )
                 fractal=3.125;
                 else
                   if( v2<=1.5625 && v2>0.390625 )
                   fractal=1.5625;
                   else
                     if( v2<=0.390625 && v2>0)
                     fractal=0.1953125;
      
   range=(v2-v1);
   //Print(" v2 = ",v2," v1 = ",v1," range = ",range );
   sum=MathFloor(MathLog(fractal/range)/MathLog(2));
   octave=fractal*(MathPow(0.5,sum));
   mn=MathFloor(v1/octave)*octave;
   if( (mn+octave)>v2 )
   mx=mn+octave; 
   else
     mx=mn+(2*octave);


// calculating xx
//x2
    if( (v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
    x2=mn+(mx-mn)/2; 
    else x2=0;
//x1
    if( (v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
    x1=mn+(mx-mn)/2; 
    else x1=0;

//x4
    if( (v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
    x4=mn+3*(mx-mn)/4; 
    else x4=0;

//x5
    if( (v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
    x5=mx; 
    else  x5=0;

//x3
    if( (v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
    x3=mn+3*(mx-mn)/4; 
    else x3=0;

//x6
    if( (x1+x2+x3+x4+x5) ==0 )
    x6=mx; 
    else x6=0;

     finalH = x1+x2+x3+x4+x5+x6;
// calculating yy
//y1
    if( x1>0 )
    y1=mn; 
    else y1=0;

//y2
    if( x2>0 )
    y2=mn+(mx-mn)/4; 
    else y2=0;

//y3
    if( x3>0 )
    y3=mn+(mx-mn)/4; 
    else y3=0;

//y4
    if( x4>0 )
    y4=mn+(mx-mn)/2; 
    else y4=0;

//y5
    if( x5>0 )
    y5=mn+(mx-mn)/2; 
    else y5=0;

//y6
    if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) )
    y6=mn; 
    else y6=0;

    finalL = y1+y2+y3+y4+y5+y6;

    for( i=0; i<OctLinesCnt; i++) {
         mml[i] = 0;
         }
         
   dmml = (finalH-finalL)/8;
   //Print("MMLevls : NewPeriod = ",NewPeriod," dmml = ",dmml," finalL = ",finalL);
   mml[0] =(finalL-dmml*2); //-2/8
   for( i=1; i<OctLinesCnt; i++) {
        mml[i] = mml[i-1] + dmml;
        }
   for( i=0; i<OctLinesCnt; i++ ){
        buff_str = "mml"+i;
        if(ObjectFind(buff_str) == -1) {
           ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml[i]);
           ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
           ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
           ObjectSet(buff_str, OBJPROP_WIDTH, mml_wdth[i]);
           ObjectMove(buff_str, 0, Time[0],  mml[i]);
           }
        else {
           ObjectMove(buff_str, 0, Time[0],  mml[i]);
           }
             
        buff_str = "mml_txt"+i;
        if(ObjectFind(buff_str) == -1) {
           ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft);
           ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
           ObjectMove(buff_str, 0, Time[mml_shft],  mml[i]);
           }
        else {
           ObjectMove(buff_str, 0, Time[mml_shft],  mml[i]);
           }
        } // for( i=1; i<=OctLinesCnt; i++ ){

   string buff_str = "LR_LatestCulcBar";
   if(ObjectFind(buff_str) == -1) {
      ObjectCreate(buff_str, OBJ_ARROW,0, Time[StepBack], Low[StepBack]-2*Point );
      ObjectSet(buff_str, OBJPROP_ARROWCODE, MarkNumber);
      ObjectSet(buff_str, OBJPROP_COLOR, MarkColor);
      }
   else {
      ObjectMove(buff_str, 0, Time[StepBack], Low[StepBack]-2*Point );
      }

   nT = Time[0];
   nB = Bars;
   nP = Period();
   }//if( (nT!=Time[0])||(nP!=Period())||(nB!=Bars) ) {
 
//---- End Of Program
  return(0);
  }
//+------------------------------------------------------------------+ 



Bonne chance et bonnes tendances.



 
ZS a trouvé un autre endroit où il y avait une faute de frappe. Vous aviez raison - c'était une erreur technique. Voici le code corrigé :

Le fait de corriger une erreur de plus a vraiment éliminé le problème, car seule la version originale de l'ajout de code au début de start() n'a pas résolu le problème et j'étais sur le point de vous envoyer des citations et des captures d'écran pour reproduire le problème sur votre ordinateur. Mais maintenant ce n'est plus nécessaire car vous avez complètement résolu le problème à en juger par mon observation du dernier code corrigé. Je vais déplacer le nouveau code corrigé vers mon conseiller expert.

Merci beaucoup pour la solution rapide du problème !!!
 
Demax, générateur de méthodes numériques - http://fx.qrz.ru/
Il existe également un logiciel payant de Finware, que je n'ai pas essayé.