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

 
Artyom Trishkin :

Yukarıda ne yapacağımı gösterdim. Geliştiriciler tarafından önerilen bir yöntem varsa neden bu kadar uğraşalım?

Ancak, bir nesnenin hangi zaman dilimlerinde gösterilip hangilerinin gösterilmeyeceğini seçmek gerçekten bir soru muydu?

Diyelim ki grafikte bir ticaret paneli var. Sonra manuel olarak nesneler oluşturuyorum (ticaret seviyeleri, dikey çizgiler , dikdörtgenler).

Ve manuel olarak oluşturduğum her şey ticaret panelinde üst üste geliyor. Tüm nesneler aynı zaman dilimindedir.

Ve bu durumda "geliştiricilerin önerdiği yöntem" nasıl yardımcı olacak?

 
Aliaksei Karalkou :
Merhaba.

ATP göstergesini fiyat tablosuna aktarmak istiyorum. Ama tam olarak nasıl olduğunu anlayamıyorum. Bu, aynı dönemin orta çizgisinden volatilitedeki maksimum hareketi gösterecektir. Kodu olan varsa paylaşırsa teşekkür ederim.

https://www.mql5.com/ru/code/23304

Multi_ATR_Bands
Multi_ATR_Bands
  • www.mql5.com
Индикатор Three ATR Bands with multiple selection
 
Artyom Trishkin :

OBJPROP_TIMEFRAMES özelliği:

OBJ_NO_PERIODS - tüm dönemlerde görünmez,

OBJ_ALL_PERIODS - tüm dönemlerde görünür

Teşekkür ederim.

Yöntemin gerçekten işe yaradığı ve çok kompakt olduğu ortaya çıktı.

Artık nesne görsel olarak diğerlerinin üzerinde kalıyor.

 
Maksym Mudrakov :

Ancak, bir nesnenin hangi zaman dilimlerinde gösterilip hangilerinin gösterilmeyeceğini seçmek gerçekten bir soru muydu?

Diyelim ki grafikte bir ticaret paneli var. Sonra manuel olarak nesneler oluşturuyorum (ticaret seviyeleri, dikey çizgiler , dikdörtgenler).

Ve manuel olarak oluşturduğum her şey ticaret panelinde üst üste geliyor. Tüm nesneler aynı zaman dilimindedir.

Ve bu durumda "geliştiricilerin önerdiği yöntem" nasıl yardımcı olacak?

Önerinizi not aldım, ancak nesneyi silip yeniden oluşturduğumda titredi.

Artyom Trishkin'in önerdiği yöntem gerçekten işe yarıyor!

Artık nesnenin yeniden çizilmesi ve titremesi yoktur ve görsel olarak her şeyden önce tutulur.

Bu arada, benim durumumda, bu aynı zamanda açık ve kapalı ticaret işlemlerinden oklarla engellenen bir ticaret panelidir.

Sorunu nasıl çözdüm:

 // Глобальное объявление
int last_tick_objects = 0 ;                 // количество объектов на прошлом тике
// имена графических объектов:
string tp_rctngl = "TP Rectangle" ;
string sl_rctngl = "SL Rectangle" ;
string vol_rctngl = "Volume Rectangle" ;

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   long cid = ChartID ();
   if ( ObjectsTotal () != last_tick_objects)   // количество объектов поменялось
     {
      last_tick_objects = ObjectsTotal();    // запоминаем новое количество объектов
       // выводим на передний план объекты: tp_rctngl, sl_rctngl, vol_rctngl
       if ( ObjectFind (cid, tp_rctngl) > - 1 ) // объект существует
        {
         ObjectSetInteger (cid, tp_rctngl, OBJPROP_TIMEFRAMES , OBJ_NO_PERIODS );   // делаем невидимым на всех таймах
         ObjectSetInteger (cid, tp_rctngl, OBJPROP_TIMEFRAMES , OBJ_ALL_PERIODS ); // делаем видимым на всех таймах
        }
       //---
       if ( ObjectFind (cid, sl_rctngl) > - 1 ) // объект существует
        {
         ObjectSetInteger (cid, sl_rctngl, OBJPROP_TIMEFRAMES , OBJ_NO_PERIODS );   // делаем невидимым на всех таймах
         ObjectSetInteger (cid, sl_rctngl, OBJPROP_TIMEFRAMES , OBJ_ALL_PERIODS ); // делаем видимым на всех таймах
        }
       //---
       if ( ObjectFind (cid, vol_rctngl) > - 1 ) // объект существует
        {
         ObjectSetInteger (cid, vol_rctngl, OBJPROP_TIMEFRAMES , OBJ_NO_PERIODS ); // делаем невидимым на всех таймах
         ObjectSetInteger (cid, vol_rctngl, OBJPROP_TIMEFRAMES , OBJ_ALL_PERIODS ); // делаем видимым на всех таймах
        }
       ChartRedraw (cid); // перерисовка графика для применения изменений
     }
  }
//+------------------------------------------------------------------+
 

Zaman zaman birkaç uzun farklı yeniden hesaplama döngüsü gerçekleştirmesi gereken bir Uzman Danışman yazıyorum (örneğin, her 12, 24, 48 saatte bir). Bu tür her bir yeniden hesaplama, bir çekirdekte (yani, bir iş parçacığında) 1.5-2 saat sürer - ve kendi başına, bu Uzman Danışman tarafından yeni kenelerin işlenmesini ve ticaretini askıya alır.

... bu tür hesaplamalar farklı bir iş parçacığında başka bir Uzman Danışmana devredilebilir ve Uzman Danışmanlar arasında nihai verilerin aktarımı EventChartCustom işlevi ve OnChartEvent olay işleyicisi kullanılarak düzenlenebilir


Ancak piyasada bir EA yayınlayabilmem gerekiyor - bu nedenle yeniden hesaplamaların ve yeniden hesaplamaların tek bir iş parçacığında devredilmesi uygun değil. MQL5'te böyle özel bir Uzman Danışmanı uygulamak için C++'dan iş parçacığı kitaplığının bir analogu veya başka bir seçenek var mı? (Sitedeki arama motoruna "Documentation" filtresiyle "thread" kelimesini girdim ve hiçbir şey yoktu)

 
Oleg Remizov :

Önerinizi not aldım, ancak nesneyi silip yeniden oluşturduğumda titredi.

Artyom Trishkin'in önerdiği yöntem gerçekten işe yarıyor!

Artık nesnenin yeniden çizilmesi ve titremesi yoktur ve görsel olarak her şeyden önce tutulur.

Bu arada, benim durumumda, bu aynı zamanda açık ve kapalı ticaret işlemlerinden oklarla engellenen bir ticaret panelidir.

Sorunu nasıl çözdüm:

gerçek şu ki, silme ve oluşturma çok sık gerçekleştiği için titreme meydana geliyor, yalnızca yeni nesnelerin görünümünü yakalamanız gerekiyor. Yöntem işe yararsa, elbette onu da hizmete alacağım, ancak belgeler böyle yararlı bir özellikten bahsetmediğinden, buna hiç dikkat etmedim.

Yine de, kendi ticaret panelinizi nesneler oluşturan bir üçüncü taraf göstergesiyle birlikte kullanırsanız soru kalır.

 
Maksym Mudrakov :

Ancak, bir nesnenin hangi zaman dilimlerinde gösterilip hangilerinin gösterilmeyeceğini seçmek gerçekten bir soru muydu?

Diyelim ki grafikte bir ticaret paneli var. Sonra manuel olarak nesneler oluşturuyorum (ticaret seviyeleri, dikey çizgiler , dikdörtgenler).

Ve manuel olarak oluşturduğum her şey ticaret panelinde üst üste geliyor. Tüm nesneler aynı zaman dilimindedir.

Ve bu durumda "geliştiricilerin önerdiği yöntem" nasıl yardımcı olacak?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

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

Oleg Remizov , 2020.04.26 14:44

Teşekkür ederim.

Yöntemin gerçekten işe yaradığı ve çok kompakt olduğu ortaya çıktı.

Artık nesne görsel olarak diğerlerinin üzerinde kalıyor.


 
Maksym Mudrakov :

gerçek şu ki, silme ve oluşturma çok sık gerçekleştiği için titreme meydana geliyor, yalnızca yeni nesnelerin görünümünü yakalamanız gerekiyor. Yöntem işe yararsa, elbette onu da hizmete alacağım, ancak belgeler böyle yararlı bir özellikten bahsetmediğinden, buna hiç dikkat etmedim.

Yine de, kendi ticaret panelinizi nesneler oluşturan bir üçüncü taraf göstergesiyle birlikte kullanırsanız soru kalır.

Yöntem, en kabul edilebilir tek yöntem olarak Slava tarafından önerildi. Mesajlarında - profilde - yayınlarda / tüm mesajlarda arama yapabilirsiniz.

Ve evet, aynı durumda tüm nesneleri yeniden yaratma yönteminiz nasıl yardımcı olacak?

 
Artyom Trishkin :

Yöntem, en kabul edilebilir tek yöntem olarak Slava tarafından önerildi. Mesajlarında - profilde - yayınlarda / tüm mesajlarda arama yapabilirsiniz.

Ve evet, aynı durumda tüm nesneleri yeniden yaratma yönteminiz nasıl yardımcı olacak?

Aşağıdakileri yapardım, üçüncü taraf bir göstergeyle, ObjectsTotal()'ı izlemeniz gerekir ve panel nesnemin en yüksek indeksi ObjectsTotal()-1'den küçükse paneli yeniden oluşturun. İlk önce yönteminizi her türlü durumda denemeniz gerekir, ancak şu ana kadar Object Visibility kullanırken daha fazla özgürlük görmüyorum.
 
Artyom Trishkin :

Meta Trader 5'i kuramıyorum