Elliot Dalga Teorisine dayalı ticaret stratejisi - sayfa 64

 

Rosh'em'e tamamen katılıyorum. İçeri akış en iyi delta ile, Kapat[] ise rezervuarda biriken hacimle en iyi şekilde ilişkilendirilir. Ancak, bana öyle geliyor ki, Kapat[] deltanın kümülatif toplamı olduğundan, bu iki seri çok yakından ilişkilidir. Bu nedenle, onlar için Hurst katsayıları bir şekilde ilişkili olmalıdır. Ancak, burada benim görüşüme güvenmeye değmez. Söylediğim her şey sadece benim genel anlayışıma dayanıyor. İşte o zaman bu ellerle çalıştığımda daha bilinçli bir görüş oluşturabiliyorum.


Ve yavaş yavaş bu görüşe doğru eğiliyorum. Açıklığa kavuşturulması gereken bir şey kaldı, yani. Diyelim ki, analojiyle tartışarak, Kapat[] rezervuardaki su seviyesidir. Kesin girişi (yağmur, çok sayıda nehir, vb.) ölçme yeteneğimiz yok, ancak girişi seviyeye göre tahmin edeceğiz.

Su seviyesi yükseldiğinde, her şey açıktır - giriş olumlu bir fark olacaktır. Ve kuru bir yaz aylarında gözlemlemeye başlarlarsa ve sonuç olarak seviyenin negatif değerleri değişir. Ne de olsa, seviyedeki bir düşüş, içeri akış olmadığı anlamına gelmez, sadece içeri akmaktan daha fazla aktı. Ortalama giriş, rezervuardan yıllık olarak boşaltılan hacme eşit olmalıdır. Yine, bir döngüsellik ortaya çıkıyor.

Benim durumum için bir giriş olarak metodolojik bir bakış açısıyla neyin daha doğru olduğunu netleştirmek istiyorum:
-Sadece fark
- Modül farkı
- sadece pozitif fark

Sezgisel olarak, asıl şeyin girişi doğru bir şekilde belirlemek olduğunu anlıyorum.

Ayrıca Close[] ve Close[i]-Close[i+1] arasında bir korelasyon olduğundan şüpheliyim. Bir keresinde DSP yöntemlerini kullanarak bulmaya çalıştım (bir test olarak, sinyallerin korelasyonunu ve otokorelasyonunu belirlemek için işlevlerde hata ayıklarken), hesaplamanın sonucu hiçbir şekilde bağlantılı değil. Bu, dalga formuna bakıldığında genellikle çıplak gözle görülebilir. Ancak bunlar DSP yöntemleridir, bu durumda bunları kullanmanın mantıklı olmaması mümkündür.

Ayrıca, orijinal diziyi yalnızca Kapat[i]-Kapat[i+1] ile yeniden oluşturmak mümkün değildir - gerekli bilgiler sadece kaybolur ve Hurst hesaplaması aslında orijinalinden farklı bir diziye göre yapılır. .
 

Benim durumum için bir giriş olarak metodolojik bir bakış açısıyla neyin daha doğru olduğunu netleştirmek istiyorum:
-Sadece fark
- Modül farkı
- sadece pozitif fark

Sezgisel olarak, asıl şeyin girişi doğru bir şekilde belirlemek olduğunu anlıyorum.

Ayrıca Close[] ve Close[i]-Close[i+1] arasında bir korelasyon olduğundan şüpheliyim.
...
Ayrıca, orijinal diziyi yalnızca Kapat[i]-Kapat[i+1] ile yeniden oluşturmak mümkün değildir - gerekli bilgiler sadece kaybolur ve Hurst hesaplaması aslında orijinalinden farklı bir diziye göre yapılır. .


Sadece farkı alırdım. Ve bir şey daha - römorkörü aldı - çok olmadığını söyleme :)

http://forex.kbpauk.ru/showflat.php/Cat/0/Number/120077/an/0/page/0#Post120077
 

Aslında, tamamen farklı yaklaşımlar kullanıyorum. Rastgele serilerin spektral analizi bana çok ilginç bir yön gibi geliyor. Ancak, benim için çok karmaşık. Ve artık benim uzmanlık alanımdan çok uzak.


Ve ben profesyonel bir "dijital" değilim. Üç ay önce, ticarette DSP'nin kullanımını anlatan bir makaleye rastladım. Bana ilginç geldi ve kendim için temel bir dijital filtre seti yapmaya karar verdim. Daha erken olmaz dedi ve bitirdi. Kitapçıya gittim, en kalın iki kitabı seçtim ve satın aldım. Eline gelen ilk kitabın ilk 200 sayfasını okuduktan sonra onu kapadı ve müstehcen ifadeler mırıldanarak iki ciltlik tozlu bir matematiksel analiz yapmak için yukarı tırmandı.

Bitmiş bir ürün satın almamak (bunun için yeterli para var) benim için ilginçti, ancak bu alanı inceleyerek yeni fikirlerin ortaya çıkacağını varsayarak kendiminkini yapmak ilginçti. Ve böylece oldu. 3 ay içinde, ana işten uzaklaşmadan istediğimi elde ettim - DSP'ye dayalı göstergeler ve bir sürü fikir.

Ama mükemmellik sınır tanımıyor... :o))) Profesyonellerle (daha hızlı olacak veya ben kendim ineceğim ama daha sonra) mevcut filtrelerle ilgili bazı incelikleri açıklığa kavuşturmak ve gerçekten uyarlanabilir bir filtre yazmak istiyorum.

Sunduklarına göre - kimse onlara sahip değil, yani uyarlanabilir filtreler yok.

Not: Ve yakında spektrumlara geleceğim :o))))
 

...
Sadece farkı alırdım.
...


Ben de aynı şekilde düşünüyorum. Acı verici bir şekilde doğru veriler elde edilir, peki ... neredeyse doğru.
 
Ve ben profesyonel bir "dijital" değilim
......
- DSP'ye ve bir dizi fikre dayalı göstergeler.
......
Sunduklarına göre - kimse onlara sahip değil, yani uyarlanabilir filtreler yok.
Not: Ve yakında spektrumlara geleceğim :o))))

İşte buradayım, DSP'ye inanıyorum ve "profesyonel bir dijital kamera değil"
Bunu kullanıyorum:
" Dijital filtreleme yöntemleriyle teknik analiz için paket
Keny (Oleg, Krasnoyarsk, Unclekenny@yandex.ru) sayesinde geliştirildi ve
Goodman (Ilya Zyabrev, Moskova, info@goodman.ru)
Test konusunda yardım - Andrey Tsygankov gypsy@mail.ru, Oleg Elizarov TOPpoint@yandex.ru
"OLDUĞU GİBİ" ilkelerine uygun olarak ücretsiz olarak dağıtılır.
Lütfen eserdeki tüm yorum ve hataları yazara bildirin.
ve filtreleri anında nasıl optimize edeceğimiz konusunda henüz gerçekleşmemiş bir fikir var:
Aslında yeni bir şey yok. Bu yüzlerce kez elle yapılır, ancak nasıl otomatikleştirilir? -
FATL SATL (FATL-SATL, FATL SATL CD...) ve parametrelerini uydurmaktan bahsediyorum.
bir spektrum analizörü kullanarak manuel olarak (pakete dahildir).
Spektrum analizi üreten, çıktı periyotları veren bir kütüphaneye ihtiyacımız var.
maksimum sinyal yoğunluğu (zaman serisi). Bu verileri analiz etmek
zaman serisinin farklı parçaları için, harmonik bileşenlerin periyotları, fazları, ağırlıklı birlikteliği (genlikleri) varsayılmaya çalışılabilir (nasıl? Henüz bilmiyorum)
Harmonik bileşenler ne kadar fazla belirlenebilirse, serinin gelişimini tahmin etme olasılığı o kadar yüksek olur. Herşey.
Evet o. Tahmin ve gerçeklik arasında güçlü bir tutarsızlık varsa, bir tepki olduğunu varsayabiliriz.
güçlü haberler için pazar. Bu kadar.

