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

 

Merhaba!

1) Danışmanı derledi

2) Test cihazında başlatıldı.

3) Günlükte üç giriş vardır:

2020.10.25 20:06:08.484 2020.09.24 00:00:00 BULUT testi başladı

2020.10.25 20:06:07.015 TestGenerator: akım yayılımı 7 kullanıldı
2020.10.25 20:05:51.296 Expert CLOUD GBPUSD,M1: başarıyla yüklendi


4) Görselleştirme hala duruyor.

Hangi mantıksal hata yapılırsa yapılsın, örneğin ticaret yapılmayacaktı, ancak testçi çubukları saymaya başlamalıdır. Ve program tıkandı.

Birkaç başka danışman çalıştırmaya çalıştım - hepsi işe yarıyor.

Bunu başlatıyorum - her şey duruyor.

Böyle bir sorunla karşılaşan var mı? Nasıl düzeltilir?

 
Andrey Ilinykh :

Hesaplanan değerleri bir günlüğe veya dosyaya yazarsanız bu nasıl yardımcı olacaktır?

Bir hata bulun, bir algoritma oluşturun.

 
Alexey Viktorov :

Peki, tanjant aracılığıyla hesaplayabilirsiniz. Ve sonsuza kadar, açının kendisine ihtiyacınız yok, bu nedenle teğeti bilmek yeterli.

tanjant, saatte km veya mil başına nokta veya günde bin puandır ve bu hızdır. Grafik boyutu . ve üzerindeki teğet, ordinat ve apsis boyutlarına bağlı bir açıdır. Başlamanız gereken yer burasıdır.

 
Aleksei Stepanenko :

Evet, yine hız elde edilir, sadece birimler: dakika başına puan. Ve hafta sonları ve deliklere gelince, kendim için şunu aldım: grafikte hangi mumlar var, bu zaman aralığı ve ne değil (günler / saatler), o zaman bu yok. Çünkü hafta sonunu hesaba katarsanız ve şu anda fiyat yerindeyse, buradaki hız herhangi bir sebep olmadan gözle görülür şekilde düşecektir. Ama sonra tekrar, her biri kendine :)

Neden hızdan korkuyorsun? Bu sadece tip döküm için bir kuraldır.
Açı algılama fonksiyonunun bir çeşidi olarak:

 struct PointPriceTime
  {
   double             price;
   datetime           time;
                     PointPriceTime( double p, datetime t) { price=p; time=t; };
   void               Set( double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price= 0.0 ; time= 0 ; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[ 9 ]= { PERIOD_M1 , PERIOD_M5 , PERIOD_M15 , PERIOD_M30 , PERIOD_H1 , PERIOD_H4 , PERIOD_D1 , PERIOD_W1 , PERIOD_MN1 };
   int i= 0 ;
   while (i< 9 && SeriesInfoInteger ( _Symbol ,tf[i], SERIES_FIRSTDATE )>p1.time)
      i++;
   if (i== 9 )
     {
       Print ( "Время левой границы вне диапазона исторических данных" );
       return DBL_MAX ;
     }
   int bar1 = iBarShift ( _Symbol ,tf[i],p1.time);
   int bar2 = iBarShift ( _Symbol ,tf[i],p2.time);
   if (bar1==bar2)
       return 0.0 ;
   return atan ((p2.price-p1.price)/((bar1-bar2)* PeriodSeconds (tf[i])* _Point / 60 ))* 180 / M_PI ;
  }

MT5'ten sonra, MT4 ile çalışma hissi çok kötü. Tarihe erişim bir şekilde hadım ediliyor. Keneler konusunda bile sessizim.



Dosyalar:
Angle.mq4  11 kb
iCanvas.mqh  49 kb
 

Lütfen söyleyin, grafikte işlem seviyelerinin açıklamalarının görüntülenmesini programlı olarak kontrol etmek mümkün mü? Bunları MQL4 kullanarak devre dışı bırakmak (ticaret seviyelerini grafikte bırakarak) veya değiştirmek mümkün müdür?


Bazı ticaret seviyelerini görsel olarak vurgulamam ve onlara kendi açıklamamı sağlamam gerekiyor. Bunu yapmak için, işlem seviyelerinin stiliyle eşleşen, ancak renkleri farklı olan yatay çizgiler oluşturuyorum, onlar için bir açıklama (OBJPROP_TEXT) belirledim ve grafikte nesne açıklamalarının görüntüsünü açtım (ChartSetInteger(0, CHART_SHOW_OBJECT_DESCR ,true) ). Aynı zamanda, oluşturduğum açıklama, ekran görüntüsünde gösterilenlerin üzerine bindirilir ve sonuç olarak, birini veya diğerini yapmak imkansızdır.

Terminal tarafından oluşturulan işlem seviyelerinin açıklamalarını bir şekilde devre dışı bırakmak veya değiştirmek mümkün müdür? Bir MQL programından bu açıklamalara erişim var mı?

 
Janis Ozols :

Lütfen söyleyin, grafikte işlem seviyelerinin açıklamalarının görüntülenmesini programlı olarak kontrol etmek mümkün mü? Bunları MQL4 kullanarak devre dışı bırakmak (ticaret seviyelerini grafikte bırakarak) veya değiştirmek mümkün müdür?


Bazı ticaret seviyelerini görsel olarak vurgulamam ve onlara kendi açıklamamı sağlamam gerekiyor. Bunu yapmak için, işlem seviyelerinin stiliyle eşleşen, ancak renkleri farklı olan yatay çizgiler oluşturuyorum, onlar için bir açıklama (OBJPROP_TEXT) belirledim ve grafikte nesne açıklamalarının görüntüsünü açtım (ChartSetInteger(0, CHART_SHOW_OBJECT_DESCR ,true) ). Aynı zamanda, oluşturduğum açıklama, ekran görüntüsünde gösterilenlerin üzerine bindirilir ve sonuç olarak, birini veya diğerini yapmak imkansızdır.

Terminal tarafından oluşturulan işlem seviyelerinin açıklamalarını bir şekilde devre dışı bırakmak veya değiştirmek mümkün müdür? Bir MQL programından bu açıklamalara erişim var mı?

Yapabilir,

işaretini kaldırın.

1

 
Alekseu Fedotov :

Yapabilir,
işaretini kaldırın.

Bu onay kutusu işaretli değilse, işlem seviyeleri (çizgiler) açıklama ile birlikte grafikten kaybolur.

Soruyu sorarken, satırları kaldırmak istemediğim gerçeğine odaklanmaya çalıştım, sadece açıklamalarını değiştirmem veya grafikten kaldırmam gerekiyor (ekran görüntüsünde oklarla gösterilmiştir).

 
Janis Ozols :

Bu onay kutusu işaretli değilse , işlem seviyeleri (çizgiler) açıklama ile birlikte grafikten kaybolur .

Soruyu sorarken, satırları kaldırmak istemediğim gerçeğine odaklanmaya çalıştım, sadece grafikten açıklamalarını değiştirmem veya kaldırmam gerekiyor (ekran görüntüsünde oklarla gösterilmiştir).

Onlara ihtiyacın yok, o mekanlarda kendi çizgilerini yaratıyorsun.

 
Vitaly Muzichenko :

Onlara ihtiyacın yok, kendi hatlarını o mekanlarda yaratıyorsun.

Mevcut seviyelerden sadece bazılarını seçmek ( ekran görüntüsünde gösterilen örnek için - en üstteki ) ve gerisini olduğu gibi bırakmak istiyorum.

Bu seviyelerin açıklamalarına programlı olarak erişmek mümkün değilse, muhtemelen seviyelerin kendilerini kapatmanız ve sonra bunları kendiniz çizmek için terminali yoklamanız, ihtiyacınız olanları farklı bir renkte vurgulamanız ve bir farklı açıklama Ve sonuçta, sadece pozisyon açma seviyeleri değil, aynı zamanda kayıpları durdurun ve ayrıca çekilmesi gereken karları alın.

Belki de ticaret seviyelerinin açıklamasının görüntülenmesini devre dışı bırakmanın (sadece satır bırakarak) veya bunları değiştirmenin daha önemsiz bir yolu var mı?

 

Lütfen bana basit terimlerle söyler misiniz, bu işlevler arasındaki fark nedir?

 //+------------------------------------------------------------------+
int     CountOrder( int Order_Type) 
   {
     int Orders= 0 ;
     for ( int a= OrdersTotal ()- 1 ;a>= 0 ;a--)
    {
     if ( OrderSelect (a, SELECT_BY_POS, MODE_TRADES)== false ) continue ;
     if (OrderSymbol()!= _Symbol ) continue ;
     if (Order_Type == OrderType() || Order_Type == - 1 ) Orders++;
    }
     return Orders;
   }
//+------------------------------------------------------------------+
int CounterOrderTradeType( ENUM_ORDER_TYPE order_type)
  {
   int cnt= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
       if ( OrderSelect (pos,SELECT_BY_POS)== true )
         if (OrderSymbol()== _Symbol )
             if (OrderType()==order_type)
               cnt++;
   return (cnt);
  }
//+------------------------------------------------------------------+