MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 969

 
Vladimir Baskakov :

Teşekkürler, çalışıyor, yalnızca bir koşul karşılandı:

Ve ihtiyacım var

Ve nedense onunla pozisyon açmıyor

 int barfrup_1 = GetLastFractals( 1 ,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+ 1 ,MODE_UPPER);
int barfrdn_1 = GetLastFractals( 1 ,MODE_LOWER);
int barfrdn_2 = GetLastFractals(barfrdn_1+ 1 ,MODE_LOWER);

if (High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] < Low[barfrdn_2] )
if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] > Low[barfrdn_2] )
 
Igor Makanu :

Çalışıyor ama şarta göre değil istediği yerde pozisyon açıyor tamam

 
Vladimir Baskakov :

Çalışıyor ama şarta göre değil istediği yerde pozisyon açıyor tamam

olamaz, kodum basit, fraktal, ZigZag gibi, sadece okların olduğu çubuklarda önemlidir, döngüde ok görünene kadar gösterge değerlerinden geçiyoruz ve döngüden çıkıyoruz, geri dönüyoruz fraktalın bulunduğu çubuğun numarası

Kısa bir süre önce fraktallar hakkında bir Uzman Danışman yaptım - kod kontrol edildi ve test sırasında ortaya çıkan, 1 numaralı çubuktaki fraktalın yeniden çizilebileceği - test cihazının görselleştirme modunu açın ve fraktal göstergeyi ekleyin

 
Igor Makanu :

olamaz, kodum basit, fraktal, ZigZag gibi, sadece okların olduğu çubuklarda önemlidir, döngüde ok görünene kadar gösterge değerlerinden geçiyoruz ve döngüden çıkıyoruz, geri dönüyoruz fraktalın bulunduğu çubuğun numarası

Kısa bir süre önce fraktallar hakkında bir Uzman Danışman yaptım - kod kontrol edildi ve test sırasında ortaya çıkan, 1 numaralı çubuktaki fraktalın yeniden çizilebileceği - test cihazının görselleştirme modunu açın ve fraktal göstergeyi ekleyin

Belki sonuç 0 veya boş değer için kontrol edilmelidir.
 
Aleksei Beliakov :
Belki sonuç 0 veya boş değer için kontrol edilmelidir.

boş değerlerde 0 var, öyle görünüyor ki sıfır, _Point ile karşılaştırmanın en iyi yolu değil

her şey çalışıyor, kanıtlamak istemiyorum, ancak fraktal göstergenin değerlerini yüklemek bu kod bölümünü kullanarak çalışmalı

Not: bir kez daha, nedense, kodumu tartışıyorum .... kod ne kadar çok çalışırsa, diğer katılımcıların kodunu göremiyorum, sonunda kimin ihtiyacı olduğu belli değil mi? ))))


Not: Kontrol ettim, çünkü sorunun dinlenmeyeceğini biliyorum, her şey çalışıyor, kod hızlı:

 #property copyright "IgorM"
#property link        "https://www.mql5.com/ru/users/igorm"
#property version    "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots    2
//--- plot Label1
#property indicator_label1    "Label1"
#property indicator_type1    DRAW_ARROW
#property indicator_color1    clrRed
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- plot Label2
#property indicator_label2    "Label2"
#property indicator_type2    DRAW_ARROW
#property indicator_color2    clrBlue
#property indicator_style2    STYLE_SOLID
#property indicator_width2    1
//--- indicator buffers
double          Label1Buffer[];
double          Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer);
   SetIndexBuffer ( 1 ,Label2Buffer);
   SetIndexArrow( 0 ,SYMBOL_ARROWUP);
   SetIndexArrow( 1 ,SYMBOL_ARROWDOWN);
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//--
   static int limit= 0 ;   
   if (limit>= 10 ) return (rates_total);
   int b_up = 0 , b_dn = 0 ;
   while (limit<= 10 )
     {
      b_up = GetLastFractals(b_up,MODE_UPPER);
      Label1Buffer[b_up] = high[b_up];
      b_up++;
      b_dn = GetLastFractals(b_dn,MODE_LOWER);
      Label2Buffer[b_dn] = low[b_dn];
      b_dn++;
      limit++;
      }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//_______________________________________________________________________
int GetLastFractals( int bar, int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while (i< Bars && iFractals ( NULL , 0 ,mode,i)< _Point ) i++;
   return (i);
  }
//_______________________________________________________________________

sonuç


 
Artyom Trishkin :

Gösterge arabellekleri için ArraySetAsSeries(true).

Yaptı. kılavuza göre yaptım
 
Igor Makanu :

olamaz, kodum basit, fraktal, ZigZag gibi, sadece okların olduğu çubuklarda önemlidir, döngüde ok görünene kadar gösterge değerlerinden geçiyoruz ve döngüden çıkıyoruz, geri dönüyoruz fraktalın bulunduğu çubuğun numarası

Kısa bir süre önce fraktallar hakkında bir Uzman Danışman yaptım - kod kontrol edildi ve test sırasında 1 numaralı çubuktaki fraktalın yeniden çizilebileceği ortaya çıktı - test cihazının görselleştirme modunu açın ve fraktasen göstergesini ekleyin.

Hayır, benim için pozisyon açar. Beklendiği gibi, üçüncü çubukta bir fraktal var. Ama daha da kötüsü. Durumuma göre (fr1_up<fr_2 && fr1_down>fr2_down) bulamıyor. Sonuç olarak, iki fraktal tarafından bulduğumuz fiyatların sıkıştırılmasıdır.
 

anladım gibi görünüyor!

999

Dosyalar:
IgorM.mq5  17 kb
 
Aleksandr Klapatyuk :

anladım gibi görünüyor!

Tam olarak ne?
 
Vladimir Baskakov :
Tam olarak ne?

Nesne adı iFractal'lar arasında hareket eder