Programcı değil, matematikçi değil. :)
Bu konu açıkça bana göre değil. Bir haftadır ısırıyorum. :(
 
Vladislav , Murray göstergesi hakkında bir sorum var. Bunu uzun zaman önce, Uzman Danışmanımda (en son yeni sürüm) göstergenizi kullanırken, zaman zaman göstergenin yeni sürümünün seviyeleri doğru göstermediği, eski sürümde ise böyle olmadığı günler olduğunu fark ettim. dezavantaj. Ve böyle bir anda bu hatayı aşmak için, sadece doğru hesaplanmış son seviye değerlerini kullanıyorum. Önceden, bunu basitçe MT4 test cihazının bazı kusurlarına bağlamıştım, ancak bugün uzun süredir Uzman Danışmanımda geriye dönük test sırasında gözlemlediğim durum ortaya çıktı (yani, test cihazı olasılığa işaret ederken yanılmadı. böyle bir durumun! :o). Lütfen ekran görüntülerine bakın https://c.mql5.com/mql4/forum/2006/06/Murrey_new_and_old.zip
Tek fark, hesaplama sürümü ayarı olmak üzere alınan iki ekran görüntüsü (OldVersion: true ve false)
Eski versiyonun normal seviyeleri gösterdiği, aynı parametrelere sahip yenisinin bir aksaklık - "yapışkan" Murray seviyeleri aldığı görülebilir. Bu durumu bir şekilde yorumlayabilir misiniz? Göstergenin yeni versiyonundaki "yapışkan" Murray seviyeleri gerçekten sadece teknik bir aksaklık mı yoksa daha derin bir anlamı mı var? Örneğin, bugün en güçlü hareket göz önüne alındığında hiçbir Murray seviyesi mevcut olamaz ve örneğin Pazartesi günü doğru bir şekilde hesaplanıncaya kadar beklemeniz yeterlidir ve piyasaya girmek için bir karar vermeniz mümkün olacak mı? Ve bugün mesela dün girmeye vaktiniz yoksa piyasadan uzak durmak daha mı iyi? Bu konudaki görüşlerinizi duymak isterim.

Not: Ama şimdi, yeni bir çubuğun gelişiyle, yeni sürüm eskisiyle aynı Murray seviyelerini göstermeye başladı. Muhtemelen bu, Murray seviyelerinin hesaplanmasının yeni versiyonundaki bir tür teknik hatadır.

PPS: Birkaç çubuk daha geldi ve hesaplamanın yeni versiyonundaki seviyeler tekrar birbirine yapıştı.
 
Dijital filtreleme yöntemleriyle teknik analiz paketi

Bunu nerede görebilirim?
google sessiz
 
Vladislav , Murray göstergesi hakkında bir sorum var.
................................................................
Not: Ama şimdi, yeni bir çubuğun gelişiyle, yeni sürüm eskisiyle aynı Murray seviyelerini göstermeye başladı. Muhtemelen bu, Murray seviyelerinin hesaplanmasının yeni versiyonundaki bir tür teknik hatadır.

PPS: Birkaç çubuk daha geldi ve hesaplamanın yeni versiyonundaki seviyeler tekrar birbirine yapıştı.


Garip - gözlemleyeceğim - elbette bu olmamalı. Dizilerin başlatılmasına bakmak gerekiyor, kontrol edeceğim.
Aslında bende yok ama ayrı bir gösterge olarak kullanmıyorum - kodu Uzman Danışman'a yeni ekledim.

ZY Yazım hatası olan bir yer daha buldu. Haklıydın - teknik bir hata. İşte düzeltilmiş kod:

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



İyi şanslar ve geçen trendler.



 
ZY Yazım hatası olan bir yer daha buldu. Haklıydın - teknik bir hata. İşte düzeltilmiş kod:

Gerçekten de, başka bir hatayı düzeltmek sorunu çözdü, çünkü yalnızca start()'ın en başında kod eklemenin ilk sürümü sorunu çözmedi ve ben zaten sorunu bilgisayarınızda yeniden oluşturmak için size alıntılar ve ekran görüntüleri gönderecektim. Ama şimdi bu artık gerekli değil, çünkü en son düzeltilmiş kodun çalışmasına ilişkin gözlemlerime göre, sorun sizin tarafınızdan tamamen ortadan kaldırıldı. Yeni düzeltilmiş kodu uzmanıma aktaracağım.

Sorunun hızlı çözümü için çok teşekkür ederiz!
 
Demax, Dijital yöntemlerin üreticisi - http://fx.qrz.ru/
Finvare'den ücretli olanı da var. denemedi
Neden: