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

 
vladmirad :

Tavsiyen için teşekkürler, bu işlevleri biliyorum.

Ve neden siz de dahil bu kadar çok kişinin mql'de balta gibi yüzenlere cevap verdiğini bilmiyorsunuz. Bilenlerin tavsiyeleri dikkate alınmıyor mu? Senin durumunda, bu tavsiye:

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

Artyom Trishkin , 2020.06.29 00:03

Merhaba.
OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent içindeki grafik durumunu izleyerek başlayın
İhtiyacınız olan birkaç etkinlik var:
CHARTEVENT_OBJECT_CREATE Bir grafik nesnesi oluşturun
CHARTEVENT_OBJECT_CHANGE Özellikler iletişim kutusu aracılığıyla bir grafik nesnesinin özelliklerini değiştirme
CHARTEVENT_OBJECT_DELETE Bir grafik nesnesinin silinmesi
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
OnChartEvent() işleyicisinin tüm parametrelerini günlüğe çıkarın ve grafik nesneleri eklerken/değiştirirken/silinirken değerlerine bakın. Bu size nereye gideceğiniz konusunda yön verecektir.

 
vladmirad :

Tavsiye için teşekkürler, bu işlevleri biliyorum.
Ancak, bir Uzman Danışman tarafından çizelgede bir nesneyi otomatik olarak bulmak ve adı önceden bilinmiyorsa parametrelerini okumak için nasıl kullanılabilirler?
Sonuçta fare ile harita üzerinde bir nesne çizilirken isim sistem tarafından verilmektedir.

Doğal olarak, gerekli tüm nesne verilerinin özellikleri tablosundan Expert Advisor'a manuel olarak girilmesi zor değildir, ancak o zaman otomasyonun bununla ne ilgisi var?
Ancak nesnenin adını danışmana programlı olarak nasıl aktarabilirim, bundan sonra belirttiğiniz tüm işlevler kullanılabilir, hala anlamıyorum...

Yukarıda belirtildiği gibi, grafik olaylarıyla çalışın:

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool applyObject( const string _objName) {
   if ( MessageBox ( "Сохранить параметры объекта \"" + _objName + "\" для эксперта?" , "ObjChange" , MB_YESNO ) == IDYES ) {
    objName = _objName; // Запись имени изменяемого объекта
     // Запись других параметров изменяемого объекта ...
     return true ;
  }
   return false ;
}

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam
) {
//---
   if (id == CHARTEVENT_OBJECT_CREATE || id == CHARTEVENT_OBJECT_DRAG || id == CHARTEVENT_OBJECT_CHANGE ) {
    applyObject(sparam);
  }
}
Dosyalar:
ObjChange.mq5  5 kb
 
Artyom Trishkin :
Merhaba.
OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent içindeki grafik durumunu izleyerek başlayın
İhtiyacınız olan birkaç etkinlik var:
CHARTEVENT_OBJECT_CREATE Bir grafik nesnesi oluşturun
CHARTEVENT_OBJECT_CHANGE Özellikler iletişim kutusu aracılığıyla bir grafik nesnesinin özelliklerini değiştirme
CHARTEVENT_OBJECT_DELETE Bir grafik nesnesinin silinmesi
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
OnChartEvent() işleyicisinin tüm parametrelerini günlüğe çıkarın ve grafik nesneleri eklerken/değiştirirken/silinirken değerlerine bakın. Bu size nereye gideceğiniz konusunda yön verecektir.

Çok teşekkürler, tavsiyenizi zaten aldım!

 
Mihail Matkovskij :

Belirli bir türdeki nesneleri koordinatlarıyla birlikte aşağıdaki gibi bulabilir ve kaydedebilirsiniz:

Herhangi bir veriyi bir dosyaya kaydedebilirsiniz. Ve Expert Advisor'da, ilgili nesneleri ekleyecek ve ardından dosyadaki verileri bunlara yükleyecek bir yükleyici oluşturun. Ama en azından özel göreviniz için kaynak kodunu çizin ve burada yayınlayın.

Pratik yardımın için teşekkürler Michael!
 
Mihail Matkovskij :

Yukarıda belirtildiği gibi, grafik olaylarıyla çalışın:

Mikhail, senin ve @Artyom Trishkin'in yardımı çok yardımcı oldu!

Şimdi, fiyat tablosunun ve bulunan nesnenin, bu durumda trend çizgisinin kesişme noktasının nasıl bulunacağını bulmaya devam ediyor.

Algoritmayı şöyle hayal ediyorum:
1. Eğilim çizgisinin okunan koordinatlarına göre, seçilen TF'nin 1 çubuğu başına eğilim artış katsayısı hesaplanır.
2. Mevcut çubuk üzerindeki trend çizgisinin fiyat koordinatı hesaplanır ve seçilen TF sırasında grafiğin bu noktayı kestiği takip edilir.
3. Gerçekleşirse, bu olayın işlenmesine devam edin, örneğin bir sipariş açın. Değilse, bir sonraki çubuk için prosedür tekrarlanır.

Ama belki de MT4(5)'te bu sistemin özellikleri nedeniyle her şey çok daha kolay çözülüyor?

 
Alexey Viktorov :

Ve neden siz de dahil bu kadar çok kişinin mql'de balta gibi yüzenlere cevap verdiğini bilmiyorsunuz. Bilenlerin tavsiyeleri dikkate alınmıyor mu? Senin durumunda, bu tavsiye:


Sevgili Aleksey, MQL bilgim konusunda kesinlikle haklısın. Ancak bilgili kişilerin tavsiyelerini dinlemediğim konusunda yanılıyorsunuz, çünkü yaptığım ilk şey, seçkin MQL profesyonellerinden biri olarak gördüğüm ve çok iyi tanıdığınız bir kişiyle iletişime geçmek oldu - bu @Artyom Trishkin .

Sorunumu nasıl çözeceğimi hemen anlamamı sağlayan ve nereye gideceğimi görmemi sağlayan onun tavsiyesiydi. Ve @Mihail Matkovskij hayatımı daha da kolaylaştırdı!

 
vladmirad :

Mikhail, senin ve @Artyom Trishkin'in yardımı çok yardımcı oldu!

Şimdi, fiyat tablosunun ve bulunan nesnenin, bu durumda trend çizgisinin kesişme noktasının nasıl bulunacağını bulmaya devam ediyor.

Algoritmayı şöyle hayal ediyorum:
1. Eğilim çizgisinin okunan koordinatlarına göre, seçilen TF'nin 1 çubuğu başına eğilim artış katsayısı hesaplanır.
2. Mevcut çubuk üzerindeki trend çizgisinin fiyat koordinatı hesaplanır ve seçilen TF sırasında grafiğin bu noktayı kestiği takip edilir.
3. Gerçekleşirse, bu olayın işlenmesine devam edin, örneğin bir sipariş açın. Değilse, bir sonraki çubuk için prosedür tekrarlanır.

Ama belki de MT4(5)'te bu sistemin özellikleri nedeniyle her şey çok daha kolay çözülüyor?

Yukarıda söylediğim gibi, üzerine inşa edilecek bir şey olması için kaynağın taslağını çizin. Ayrıca, grafikte nesne verilerinin nasıl alınacağı hakkında zaten biraz bilginiz var. Hiç kimse sizin için her şeyi sıfırdan yapmak istemez. Ve böylece, uzmanın çalışması için eksik olan şey tamamlanabilir ...

 
vladmirad :

Mikhail, senin ve @Artyom Trishkin'in yardımı çok yardımcı oldu!

Şimdi, fiyat tablosunun ve bulunan nesnenin, bu durumda trend çizgisinin kesişme noktasının nasıl bulunacağını bulmaya devam ediyor.

Algoritmayı şöyle hayal ediyorum:
1. Eğilim çizgisinin okunan koordinatlarına göre, seçilen TF'nin 1 çubuğu başına eğilim artış katsayısı hesaplanır.
2. Mevcut çubuk üzerindeki trend çizgisinin fiyat koordinatı hesaplanır ve seçilen TF sırasında grafiğin bu noktayı kestiği takip edilir.
3. Gerçekleşirse, bu olayın işlenmesine devam edin, örneğin bir sipariş açın. Değilse, bir sonraki çubuk için prosedür tekrarlanır.

Ama belki de MT4(5)'te bu sistemin özellikleri nedeniyle her şey çok daha kolay çözülüyor?

Ne bulmak istediğiniz çok açık değil. Herhangi bir çubuktaki fiyat ile trend çizgisinin kesişme noktası? Bunu yapmak için, çubuktaki satırın değerini almak için işlevler vardır. Ama düz bir çizginin denklemini kullanırdım:

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

Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5

Artyom Trishkin , 2020.05.02 12:27

Düz çizgi denklemini kullanın:

 //+------------------------------------------------------------------+
//| Уравнение прямой                                                 |
//+------------------------------------------------------------------+
double EquationDirect( const int left_bar, const double left_price , const int right_bar, const double right_price , const int bar_to_search ) 
  {
   return (right_bar==left_bar ? left_price : (right_price-left_price)/(right_bar-left_bar)*(bar_to_search-left_bar)+left_price);
  }
//+------------------------------------------------------------------+

Soldaki nokta çubuğunun sayısını ve fiyatını belirtin , sağdaki nokta çubuğunun sayısını ve fiyatını belirtin (bu noktalara göre sanal bir çizgi çizilir) ve gerekli çubuğu belirtin.
İşlev, istenen çubuğun fiyatını döndürür.


Gerçek bir nesne gerektirmez.
 
Artyom Trishkin :

..... Bunun için çubuktaki satırın değerini almak için fonksiyonlar vardır. Ama düz bir çizginin denklemini kullanırdım:

.....

Artyom, ama burada daha ayrıntılı olarak lütfen.

Ya önceden çok dikkatli değildim ya da belgeler düzeltildi... Bilmiyorum.

Ama her zaman ObjectGetDouble'ın belirli bir çubuktaki hattın fiyatını döndürdüğünü düşündüm (tam olarak fiyattan bahsediyorum). Sonra doğrulama için küçük bir komut dosyası yazmaya karar verdim ve ne gördüm?

1. Değerin hesaplanması gereken parametrelerde bar numarası yoktur.

2. Mülk tanımlayıcı:

OBJPROP_PRICE

Fiyat koordinatı

çift değiştirici=sabitleme noktası numarası


bu sadece bir bağlantı noktası!

Evet, genel olarak, kodda bu çizgiyi çizersem, o zaman zaten bu noktalara sahibim! Neden onları tanımalıyım? Her neyse, bunun anlamı ne?

Ve bu hattın fiyatının değeri başka bir yerde nasıl alınır?


Anlaşılan bu

prop_modifier

[içinde] Belirtilen özelliğin değiştiricisi. İlk seçenek için varsayılan değiştirici değeri 0'dır. Çoğu özellik bir değiştirici gerektirmez. Fibonacci araçlarındaki ve Andrews Pitchfork grafik nesnesindeki seviye sayısını gösterir. Seviye numaralandırması sıfırdan başlar.

da bir anlamı yok mu? HERHANGİ bir fan hattının bağlantı noktalarını mı arıyorsunuz? Rave. Afedersiniz.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д.  Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов...
 
Сергей Таболин :

Artyom, ama burada daha ayrıntılı olarak lütfen.

Ya önceden çok dikkatli değildim ya da belgeler düzeltildi... Bilmiyorum.

Ama her zaman ObjectGetDouble'ın belirli bir çubuktaki hattın fiyatını döndürdüğünü düşündüm (tam olarak fiyattan bahsediyorum). Sonra doğrulama için küçük bir komut dosyası yazmaya karar verdim ve ne gördüm?

1. Değerin hesaplanması gereken parametrelerde bar numarası yoktur.

2. Mülk tanımlayıcı:

OBJPROP_PRICE

Fiyat koordinatı

çift değiştirici=sabitleme noktası numarası


bu sadece bir bağlantı noktası!

Evet, genel olarak, kodda bu çizgiyi çizersem, o zaman zaten bu noktalara sahibim! Neden onları tanımalıyım? Her neyse, bunun anlamı ne?

Ve bu hattın fiyatının değeri başka bir yerde nasıl alınır?


Anlaşılan bu

prop_modifier

[içinde] Belirtilen özelliğin değiştiricisi. İlk seçenek için varsayılan değiştirici değeri 0'dır. Çoğu özellik bir değiştirici gerektirmez. Fibonacci araçlarındaki ve Andrews Pitchfork grafik nesnesindeki seviye sayısını gösterir. Seviye numaralandırması sıfırdan başlar.

da bir anlamı yok mu? HERHANGİ bir fan hattının bağlantı noktalarını mı arıyorsunuz? Rave. Afedersiniz.

Bu tür nesnelerle nadiren çalıştım. Belirtilen çubuk zamanında trend çizgisi için bu işlev ne döndürür? Kontrol etmek için zamanım yok. Küçük bir senaryoyla bile...

ObjectGetValueByTime()

Документация по MQL5: Графические объекты / ObjectGetValueByTime
Документация по MQL5: Графические объекты / ObjectGetValueByTime
  • www.mql5.com
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду...