Hatalar, hatalar, sorular - sayfa 541

 
220Volt :

Asılsız olmamak için yukarıda bahsettiğim durumu simüle ettim (alıntı yapamıyorum çünkü alıntıdan çıkamıyorum :)).

M15'te aşağıdaki kodu çalıştırın:

Komut dosyası çalışırken, İnternet'e bağlandı ve bağlantısı kesildi. Çizimlerde sonuç.

Açık. Hadi düzeltelim.
 

Servis masasında mı yoksa kodda bir hata mı var?

Gösterge, kapanış fiyatından kırmızı renkte 5 nokta oluşturmalıdır.

Ancak yalnızca iki arabellek görüntülenir (her şeyi saymasına rağmen) ve kırmızı değil, yeşil (derlemeden sonra siyah).

Lütfen birini kontrol edin, bu kadar saçma olan sadece ben miyim yoksa genel olarak mı? ...


 #define  N       5
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   5
#property indicator_color1 clrRed
#property indicator_color2 clrRed
#property indicator_color3 clrRed
#property indicator_color4 clrRed
#property indicator_color5 clrRed

#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3

#property indicator_type1 DRAW_COLOR_ARROW
#property indicator_type2 DRAW_COLOR_ARROW
#property indicator_type3 DRAW_COLOR_ARROW
#property indicator_type4 DRAW_COLOR_ARROW
#property indicator_type5 DRAW_COLOR_ARROW

//------------------------------------------------------------------    class CClrHist
class CClrHist
{
public :
         double buf[];
        CClrHist() { };
};

CClrHist bufs[N]; // массив буферов

//------------------------------------------------------------------    OnInit
int OnInit ()
{
         for ( int i= 0 ; i<N; i++) SetIndexBuffer (i, bufs[i].buf, INDICATOR_DATA );
         return ( 0 );
}
//------------------------------------------------------------------    OnCalculate
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
         for ( int i= 0 ; i<N; i++) for ( int j=rates_total- 1 ; j>= 0 ; j--)
        {
                bufs[i].buf[j]=close[j];
                bufs[i].buf[j]-=i* 100 * Point ();
        }
         return (rates_total);
}
 
sergeev :

Servis masasında mı yoksa kodda bir hata mı var?

Gösterge, kapanış fiyatından kırmızı renkte 5 nokta oluşturmalıdır.

Ancak yalnızca iki arabellek görüntülenir (her şeyi saymasına rağmen) ve kırmızı değil, yeşil (derlemeden sonra siyah).

Lütfen birini kontrol edin, bu kadar saçma olan sadece ben miyim yoksa genel olarak mı? ...

#property indicator_type1 DRAW_ARROW
#property indicator_type2 DRAW_ARROW
#property indicator_type3 DRAW_ARROW
#property indicator_type4 DRAW_ARROW
#property indicator_type5 DRAW_ARROW
 
masharov :

... standart kitaplıkların başkaları için bir model olarak hizmet etmek için ideal kod olduğuna inanıyorum.

Sadece bu tür kavramlardan bir an önce kurtulmanın arzu edilir olduğunu söyleyebilirim.

Standart kitaplıklara karşı hiçbir şeyim yok, ancak kontrol etmeden "program yazmayı kolaylaştırmak için" başka birinin koduna güvenmek mi? - Uzmanın ilk eskizleri aşamasında olmadığı sürece. Rutin süreçleri hızlandırmak için, tabiri caizse.

 

Günlüğümde sık sık bir mesaj görüyorum: Anormal sonlandırma . Hangi durumlarda böyle bir çatışma olabileceğini fark eden var mı?

Nedeni henüz bulunamadı. Sadece bir süre terminale dokunmazsam veya o anda başka bir program (örneğin Excel) kullanırsam, terminale geri döndüğümde test ettiğim Expert Advisor yanlış çalışmaya başlıyor diyebilirim. . Yani alım satım işlemleri sorunsuz bir şekilde gerçekleştirilir. Sorun sadece ticaret ve bilgi panelleri ile etkileşim halindedir. OnChartEvent ()'i rahatsız ediyor gibi görünüyor. Sanki süreç başka bir şeyle çok meşgulmüş gibi, paneller arasında geçiş yapmak çok yavaşlamaya başlıyor. Ben sonsuz döngüler kullanmıyorum. Ve şu anda işlemci yükü, bir şeyin aktif olarak kullanıldığını göstermiyor. Expert Advisor'ın yeniden derlenmesi yardımcı olur. Yeniden derleme sırasında, görünüşe göre Expert Advisor'ın sıfırlanması gerçekleşmeden önce, günlükte Anormal sonlandırma mesajı görünür. Ardından program başarıyla başlatılır ve her şey saat gibi çalışmaya başlar.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
tol64 :

Günlüğümde sık sık bir mesaj görüyorum: Anormal sonlandırma . Hangi durumlarda böyle bir çatışma olabileceğini fark eden var mı?

Nedeni henüz bulunamadı. Sadece bir süre terminale dokunmazsam veya o anda başka bir program (örneğin Excel) kullanırsam, terminale geri döndüğümde test ettiğim Expert Advisor yanlış çalışmaya başlıyor diyebilirim. . Yani alım satım işlemleri sorunsuz bir şekilde gerçekleştirilir. Sorun sadece ticaret ve bilgi panelleri ile etkileşim halindedir. OnChartEvent ()'i rahatsız ediyor gibi görünüyor. Sanki süreç başka bir şeyle çok meşgulmüş gibi, paneller arasında geçiş yapmak çok yavaşlamaya başlıyor. Ben sonsuz döngüler kullanmıyorum. Ve şu andaki işlemci yükü, bir şeyin aktif olarak kullanıldığını göstermiyor. Expert Advisor'ın yeniden derlenmesi yardımcı olur. Yeniden derleme sırasında, Expert Advisor'ın sıfırlanması gerçekleşmeden önce, günlükte Anormal sonlandırma mesajı görünür. Ardından program başarıyla başlatılır ve her şey saat gibi çalışmaya başlar.

Döngülerde IsStopped() kullanılıyor mu?

Bu tür sorunları burada , burada ve burada okuyoruz . Ayrıca kodda nerede darboğazlar olduğunu da düşünmelisiniz...

Genel olarak anladığım kadarıyla programın "erken" sonlandırılması (grafik/terminal kapatıldığında veya Expert Advisor yeniden derlendiğinde) bu hata oluşuyor ve Expert Advisor belirli işleri yapıyor.

 
Interesting :

Döngülerde IsStopped() kullanılıyor mu?

Bu tür sorunları burada , burada ve burada okuyoruz . Ayrıca kodda nerede darboğazlar olduğunu da düşünmelisiniz...

Genel olarak anladığım kadarıyla programın "erken" sonlandırılması (grafik/terminal kapatıldığında veya Expert Advisor yeniden derlendiğinde) bu hata oluşuyor ve Expert Advisor belirli işleri yapıyor.

Teşekkür ederim. Linkler de aynı durumu gösteriyor. IsStopped () döngülerde hiçbir yerde kullanmıyorum, sadece break , Continue ve return .

IsStopped () ile programı durdurmak arasındaki bağlantıyı henüz görmedim. Sonuçta, program döngüye girerse, başka hiçbir işlem gerçekleşmez. Ya da ben hatalıyım?

Ve ilerisi. Sonuçta, IsStopped (), örneğin terminali kapatmanız veya Uzman Danışmanı tablodan kaldırmanız gibi program yürütmesini zorla durdurmanız gerektiğinde kullanışlıdır. Ve uzmanı kullanmaya devam etmem gerekiyor.

 
tol64 :

Teşekkür ederim. Linkler de aynı durumu gösteriyor. IsStopped () döngülerde hiçbir yerde kullanmıyorum, sadece break , Continue ve return .

IsStopped () ile programı durdurmak arasındaki bağlantıyı henüz görmedim. Sonuçta, program döngüye girerse, başka hiçbir işlem gerçekleşmez. Ya da ben hatalıyım?

Ve ilerisi. Sonuçta, IsStopped (), örneğin terminali kapatmanız veya Uzman Danışmanı tablodan kaldırmanız gibi program yürütmesini zorla durdurmanız gerektiğinde kullanışlıdır. Ve uzmanı kullanmaya devam etmem gerekiyor.

IsStopped (), bu bir hatayla ilgili. Herhangi bir varsayım olmasa bile terminal/uzmanın neden yavaşladığı (yürütme koşulları bilinmiyor, uzman hakkında da hiçbir şey yok).
 
tol64 :

Günlüğümde sık sık bir mesaj görüyorum: Anormal sonlandırma . Hangi durumlarda böyle bir çatışma olabileceğini fark eden var mı?

Nedeni henüz bulunamadı. Sadece bir süre terminale dokunmazsam veya o anda başka bir program (örneğin Excel) kullanırsam, terminale geri döndüğümde test ettiğim Expert Advisor yanlış çalışmaya başlıyor diyebilirim. . Yani alım satım işlemleri sorunsuz bir şekilde gerçekleştirilir. Sorun sadece ticaret ve bilgi panelleri ile etkileşim halindedir. OnChartEvent ()'i rahatsız ediyor gibi görünüyor. Sanki süreç başka bir şeyle çok meşgulmüş gibi, paneller arasında geçiş yapmak çok yavaşlamaya başlıyor. Ben sonsuz döngüler kullanmıyorum. Ve şu andaki işlemci yükü, bir şeyin aktif olarak kullanıldığını göstermiyor. Expert Advisor'ın yeniden derlenmesi yardımcı olur. Yeniden derleme sırasında, görünüşe göre Expert Advisor'ın sıfırlanması gerçekleşmeden önce, günlükte Anormal sonlandırma mesajı görünür. Ardından program başarıyla başlatılır ve her şey saat gibi çalışmaya başlar.

Anormal sonlandırma , programla doğal olmayan bir şekilde, yani çalışma zamanında yeniden derleyerek, programın sonlandırılmasına ve yeniden başlatılmasına neden olan cinsel ilişkiye girdiğiniz anlamına gelir.

Sıfıra bölme işlemine girerseniz veya hesaplama sırasında programı kesintiye uğratırsanız aynısı olur, ancak program bir dönüşte çıktıysa, böyle bir kayıt olmayacaktır. Bu nedenle, programın zorla değil, kendi dönüşünde çıkabilmesi için kontrolü IsStopped olarak ayarlamanız önerilir.

 

Daha sonra eklenmesi planlanıyor mu? bir şeyler:

Grafikte bir pozisyona çift tıklayın Konum kontrol menüsünü getirmek için

Kapatmak için aynı anda birkaç pozisyon seçme

????

Teşekkür ederim.