Çaydanlıktan gelen sorular - sayfa 63

 
masharov :

Uzman Danışman, başka bir zaman diliminde bir gösterge kullanır. Danışmandaki testlerde göstergeden yanlış veriler görünüyor.

Danışmanın kendisi M5'te ve gösterge H4'te çalışır. Aynı zaman diliminde (M5) çağrılan göstergeler doğru değerleri döndürür.

Döndürülen değerler, gösterge değerlerine benzer, ancak gösterge fiyat tablosu penceresinde üst üste bindirildiğinde görünen gerçek değerlerden farklıdır.

Sorun nedir?

Örnek bir gösterge çağrı kodu:

Olası nedenler:

- ilk 14 çubuğun kuralına uyulmaz: göstergede https://www.mql5.com/ru/articles/15 ;

- mevcut zaman çerçevesi ile önceden ayarlanmış olan arasındaki korelasyon gözlemlenmiyor (örneğin, başka bir zaman diliminde gerekli ekstremum değere sahip çubuğun seri numarası, büyük olasılıkla önceden belirtilenden farklı olacaktır ve , sonuç olarak, yüksek, düşük vb. Değerler tamamen farklı olacaktır) - tüm bunlar göstergenin özel uygulamasına bağlıdır; farklı dönemlerin oranı ile formüle göre tam olarak ve neyin ilişkilendirilmesi ve yeniden hesaplanması gerektiğini açıkça anlamak gerekir;

- Eski gösterge değerlerinin önceki tick'ten arabellekte kalması mümkündür ve arabelleği boş değerlerle yeniden başlatmak gerekebilir: ArrayInitialize (dizi, EMPTY_VALUE ).

Индикатор от индикатора в MQL5
Индикатор от индикатора в MQL5
  • 2010.02.08
  • MetaQuotes Software Corp.
  • www.mql5.com
При написании индикатора, который использует краткую форму вызова функции OnCalculate(), можно упустить то обстоятельство, что индикатор может рассчитываться не только на ценовых данных, но и на данных другого индикатора (встроенного или пользовательского - не имеет значения). Вы хотите улучшить индикатор, чтобы он правильно считался не только на ценовых данных, но и значениях другого индикатора? В этой статье мы по шагам пройдем все необходимые этапы такой модификации и выведем дополнительные полезные правила для правильного написания индикатора.
 
x100intraday :

Olası nedenler:

- ilk 14 çubuğun kuralına uyulmaz: göstergede https://www.mql5.com/ru/articles/15 ;

- mevcut zaman çerçevesi ile önceden ayarlanmış olan arasındaki korelasyon gözlemlenmiyor (örneğin, başka bir zaman diliminde gerekli ekstremum değere sahip çubuğun seri numarası, büyük olasılıkla önceden belirtilenden farklı olacaktır ve , sonuç olarak, yüksek, düşük vb. Değerler tamamen farklı olacaktır) - tüm bunlar göstergenin özel uygulamasına bağlıdır;

- Bir önceki tikteki eski değerlerin göstergede kalması mümkündür ve arabelleği boş değerlerle yeniden başlatmak gerekebilir: ArrayInitialize (dizi, EMPTY_VALUE ).

1. Fiyat tablosunda, gösterge tüm çubuklara çizilir.

2. analiz etti. Burada her şey yolunda.

3. yardımcı olmadı

 

Yardım, tarih/saatin bu biçimde gösterilmesine izin verildiğini söylüyor :

D'12:00:00'

Datetime türündeki bir değişkene bir değer atarım:

 datetime start = D'12:00:00'

Derleme bir uyarı verir:

Niye ya?

 
Urain :
Tarih belirtilmediği için sadece saat 12 saat 00 dakika 00 saniye gösterilir. Tarih nokta ile yazılır, iki nokta üst üste değil.

Yardım diyor ki:

Tarih (yıl, ay, gün) veya saat (saat, dakika, saniye) veya hepsi birlikte atlanabilir. Değer aralığı 1 Ocak 1970 ile 31 Aralık 3000 arasındadır.

Örnekler:

D'2004.01.01 00:00' // Yeni Yıl
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' //D'1980.07.19 12:00:00' ile eşdeğer
D'01.01.2004' //D'01.01.2004 00:00:00' ile eşdeğer
D'12:30:27' //D'[derleme tarihi] 12:30:27'ye eşdeğer
D'' //D'[derleme tarihi] 00:00:00' ile eşdeğer

...

Yoksa ben mi yanlış anlıyorum?

 
masharov :

Danışmanın kendisi M5'te ve gösterge H4'te çalışır. Aynı zaman diliminde (M5) çağrılan göstergeler doğru değerleri döndürür.

İkinci noktada ısrar etmeye devam ediyorum.

Aynı TF'lerde doğru değerlerin döndürüldüğünü kendiniz yazarsınız. Farklı olanlarda, elbette, mevcut TF için beklenenlerin ötesinde değerler döndürülecektir.

masharov :

Döndürülen değerler, gösterge değerlerine benzer, ancak gösterge fiyat tablosu penceresinde üst üste bindirildiğinde görünen gerçek değerlerden farklıdır.

Benzer değerler muhtemelen tavandan değil, M5'e eşit olmayan TF'lerden birinden geliyor. Mevcut zaman dilimi H4 ise, o zaman M5'ten gelen değerler beklenirken, değerlerin ondan gelmesi muhtemeldir. Kodu M5'ten H4'e yeniden keskinleştirirseniz, büyük olasılıkla, H4'teyken, H4 için doğru olan doğru değerleri yakalayabileceksiniz (diğer TF'ler için yanlış görünecektir).

Gösterge, belirli bir TF'ye göre doğru değerleri döndürebiliyorsa, ancak M5'te H4'te ne yapıldığını gösteremiyorsa, birlikte çalışırken döndürülen değerlerden ne bekleyebiliriz? Yanlış veya TF üzerinde asılı bir Uzman Danışman ile?

 
tol64 :

Yardım diyor ki:

Tarih (yıl, ay, gün) veya saat (saat, dakika, saniye) veya hepsi birlikte atlanabilir. Değer aralığı 1 Ocak 1970 ile 31 Aralık 3000 arasındadır.

Örnekler:

D'2004.01.01 00:00' // Yeni Yıl
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' //D'1980.07.19 12:00:00' ile eşdeğer
D'01.01.2004' //D'01.01.2004 00:00:00' ile eşdeğer
D'12:30:27' //D'[derleme tarihi] 12:30:27'ye eşdeğer
D'' //D'[derleme tarihi] 00:00:00' ile eşdeğer

...

Yoksa ben mi yanlış anlıyorum?

Evet, evet, her şeyi doğru anladınız, aceleye dikkat etmedim.

Görünüşe göre başlangıçta böyleydi, sonra iptal edildi ve sertifika düzeltilmedi.

Her durumda, soru kalır, bu bir yardım hatası mı yoksa bir hata mı?

 

Urain :

...

Her durumda, soru kalır, bu bir yardım hatası mı yoksa bir hata mı?

Komut dosyası örneği:

 void Set_Start_And_End_TradeSession()
{
 datetime start = D'00:45:00' ;
 datetime array[];
 int s = 0 , e = 0 , i = 0 ;
 long chart_ID = ChartID ();
 long count_bars = Bars ( Symbol (), 0 );
 
 CopyTime ( Symbol (), 0 , 0 ,( int )count_bars,array);
 
 ArraySetAsSeries (array, true );
 
 for (s = 0 ; s < count_bars; s++)
   {
     ObjectCreate (chart_ID, "start_date" , OBJ_VLINE , 0 ,array[s], 0 ); ChartRedraw ();
     Sleep ( 50 );
     if (array[s]==start) { Comment ( "Ok!!!" ); break ; }
     if (i==1441) { Comment ( "Error!!!" ); break ; }
    i++;
   }
}
İşte böyle çalışır. Derlemeden sonra uyarı gelmesi hoşuma gitmiyor.)) Belki geliştiricilerden biri yorum yapar.
 
Urain :

Her durumda, soru devam ediyor, bu bir yardım hatası mı yoksa bir hata mı?

Derleyici uyarıları bir hata olduğu anlamına gelmez. Yazdırmaya gönder: her şey Dizine uygun olarak yansıtılır.
 
masharov :

Uzman Danışman, başka bir zaman diliminde bir gösterge kullanır. Danışmandaki testlerde, göstergeden yanlış veriler görünüyor.

Danışmanın kendisi M5'te ve gösterge H4'te çalışır. Aynı zaman diliminde (M5) çağrılan göstergeler doğru değerleri döndürür.

Döndürülen değerler, gösterge değerlerine benzer, ancak gösterge fiyat tablosu penceresinde üst üste bindirildiğinde görünen gerçek değerlerden farklıdır.

Sorun nedir?

Örnek bir gösterge çağrı kodu:

AS_SERIES bayrağı, çok boyutlu diziler ve statik diziler için ayarlanamaz.

Denemek

 void OnNewBar() // моя функция
{
 double wave[];
 ArraySetAsSeries (wave, true );
 CopyBuffer (W_handle, 0 ,( int ) 0 , 2 ,wave);
 if (wave[ 1 ] > 0 ) Buy(); 
}

ya da böyle bir şey

 void OnNewBar() // моя функция
{
 double wave[ 1 ];
 if ( CopyBuffer (W_handle, 0 ,( int ) 1 , 1 ,wave)< 1 ) return ;
 if (wave[ 0 ] > 0 ) Buy(); 
}
 
  string Symb= "EURUSD" ;
  for (i= 0 ;i< OrdersTotal ()+ PositionsTotal ();i++)
     {
      if (Symb== PositionGetSymbol (i)) Orders_Total++;
     }
     Alert (Orders_Total);
Lütfen bana uyarının neden Orders_Total=1 verdiğini söyleyin, aslında bir pozisyon ve bir emir varken, yani. teorik olarak 1 değil 2 çıktı vermelidir