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

 
ascerdfg :
Sağ fare düğmesine nerede basılmalıdır?

Alttaki menüyü getirmek için Ctrl T, Ticaret, Varlıklar, ..... , son Günlük. Günlüğe tıklıyoruz ve kayıtlardan birinin üzerine farenin sağ tuşuna tıklıyoruz ve orada görüntüleniyor

 
Alexey Viktorov :

Nesnenin koordinatlarının maliyetinin ve süresinin sıfıra eşit olması mümkündür. Bunu şu şekilde kontrol edin: Görünen iletişim kutusunda Ctrl+B'ye basın, "Tümü" düğmesini tıklayın ve mevcut nesnelerin listesini görün. Varsa, özellikleri açın ve koordinatları görün.

Hata ayıklamada çalıştırdım, tüm nesneleri oluştururken her şey yolunda

 
ascerdfg :
Sağ fare düğmesine nerede basılmalıdır?

özellikle, Rzhevsky: doğru yere sokmak için fare

 
Maxim Kuznetsov :

özellikle, Rzhevsky: doğru yere sokmak için fare

Daha sonra chessno yazıp bulunduktan sonra derginin arandığı yer ve beğenilen kelime görünümüne tıklanır. ve bir günlük var))))) Ve bu arada, kontrol veya başka bir şey aracılığıyla günlüğe bir çağrı var mı?

 

Tünaydın.

Yeni yerleştirilmiş olanlar da dahil olmak üzere bir nesnenin özelliğini her zaman diğerlerinden daha yüksek olacak şekilde ayarlamak mümkün müdür? Yani nesneler üst üste geldiğinde, istenen nesne asla üst üste binmez mi?

İlk başta, istenen nesneyi her zaman en yüksek değere ayarlayarak OBJPROP_ZORDER özelliğinin yardımcı olabileceğini düşündüm. Ancak pratikte ortaya çıktığı gibi, bu sadece bir tıklamayı yakalamak için bir önceliktir. Görsel olarak, nesne her şeyin üzerinde yükselmez.

Ayrıca pratikte, bir nesne en son çizilirse, görsel olarak diğerlerinden kesinlikle daha yüksek olacağını öğrendim. Yani ya bilmediğim bir özellik ya da grafikte nesne sayısı her değiştiğinde üst üste gelmemesi gereken nesneyi yeniden çizin. Ancak yeniden çizerken bir sorunla karşılaştım - silinen ve yeniden çizilen bir nesnenin titremesi. Nesneyi titremeden güzel bir şekilde yeniden çizmenin veya üst üste binmeyecek hale getirmenin bir yolu var mı?


 
Oleg Remizov :

Tünaydın.

Yeni yerleştirilmiş olanlar da dahil olmak üzere bir nesnenin özelliğini her zaman diğerlerinden daha yüksek olacak şekilde ayarlamak mümkün müdür? Yani nesneler üst üste geldiğinde, istenen nesne asla üst üste binmez mi?

İlk başta, istenen nesneyi her zaman en yüksek değere ayarlayarak OBJPROP_ZORDER özelliğinin yardımcı olabileceğini düşündüm. Ancak pratikte ortaya çıktığı gibi, bu sadece bir tıklamayı yakalamak için bir önceliktir. Görsel olarak, nesne her şeyin üzerinde yükselmez.

Ayrıca pratikte, bir nesne en son çizilirse, görsel olarak diğerlerinden kesinlikle daha yüksek olacağını öğrendim. Yani ya bilmediğim bir özellik ya da grafikte nesne sayısı her değiştiğinde üst üste gelmemesi gereken nesneyi yeniden çizin. Ancak yeniden çizerken bir sorunla karşılaştım - silinen ve yeniden çizilen bir nesnenin titremesi. Nesneyi titremeden güzel bir şekilde yeniden çizmenin veya üst üste binmeyecek hale getirmenin bir yolu var mı?


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

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
Oleg Remizov :

Tünaydın.

Yeni yerleştirilmiş olanlar da dahil olmak üzere bir nesnenin özelliğini her zaman diğerlerinden daha yüksek olacak şekilde ayarlamak mümkün müdür? Yani nesneler üst üste bindiğinde, istenen nesne asla üst üste binmez mi?

İlk başta, istenen nesneyi her zaman en yüksek değere ayarlayarak OBJPROP_ZORDER özelliğinin yardımcı olabileceğini düşündüm. Ancak pratikte ortaya çıktığı gibi, bu sadece bir tıklamayı yakalamak için bir önceliktir. Görsel olarak, nesne her şeyin üzerinde yükselmez.

Ayrıca pratikte, bir nesne en son çizilirse, görsel olarak diğerlerinden kesinlikle daha yüksek olacağını öğrendim. Yani ya bilmediğim bir özellik ya da grafikteki nesne sayısı her değiştiğinde üstte çakışmaması gereken nesneyi yeniden çizin. Ancak yeniden çizerken bir sorunla karşılaştım - silinen ve yeniden çizilen bir nesnenin titremesi. Nesneyi titremeden güzel bir şekilde yeniden çizmenin veya üst üste binmeyecek hale getirmenin bir yolu var mı?


Nesneler dizine göre görüntülenir:

 string    ObjectName ( 
   int     object_index   // номер в списке объектов
   );

görsel olarak ön planda en yüksek indekse sahip nesne olacağını takip eder.

Bu durumdan şu şekilde çıkıyorum:

 string pref= "own" ; //префикс в именах своих объектов
bool CheckOtherObj( string &arrObjOther[]){
   CheckOtherObjDelete(&arrObjOther);
   for ( int i= ObjectsTotal ( 0 ,- 1 ,- 1 )- 1 ; i>= 0 ; i--){
       string name= ObjectName ( 0 ,i,- 1 ,- 1 );
       if ( StringFind (name,pref)>= 0 ) continue ;
       bool add= true ;
       for ( int k= ArraySize (arrObjOther)- 1 ; k>= 0 ; k--){
         if (arrObjOther[k]==name){
            add= false ;
             break ;
         }
      }
       if (add){
         AddToArr(name,arrObjOther);
         return ( true );
      }
   }
   return ( false );
}
void CheckOtherObjDelete( string &arrObjOther[]){
   string arrdel[];
   ArrayFree (arrdel);
   for ( int k= 0 ; k< ArraySize (arrObjOther); k++){
       bool add= true ;
       for ( int i= 0 ; i< ObjectsTotal ( 0 ,- 1 ,- 1 ); i++){
         string n= ObjectName ( 0 ,i,- 1 ,- 1 );
         if ( StringFind (n,pref)>= 0 ) continue ;
         if (n==arrObjOther[k]){
            add= false ;
             break ;  
         }
      }
       if (add) AddToArr(arrObjOther[k],arrdel);
   }
   if ( ArraySize (arrdel)> 0 ){
       string temp[];
       ArrayCopy (temp,arrObjOther);
       ArrayFree (arrObjOther);
       for ( int i= 0 ; i< ArraySize (temp); i++){
         bool add= true ;
         for ( int k= 0 ; k< ArraySize (arrdel); k++){
             if (arrdel[k]==temp[i]){
               add= false ;
               break ;
            }
         }
         if (add)AddToArr(temp[i],arrObjOther);
      }
   }
}
void AddToArr( string value, string &arr[]){
   int s= ArraySize (arr);
   ArrayResize (arr,s+ 1 );
   arr[s]=value;
}


bu durumda, kodumda programda (diğerleri) olmayan bir dizi nesne adı var. Yeni bir başka nesne ortaya çıkar çıkmaz, programın yarattığı tüm nesneleri (kendiminki) siler ve yeniden oluştururum. Bu durumda, nesneleri her zaman nesneler listesinde en yüksek dizine sahip olacak, yani görsel olarak ön planda olacaklar. Ancak, grafikten kaldırılırlarsa, dizinin kontrolsüz bir şekilde büyümemesi için diğer nesnelerin dizisini de her zaman temizlemeniz gerekir.

Nesnelerinizi kontrol etmeniz gerekiyorsa, o zaman daha kolaydır. Sadece nesnelerin indekslerini kontrol etmeniz gerekiyor.

 
Maksym Mudrakov :
Nesneler dizine göre görüntülenir:

görsel olarak ön planda en yüksek indekse sahip nesne olacağını takip eder.

Bu durumdan şu şekilde çıkıyorum:


bu durumda, kodumda programda (diğerleri) olmayan bir dizi nesne adı var. Yeni bir başka nesne ortaya çıkar çıkmaz, programın yarattığı tüm nesneleri (kendiminki) siler ve yeniden oluştururum. Bu durumda, nesneleri her zaman nesneler listesinde en yüksek dizine sahip olacak, yani görsel olarak ön planda olacaklar. Ancak, grafikten kaldırılırlarsa, dizinin kontrolsüz bir şekilde büyümemesi için diğer nesnelerin dizisini de her zaman temizlemeniz gerekir.

Nesnelerinizi kontrol etmeniz gerekiyorsa, o zaman daha kolaydır. Sadece nesnelerin indekslerini kontrol etmeniz gerekiyor.

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

 
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.
 
Merhaba! Nereden başlayacağımı bilmiyorum çünkü bir aylık başarısız aramalardan sonra kafamda korkunç bir karmaşa oluştu. Bu konuya yazmaya karar verdim. Bunu yanlış yerde ele alıyorsam, özür dilerim. Birisi bana bu konunun hangi konuyu açmanın daha iyi olduğunu söyleyebilir mi? Pekala, sorumun özü şudur: Bir uzman veya gösterge veya bir senaryo? Şu anda, Book1.csv dosyasını "MT4 data directory"\MQL4\Files konumunda açan kendi komut dosyamı kullanıyorum. Komut dosyasını çalıştırmadan önce, Chrome tarayıcısını başlatmam, kaynak sayfasına gitmem, bu sayfada bir araç seçmem ve ardından bu araç için görüntülenecek veri türünü seçmem gerekiyor (sayfa adresi değişmezken), görüntüledikten sonra Bu aracın verileri, sınırlı bir fiyat seviyelerinde değerler parametresi içeren bir tablo biçiminde, kaynak sayfasında bulunan tablodan panoya veri kopyalamak için Chrome tarayıcısı için Tablo Yakalama uzantısını kullanıyorum, ardından Excel'i açıyorum ve panodaki verileri Excel sayfasına yapıştırın. Ardından, Excel'de sayısal verileri dönüştürüyorum (sayılardaki virgülleri noktalarla değiştirin) ve csv dosyasını terminalin veri dizinine kaydediyorum. Ve bu eylemleri gerçekleştirdikten sonra betiği çalıştırıyorum. Açıkçası, WebRequest işlevi bu görev için uygun değildir. başlangıçta belirtilen sayfa adresinde veri yok (araç ve veri türü seçildikten sonra görünürler). Size doğru yönü söyleyecek herkese minnettar olacağım (tabii ki bu yönlerden birkaç tane olabilir).