eine Handelsstrategie auf der Grundlage der Elliott-Wellen-Theorie - Seite 64

 
<br/ translate="no"> Ich stimme mit Rosh völlig überein. Der Zufluss wird am besten mit dem Delta in Verbindung gebracht, und Close[] mit dem im Reservoir angesammelten Volumen. Mir scheint jedoch, dass die beiden Reihen sehr eng miteinander verbunden sind, da Close[] die kumulierte Summe des Deltas ist. Daher müssen die Hurst-Koeffizienten für sie irgendwie korrelieren. Aber Sie sollten sich nicht auf meine Meinung verlassen. Alles, was ich sage, beruht nur auf meinem allgemeinen Verständnis. Wenn ich mit meinen Händen arbeite, werde ich mir eine fundiertere Meinung bilden können.


Und ich neige allmählich zu dieser Ansicht. Es bleibt noch etwas zu klären, nämlich. Angenommen, Close[] ist der Wasserstand in einem Stausee. Wir haben keine Möglichkeit, den genauen Zufluss zu messen (Niederschläge, zahlreiche Flüsse usw.), sondern werden den Zufluss anhand des Pegels schätzen.

Wenn der Wasserstand steigt, ist alles klar - der Zufluss wird eine positive Differenz sein. Aber wenn wir die Beobachtung in einem trockenen Sommer begonnen haben und als Folge - negative Werte der Veränderung des Niveaus. Denn ein Rückgang des Pegels bedeutet nicht, dass es keinen Zufluss gegeben hat, sondern nur, dass mehr abgeflossen als zugeflossen ist. Der durchschnittliche Zufluss sollte der Menge entsprechen, die jedes Jahr aus dem Stausee abgelassen wird. Auch hier kommt eine gewisse Zyklizität zum Tragen.

Ich möchte klären, was in meinem Fall methodisch korrekt als Zufluss zu werten ist:
- Nur die Differenz
- Nur die Differenz modulo
- Nur die positive Differenz

Intuitiv verstehe ich, dass es in erster Linie darum geht, den Zufluss korrekt zu bestimmen.

Ich bezweifle auch, dass es eine Korrelation zwischen Close[] und Close[i]-Close[i+1] gibt. Ich habe einmal versucht, es mit DSP-Methoden zu finden (als Test, war ich Debugging-Funktionen, um die Korrelation und Autokorrelation von Signalen zu der Zeit zu bestimmen), die Berechnung Ergebnis - nicht in irgendeiner Weise verwandt. Dies ist in der Regel mit bloßem Auge zu erkennen, wenn man die Form des Signals betrachtet. Da es sich hierbei jedoch um DSP-Methoden handelt, ist es vielleicht nicht logisch, sie in diesem Fall zu verwenden.

Auch kann man die ursprüngliche Reihe nicht allein durch Close[i]-Close[i+1] rekonstruieren - die notwendigen Informationen gehen einfach verloren, und die Hearst-Berechnung wird in der Tat von einer anderen Reihe als der ursprünglichen durchgeführt.
 
<br / translate="no"> Ich würde gerne klären, was in meinem Fall methodisch korrekt als Zufluss zu werten ist:
-Unterschied nur
- Modulodifferenz
- einziger positiver Unterschied

Intuitiv verstehe ich, dass es vor allem darum geht, den Zufluss korrekt zu bestimmen.

Ich bezweifle auch, dass es eine Korrelation zwischen Close[] und Close[i]-Close[i+1] gibt.
...
Auch kann man die ursprüngliche Reihe nicht allein durch Close[i]-Close[i+1] rekonstruieren - die notwendigen Informationen gehen einfach verloren, und die Hearst-Berechnung wird in der Tat von einer anderen Reihe als der ursprünglichen durchgeführt.


Ich würde nur den Differenzbetrag nehmen. Und wenn Sie einen guten Grund haben, sagen Sie nicht, dass Sie ihn nicht verwenden können :)

http://forex.kbpauk.ru/showflat.php/Cat/0/Number/120077/an/0/page/0#Post120077
 
<br/ translate="no"> In der Tat verwende ich ganz andere Ansätze. Obwohl die Spektralanalyse von Zufallsreihen meines Erachtens eine sehr interessante Richtung ist. Aber zu kompliziert für mich. Und zu weit weg von meinem Fachgebiet, um es jetzt zu nehmen.


