Standart göstergeleri yeniden mi çiziyorsunuz?! - sayfa 3

 
Rosh, sadece USDCHF çubuğunun daha sonra başlaması nedeniyle hatanın oluşup oluşmadığını anlamaya çalışıyorum. Bunu takip etmek için MA'yı kaldırdım (sadece engel oluyor) ve ek bir Kapat[1] ve Aç[1] ekledim. Bu, Open[1]'in her zaman doğru olacağı anlamına gelir ve sorun buysa, tutarsızlık Open[1]'de değil Open[0]'da olacaktır. şimdi kontrol ediyorum. Ne kaçırdım?
 
GBPJPY'de yeni bir çubuk göründüğü anda, eski değişmemiş USDCHF grafik verilerine atıfta bulunduğunuzu ve buna göre algoritmanızın çarpık bir şekilde hesapladığını gösteren 2 resim yapıştırdım. Yalnızca bir durumda doğru hesaplar - yerel "grafiğinize" asarsanız - ancak görev tam tersidir.
 
Kabul ediyorum. Ancak, yalnızca Open[1] ile yapılan testlerde hiçbir hata oluşmadığı görülüyorsa. Bu durumda, evet, MT'de hata olmadığından emin olacağım. Biraz suskunluk ya da başka bir şey var.

Ayrıca, zorluk, sınırlamayı aşmanın bir yolunu bulmaktır. Örneğin, USDCHF verileri gelene kadar göstergenin EURUSD üzerinde yeniden çizilmesini önlemek için. şu anda test ediyorum

while(nPos > 1 || (nPos == 1 && Zaman[0] <= iTime("USDCHF", 0, 0)))



Ancak hepsi MT'nin IndicatorCounted'ı nasıl hesapladığına bağlıdır. Kene varış zamanına göre - işe yaramazsa, çubuğun yeniden çizilmesi nedeniyle - işe yarayacaktır. Göreceğiz.

 
Şu anda saat 11-56 Moskova saati veya 9-56 sunucu saati.
Açık[1] EURUSD H1 , 1.2755'e eşittir
Açık[1] USDCHF H1, 1.2443'e eşittir

Frank'e göre Evren'de yeni bir gözetleme çubuğu var, henüz değişen bir şey yok. Algoritmanız ne yapacak?
 
Kabul ediyorum. Ancak, yalnızca Open[1] ile yapılan тестирование hiçbir hata oluşmadığı görülüyorsa. Bu durumda, evet, MT'de hata olmadığından emin olacağım. Biraz suskunluk ya da başka bir şey var.

Ayrıca, zorluk, sınırlamayı aşmanın bir yolunu bulmaktır. Örneğin, USDCHF verileri gelene kadar göstergenin EURUSD üzerinde yeniden boyamasını önlemek için. şu anda test ediyorum

while(nPos > 1 || (nPos == 1 && Zaman[0] <= iTime("USDCHF", 0, 0)))



Ancak hepsi MT'nin IndicatorCounted'ı nasıl hesapladığına bağlıdır. Kene varış zamanına göre - işe yaramazsa, çubuğun yeniden çizilmesi nedeniyle - işe yarayacaktır. Göreceğiz.




Dur dur. Buraya yazıyorsun:
Koddan da görebileceğiniz gibi, gösterge, grafiğe eklendiği para birimine bağlı değildir. Her zaman USDCHF'de çalışır. Göstergeyi iki çizelgeye ekliyoruz, benim durumumda AUDUSD ve EURUSD, ancak bence bu herhangi biri için mümkün. Birkaç günlüğüne ayrılıyoruz. Ve grafiklerin FARKLI olduğunu görüyoruz. aynı gösterge. Gerçek zamanlı. aynı MT. Zorla yeniden çiziyoruz (çıkarıyoruz - takıyoruz) - aynı oluyorlar. Belli bir süre için.

Yani çevrimiçi çalışmadan bahsediyoruz ve şimdi test cihazına atladık. Bunu yapamam.
 
Şu anda saat 11-56 Moskova saati veya 9-56 sunucu saati.
Açık[1] EURUSD H1, 1.2755'e eşittir
Açık[1] USDCHF H1, 1.2443'e eşittir

Frank'e göre Evren'de yeni bir gözetleme çubuğu var, henüz değişen bir şey yok. Algoritmanız ne yapacak?



Evet haklısın. Barın numarasına değil saatine bakmak gerekir.
 

Yani çevrimiçi çalışmadan bahsediyoruz ve şimdi test cihazına atladık. Bunu yapamam.


Test cihazı yok. Sadece çevrimiçi.
 
silindi
 
Sevgili Rosh, aşağıdaki durumun nasıl mümkün olduğunu açıklayabilir misiniz?
İşte düzenlediğiniz gösterge, sadece hangisinin düştüğünü görmek için çubuk listesinin ikinci dosyasının çıktısını yaptım.

//+------------------------------------------------------------------+
//|                                             RedrawIndicators.mq4 |
//|                                                           Satori |
//|                             http://www.metaquotes.ru/forum/7790/ |
//+------------------------------------------------------------------+
#property copyright "Satori"
#property link      "http://www.metaquotes.ru/forum/7790/"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
extern int       BarsCount=0;   //кол-во считаемых баров, если 0 - то все
extern string    Currency1="EURUSD";
extern string    Currency2="GBPUSD";

int handle,handle2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0,Currency1);

   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexLabel(1,Currency2);

   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);

   handle= FileOpen("TestFile.csv",FILE_CSV|FILE_WRITE,';');
   handle2= FileOpen("TestFile2.csv",FILE_CSV|FILE_WRITE,';');
  if(handle<1 || handle2<1 )
   {
    Print("Файл не обнаружен, последняя ошибка ", GetLastError());
    return(false);
   }
   else
   {
   FileWrite (handle,"index",Symbol(),"index",Currency1,"index",Currency2);
   FileWrite (handle2,"index",Currency1,Currency2,Symbol());
   }

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   FileClose(handle);
   FileClose(handle2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int i;
   int test1,test2;
   datetime tt1,tt2,TimeMain;
   BarsCount=MathMin(Bars,(MathMin(iBars(Currency1,Period()),iBars(Currency2,Period()))));
   Print (Bars," ",iBars(Currency1,Period())," ",iBars(Currency2,Period()));
   Print (BarsCount);
   
   for (i=0;i<BarsCount-counted_bars;i++)
      {
       TimeMain=Time[i];
       test1=iBarShift(Currency1,Period(),TimeMain);
       test2=iBarShift(Currency2,Period(),TimeMain);
       
       ExtMapBuffer1[i]=iTime(Currency1,Period(),test1);
       ExtMapBuffer2[i]=iTime(Currency2,Period(),test2);

       ExtMapBuffer3[i]=(ExtMapBuffer1[i]-ExtMapBuffer2[i]);
       tt1=Time[i]-ExtMapBuffer1[i];
       tt2=Time[i]-ExtMapBuffer2[i];
       if (ExtMapBuffer3[i]!=0 || tt1!=0 || tt2!=0) 
         {
         if (FileWrite (handle,
         i,TimeToStr(Time[i]),iBarShift(Currency1,Period(),TimeMain),TimeToStr(ExtMapBuffer1[i]),iBarShift(Currency2,Period(),TimeMain),TimeToStr(ExtMapBuffer2[i])
          )<=0) Print("нифига не пишет!!");
         }
        FileFlush(handle);
        if (FileWrite (handle2,i,
         TimeToStr(iTime(Currency1,Period(),test1)),
         TimeToStr(iTime(Currency2,Period(),test2)),
         TimeToStr(Time[i])
          )<=0) Print("нифига не пишет!!");
        FileFlush(handle2);

      }//----
   return(0);
  }
//+------------------------------------------------------------------+



Alpari (MIG, FIBO) değil, diğer iki DC'nin teklifleri üzerine EURGBP 4H'de çalıştırıyoruz.
Her ikisinde de resim hemen hemen aynı, MIG'e bir örnek göstereceğim.
endeks EURGBP endeksi EURUSD endeksi GBPUSD
15 Ekim 2006 0:00 16 Ekim 2006 23:00 16 29 Ekim 2006 23:00
46 23.10.2006 0:00 47 22.10.2006 23:00 47 22.10.2006 23:00
77 16/10/2006 0:00 78 10/15/2006 23:00 78 10/15/2006 23:00
108 09.10.2006 0:00 109 08.10.2006 23:00 109 08.10.2006 23:00
139 02.10.2006 0:00 139 02.10.2006 0:00 140 01.10.2006 23:00

Örneğin 46-47 bar alın
İkinci dosyada:
45 23.10.2006 4:00 23.10.2006 4:00 23.10.2006 4:00
46 22.10.2006 23:00 22.10.2006 23:00 23.10.2006 0:00
47 22.10.2006 23:00 22.10.2006 23:00 22.10.2006 23:00
48 20.10.2006 20:00 20.10.2006 20:00 20.10.2006 20:00

Her şey yolunda görünüyor... Ama sorun bu değil - 23.10.2006 00:00 barı tarihte üç para birimi için de var! Onlar. grafikte de var, tırnak arşivinde de var.
Ancak, göstergede yok gibi görünüyor.
Ve son olarak, hile - bu çubuğa dikey bir çizgi koymaya çalışırsanız - bir sonrakine geçecektir. :o) Dikey çizgi ile ne kadar vurgulamaya çalışsam da olmuyor.



 
Yapmak için bir resim şeklinde karmaşık olmayacak mısınız? Ekran görüntüsü. Aklınızda sütunları düzenlemek zor.