Çaydanlıktan gelen sorular - sayfa 162

 
Karlson :
DBL _MAX orada olacak.
:-)
 

Sap silinmiş olsa bile devre dışı bırakılan nandle neden döndürülmüyor?

   int        indicator_handle= iCustom (
   NULL ,
   PERIOD_CURRENT ,
   "Examples\\ZigzagColor"
   );
   Print (indicator_handle);
   bool   a= IndicatorRelease (
   indicator_handle //,
   );
   Print (a);
   Print (indicator_handle);

İlk baskı 10, ikincisi doğru, üçüncüsü yine 10. Fişi bir dakikalığına ayarladım - hala 10.

Bence -1 olmalı ( INVALID_HANDLE ). yanlış mı düşünüyorum?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
Silent :

Sap silinmiş olsa bile devre dışı bırakılan nandle neden döndürülmüyor?

İlk baskı 10, ikincisi doğru, üçüncüsü yine 10. Fişi bir dakikalığına ayarladım - hala 10.

Bence -1 olmalı ( INVALID_HANDLE ). yanlış mı düşünüyorum?

Silinen göstergeler fiziksel olarak hemen değil, aynı veya başka bir program tarafından yeniden açıldığında (önbelleğe alma seçeneği) bir duraklamadan sonra (belki birkaç dakika) silinir.

Çoğu durumda, bu uygundur. Sorun, yalnızca büyük bir dizi göstergenin arabellekleri bir döngüde okunursa ortaya çıkabilir (o kadar büyüktür ki, hepsi aynı anda belleğe yerleştirilemez).

// Sadece bu durumda programdaki göstergeleri tamamen serbest bırakmak mantıklıdır.

// IndicatorRelease() işlevinin diğer tüm kullanımları "ırksal olarak yanlıştır", çünkü iş bittiğinde göstergeler zaten serbest bırakılır.

Bu nedenle paradoks: kagbe işlevi işe yaramaz, çünkü önbelleğe alma tüm koşer kullanım durumlarını öldürür.

Bu durumda, Renat bir şekilde "anında serbest bırakma" seçeneği sunma sözünü dile getirdi, ancak görünüşe göre hala çok meşgul. ;)

--

Bu, cevabın ilk kısmı gibi (ki onsuz ikincisi anlaşılmaz olurdu).

Şimdi INVALID_HANDLE hakkında. Anladığım kadarıyla, hem dinamik nesneleri serbest bırakma işlevleri hem de silme işleci, kendi başlarına INVALID_HANDLE değerini işaretçiye atamazlar, yalnızca tutamacın işaret ettiği nesneleri silmekle ilgilenirler. Arıza durumunda INVALID_HANDLE değerlerine sahip işaretçilere yalnızca bellek ayırma işlevleri (yeni operatör dahil) zorla atanır. Bu nedenle, bir işaretçinin geçerliliğini kontrol etmenin doğru yolu, anladığım kadarıyla, kelimenin tam anlamıyla sistem tanıtıcı tablosuna bakan, bir nesne arayan ve nesne bulunursa tanıtıcının türünü döndüren CheckPointer() işlevidir. veya başarısız olursa 0.

Umarım şimdi işaretçilerle (tutamaçlar) çalışmanın mantığı biraz daha netleşmiştir. Örneğinizdeki sonuçlar gibi. Orada her şey doğru: gösterge bir grup erişim nesnesidir, ilk düdükte fiziksel olarak silinmez (bu nedenle, CheckPointer() bile sıfırdan farklı olacaktır), işaretçide INVALID_HANDLE değerini almak için buggy umutlarından bahsetmiyorum bile GöstergeRelease() işlevine geçtikten sonra değişken değere göre .

 

MetaTrader 5'teki Emirler, Pozisyonlar ve İşlemler makalesi, " Her işlem belirli bir siparişe dayanır, ancak bir emir birçok işlem doğurabilir . yürütme ". Örneğin bir pozisyon açmak istersem bunu anladım. 10 lot için, geçmişte birkaç işlem görünebilir. Stratejime göre, aynı yönde 1 ve 2 pozisyon, danışman (MT4'te) açılır diyelim ki 1.0 lot, 3. ve sonra 2.0 lot. MT5'te, tarihteki 1. pozisyonu açarken, örneğin, 2 veya daha fazla işlem. Bir sonrakini açmak isteyen (stratejiye göre, 2. olan), geçmişe doğru koşan danışman, örneğin bunun olacağını görecektir. 3. pozisyon ve yanlış parti ile açılacak. Nedense rahatsız.

Belki birisi bu sorunu nasıl çözeceğini veya bir bağlantı atacağını biliyordur.

 
MetaDriver :

Teşekkürler, ihtiyacın olan şey bu.

// aptallar için nelp tarafından nelp - makalelerde ihtiyacınız olan şey bu.

 

İki farklı zaman dilimi kullanan bir gösterge oluşturmaya çalışıyorum, örneğin M5 (ekranda geçerli) ve H1. Bu farklı zaman dilimleri arasında fiyatlar nasıl senkronize edilir? Örneğin, M5'teki göstergenin geçmiş değerini hesaplarken, fiyatları aynı zamanın H1'inden otomatik olarak pompalamak isteriz (yani, ArraySetAsSeries'den sonraki her iki zaman dilimindeki sıfır çubuğu, OnTick'te olduğu gibi mevcut geçmiş zamana karşılık gelir). ve ekrandaki en son çubuğa değil). Bu mümkün değilse ve çubukların zamanlarını manuel olarak kontrol etmeniz gerekiyorsa, göstergeler için onTick gibi bir tür senkronizasyon işlevi eklemek fena olmaz.

Şimdi test cihazındaki göstergeyi test etmeye çalıştım - harika bir şey. Ve neden geçmişte hesaplanan değerler ekrana kaydedilmiyor?

 
gpwr :

İki farklı zaman dilimi kullanan bir gösterge oluşturmaya çalışıyorum, örneğin M5 (ekranda geçerli) ve H1. Bu farklı zaman dilimleri arasında fiyatlar nasıl senkronize edilir? Örneğin, M5'teki göstergenin geçmiş değerini hesaplarken, fiyatları aynı zamanın H1'inden otomatik olarak pompalamak isteriz (yani, ArraySetAsSeries'den sonraki her iki zaman dilimindeki sıfır çubuğu, OnTick'te olduğu gibi mevcut geçmiş zamana karşılık gelir). ve ekrandaki en son çubuğa değil). Bu mümkün değilse ve çubukların zamanlarını manuel olarak kontrol etmeniz gerekiyorsa, göstergeler için onTick gibi bir tür senkronizasyon işlevi eklemek fena olmaz.

Şimdi test cihazındaki göstergeyi test etmeye çalıştım - harika bir şey. Ve neden geçmişte hesaplanan değerler ekrana kaydedilmiyor?

CopyXXXX() işlevinin aşırı yüklemelerinden birini kullanın

Hata ayıklarken, verilerin hangi yönde kopyalandığını kontrol edin (1'den fazla kopyalanmışsa).

Обращение по начальной дате и количеству требуемых элементов

int    CopyRates (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   datetime          start_time,         // с какой даты
   int               count,             // сколько копируем
   MqlRates          rates_array[]       // массив, куда будут скопированы данные
   );
 
 
Urain :

CopyXXXX() işlevinin aşırı yüklemelerinden birini kullanın

Hata ayıklarken, verilerin hangi yönde kopyalandığını kontrol edin (1'den fazla kopyalanmışsa).

Anladım. Teşekkür ederim.
 

Merhaba!

Güncel dakika çizelgelerinde bir önceki günün max ve min değerlerini çizen indikatörün kodunu söyler misiniz?

TEŞEKKÜR!

 

Uzun zamandır görüşmüyorum =).

Kabul edelim. Zamanda bir nokta var. Örneğin G'07/03/2005 13:48:12'.

Bu süreyi içeren barın (belirli bir dönemin) zamanını nasıl öğrenebilirim?

Şöyle bir fonksiyon olsa iyi olurdu.

datetime УзнатьВремяБараПоВремениПользователя (datetime времяПользователя, ENUM_TIMEFRAMES периодБаров) 

... Ve böylece o anda işlem olmazsa negatif bir değer döndürür.

Pekala, hıyar, böyle bir işlev var mı?