Und ich bin kein professioneller "Digitalisierer". Vor drei Monaten bin ich auf einen Artikel gestoßen, in dem der Einsatz von DSP im Handel gelobt wurde. Ich fand das interessant und beschloss, einen einfachen Satz digitaler Filter zu entwickeln. Nun, es war geschafft. Ich ging in eine Buchhandlung, wählte die zwei dicksten Bücher aus und kaufte sie. Nachdem ich die ersten 200 Seiten des ersten Buches gelesen hatte, klappte ich es zu und holte unter Schimpfworten das verstaubte zweibändige Buch der Mathematik hervor.

Ich war daran interessiert, nicht ein fertiges Produkt zu kaufen (ich habe genug Geld dafür), sondern meine eigenen zu machen, in der Annahme, dass die Studie von diesem Bereich - neue Ideen erscheinen wird. Und so geschah es. Innerhalb von 3 Monaten, ohne jegliche Ablenkung, bekam ich, was ich wollte - DSP-basierte Indikatoren und eine Menge Ideen.

Aber Perfektion kennt keine Grenzen....) :о))) Ich möchte Fachleute bitten (es geht schneller, oder ich hole es mir selbst, aber später), einige Spezifikationen der vorhandenen Filter zu definieren und wirklich adaptive Filter zu schreiben.

Von dem, was angeboten wird - niemand hat sie, ich meine keine adaptiven Filter.

PS: Und ich werde bald zu spectra kommen :o))))
 
<br / translate="no"> ...
Ich würde nur den Differenzbetrag nehmen.
...


Ich denke dasselbe. Es sind eine Menge richtiger Daten, na ja ... fast richtig.
 
Und ich bin kein professioneller "Digitalisierer"<br/ translate="no"> ......
- DSP-basierte Indikatoren und eine Reihe von Ideen.
......
Von dem, was angeboten wird - niemand hat sie, ich meine keine adaptiven Filter.
PS: Und ich werde bald zu spectra kommen :o))))

Hier bin ich, ich glaube an DSP und "kein professioneller "Digitalisierer""
Ich benutze das:
"Package for technical analysis by digital filtering methods"
Entwickelt dank Keny (Oleg, Krasnoyarsk, unclekenny@yandex.ru) und
Goodman (Zyabrev Ilya, Moskau, info@goodman.ru)
Hilfe beim Testen - Tsygankov Andrey gypsy@mail.ru, Elizarov Oleg TOPpoint@yandex.ru
Kostenlos verteilt nach "AS-IS" Prinzipien.
Bitte informieren Sie den Autor über alle Anmerkungen und Fehler."
und es gibt eine unrealisierte Idee, wie man Filter im laufenden Betrieb optimieren kann:
Es gibt nichts Neues. Dies wurde schon hunderte Male manuell durchgeführt, aber wie kann man es automatisieren? -
Ich spreche von FATL SATL (FATL-SATL, FATL SATL CD ...) und der manuellen Einstellung ihrer Parameter
mit dem Spektrumanalysator (im Paket enthalten).
Es wird eine Bibliothek benötigt, die eine Spektralanalyse durchführt und Perioden mit maximaler Signaldichte (Zeitreihen) von
ausgibt. Wenn man diese Daten
für verschiedene Fragmente von Zeitreihen analysiert, kann man versuchen, Perioden, Phasen, gewichtete Koeffizienten (Amplituden) von harmonischen Komponenten zu erraten (wie? Ich weiß es noch nicht)
Je mehr harmonische Komponenten bestimmt werden können, desto wahrscheinlicher ist es, die Entwicklung von Reihen vorherzusagen. Das ist alles.
Jahe. Wenn die Vorhersage stark von der Realität abweicht, können wir die Reaktion
des Marktes auf starke Nachrichten vermuten. Das ist alles.

Ich bin kein Programmierer und kein Mathematiker. :)
Dieser Zweig übersteigt eindeutig meine Fähigkeiten. Ich kaue jetzt schon seit einer Woche darauf herum. :(
 
Vladislav, ich habe eine Frage zum Murray-Indikator. Ich habe schon vor langer Zeit bemerkt, wenn ich Ihren Indikator in meinem Expert Advisor (die neueste Version) verwende, dass es manchmal Tage gibt, an denen die neue Version des Indikators die Niveaus nicht korrekt anzeigt, während die alte Version keinen solchen Nachteil hat. Um solche Ausfälle in solchen Momenten zu vermeiden, verwende ich einfach die letzten korrekt berechneten Werte. Früher habe ich es auf eine Unvollkommenheit des MT4-Testers zurückgeführt, aber jetzt ist die Situation eingetreten, die ich seit langem in meinem Expert Advisor bei Tests in der Vergangenheit beobachtet habe (d.h. der Tester hat sich nicht geirrt, als er die Möglichkeit einer solchen Situation anzeigte!) Bitte sehen Sie sich die Bildschirmfotos unter https://c.mql5.com/mql4/forum/2006/06/Murrey_new_and_old.zip an.
Zwei Screenshots mit nur einem Unterschied in der Einstellung der Berechnungsversion (OldVersion: true und false)
Sie können sehen, dass die alte Version gewohnte Werte anzeigt, während die neue Version einen Fehler mit den gleichen Parametern anzeigt - "klebrige" Murray-Werte. Können Sie sich zu dieser Situation äußern? Handelt es sich bei den "eingehaltenen" Murray-Levels in der neuen Version des Indikators nur um einen technischen Fehler oder haben sie eine tiefere Bedeutung? Zum Beispiel kann es heute keine Murray-Levels geben, weil die Bewegung am stärksten ist, und wir sollten einfach abwarten, bis sie zum Beispiel am Montag korrekt berechnet werden, und dann können wir entscheiden, in den Markt einzusteigen? Und heute, zum Beispiel, wenn Sie es gestern nicht geschafft haben, einzusteigen, wäre es dann besser, dem Markt fernzubleiben? Ich würde gerne Ihre Meinung zu diesem Thema hören.

PS: Aber jetzt, mit der neuen Leiste, hat die neue Version begonnen, die gleichen Murray-Levels anzuzeigen wie die alte. Wahrscheinlich handelt es sich um einen technischen Fehler in der neuen Version der Berechnung der Murray-Werte.

PPS: Es sind noch ein paar Balken dazugekommen und die Levels sind in der neuen Version wieder zusammengeklebt.
 
Technisches Analysepaket für digitale Filtermethoden

Wo kann ich sie sehen?
Google ist still
 
Vladislav Ich habe eine Frage zum Murray-Indikator.
...............................................
PS: Aber jetzt mit der Ankunft der neuen Bar und die neue Version begann, die gleichen Murray Ebenen wie die alte zeigen. Wahrscheinlich handelt es sich um einen technischen Fehler in der neuen Version der Murray'schen Pegelberechnung.

PPS: Es sind noch ein paar Balken dazugekommen und die Levels sind in der neuen Version wieder zusammengeklebt.


Seltsam - ich werde es im Auge behalten - natürlich sollte es nicht so sein. Ich muss mir die Initialisierung der Arrays ansehen und werde das überprüfen.
Ich habe ihn zwar nicht, aber ich verwende ihn auch nicht als separaten Indikator, sondern habe den Code einfach in den Expert Advisor eingebaut.

HH Ich habe eine weitere Stelle gefunden, an der sich ein Tippfehler eingeschlichen hat. Sie hatten Recht - der Fehler ist technischer Natur. Hier ist der korrigierte Code:

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);
  }
//+------------------------------------------------------------------+ 



Viel Glück und glückliche Trends.



 
ZS hat eine weitere Stelle gefunden, an der sich ein Tippfehler eingeschlichen hat. Sie hatten Recht - es war ein technischer Fehler. Hier ist der korrigierte Code:

Die Behebung eines weiteren Fehlers hat das Problem wirklich beseitigt, da nur die ursprüngliche Version des Hinzufügens von Code am Anfang von start() das Problem nicht gelöst hat, und ich wollte Ihnen gerade Zitate und Screenshots schicken, um das Problem auf Ihrem Computer zu reproduzieren. Aber jetzt ist es nicht mehr nötig, weil Sie das Problem vollständig gelöst haben, wenn ich mir den letzten korrigierten Code ansehe. Ich werde den neuen korrigierten Code in meinen Expert Advisor übernehmen.

Vielen Dank für die schnelle Lösung des Problems!!!
 
Demax, Digitaler Methodengenerator - http://fx.qrz.ru/
Es gibt auch eine kostenpflichtige Version von Finware, die ich nicht ausprobiert habe.
Grund der Beschwerde: