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

 
EVGENII SHELIPOV # :

Günün iyi zamanı.

Günlük fraktalın değerini monitörde değeri veya dikey bir çizgi şeklinde gösteriyorum. Satır görüntülenmiyor ve değer 0.

İşte kodun bir parçası


Bana neyin yanlış olduğunu söyle

Değer 0 olduğu için. Fraktal n-mumlardan sonra oluşur.

 
Vitaly Muzichenko # :

Mevcut tüm geçmiş için bir dizi, buna ihtiyacım yok.

Kelimenin tam anlamıyla 50-100 bara ihtiyaç var

Bunun gibi


Göstergenin amacı nedir? Tabii ki sır değilse) Saati göstermede kesinlikle bir sorun var. Onlar. bu gerçek zamanlı keneler değil, numaralandırılmıştır. Her sayı kendi TF çubuğunda.

 
Valeriy Yastremskiy # :

Göstergenin amacı nedir? Tabii ki sır değilse) Saatin gösterilmesinde kesinlikle bir sorun var. Onlar. bu gerçek zamanlı keneler değil, numaralandırılmıştır. Her sayı kendi TF çubuğunda.

Mesele, açık bir grafikte son keneleri görmek :)

Not * Talep ve Teklif değişikliği

Piyasa İzlemeye göre


 
Tretyakov Rostyslav # :

Değer 0 olduğu için. Fraktal n-mumlardan sonra oluşur.

Yeni ekstremum yoksa ve 0, 1, 2 olan üç çubuktan sonra bir fraktal oluşur.

 double FractalDayUpper = iFractals ( Symbol (), PERIOD_D1 , MODE_UPPER, 2 );
   ObjectCreate ( "signal00" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal00" , OBJPROP_XDISTANCE , 600 );
   ObjectSet( "signal00" , OBJPROP_YDISTANCE , 100 );

Hiçbirşey değişmedi.

Ya da başka bir şey yanlış

 
Vitaly Muzichenko # :

ben yaptım işe yarıyor

---

Bir şey size döngü olmadan yapabileceğinizi söylüyor.

Öyle mi?

MQL'de bildiğim kadarıyla dizi kaydırma işlevi yok gibi görünüyor. Bu, vardiyanın yalnızca bir döngü yardımıyla yapılabileceği anlamına gelir. Sana neden uymuyor?

PS Ek bir dizi pahasına, buna gerek yoktu. Doğru kaydırmayı yaptınız ve teklif değerini doğrudan arabelleğe yazdınız!

 
EVGENII SHELIPOV # :

Günün iyi zamanı.

Günlük fraktalın değerini monitörde değeri veya dikey bir çizgi şeklinde gösteriyorum. Satır görüntülenmiyor ve değer 0.

İşte kodun bir parçası


Bana neyin yanlış olduğunu söyle

Sıfır çubuğundaki fraktalın 0 olmaması gerektiğinden neden eminsiniz? Ne zaman, 0 değil, sadece oradaysa olacaktır!


Tretyakov Rostyslav # :

Değer 0 olduğu için. Fraktal n-mumlardan sonra oluşur.

Ve bu da her zaman olmuyor. Yalnızca n'inci çubuk bir fraktal ise!

 
Vitaly Muzichenko # :

Mesele, açık bir grafikte son keneleri görmek :)

Not * Talep ve Teklif değişikliği

Piyasa İzlemeye göre


Ve hızı ölçmeyi düşündüm)))

 
Vitaly Muzichenko # :

Mesele, açık bir grafikte son keneleri görmek :)

Not * Talep ve Teklif değişikliği

Piyasa İzlemeye göre


ArrayCopy() ne için uygun değil?
Документация по MQL5: Операции с массивами / ArrayCopy
Документация по MQL5: Операции с массивами / ArrayCopy
  • www.mql5.com
ArrayCopy - Операции с массивами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin # :
ArrayCopy() ne için uygun değil?

ArrayCopy, bir diziden diğerine kopyalamak içindir. Ve burada her bir onay işareti eklemeden önce değerleri kaydırmanız gerekir. Bu nedenle, sadece bir döngü yardımıyla çözülür.

 
Artyom Trishkin # :
ArrayCopy() ne için uygun değil?

Nasıl kullanılır, gösterebilir misin?

görev

İşte bitmiş kod, ancak döngü biraz korkutucu

 #property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots    2
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrDodgerBlue
#property indicator_label1    "Bid"
#property indicator_type2    DRAW_LINE
#property indicator_color2    clrRed
#property indicator_label2    "Ask"

double Buffer1[];
double Buffer2[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit ()
{
   SetIndexBuffer ( 0 ,Buffer1);
   ArraySetAsSeries (Buffer1, true );
   SetIndexBuffer ( 1 ,Buffer2);
   ArraySetAsSeries (Buffer2, true );
   ArrayInitialize (Buffer1, EMPTY_VALUE );
   ArrayInitialize (Buffer2, EMPTY_VALUE );
   IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());
   IndicatorSetString ( INDICATOR_SHORTNAME , "Tick:" );
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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[])
{
   int H= 100 ;
   if (prev_calculated== 0 ) {
     ArrayInitialize (Buffer1, EMPTY_VALUE );
     ArrayInitialize (Buffer2, EMPTY_VALUE );
  }
   if (rates_total-prev_calculated== 1 ) {
    Buffer1[H+ 1 ]= EMPTY_VALUE ;
    Buffer2[H+ 1 ]= EMPTY_VALUE ;
  }
   double b= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
   double a= SymbolInfoDouble ( Symbol (), SYMBOL_ASK );
  Buffer1[ 0 ]=b;
  Buffer2[ 0 ]=a;
   for ( int j=H; j> 0 ; j--) {
    Buffer1[j]=Buffer1[j- 1 ];
    Buffer2[j]=Buffer2[j- 1 ];
  }
   return (rates_total);
}
//+------------------------------------------------------------------+

---

Yine, ArrayCopy() içinde bir döngü var ve muhtemelen birden fazla. Bu nedenle, değiştirme kodunun daha kolay ve daha hızlı olması pek olası değildir.