Hatalar, hatalar, sorular - sayfa 1868

 

1589 inşa

Hesap/aracı değiştiğinde, göstergede OnTimer'ın, hiç böyle bir ticker olmaması veya GöstergeDelete kullanılmadan piyasa saatine eklenmemesi koşuluyla çalışmayı durdurması nasıl sağlanır?

Belgelerde hata - IndicatorDelete işlevi yok, ChartIndicatorDelete var!

https://www.mql5.com/ru/docs/standardlibrary/cchart/cchartindicatordelete

 bool   IndicatorDelete(
   int             sub_win       // номер подокна
   const string    name         // короткое имя индикатора
   );

durum şu - ekli göstergeyi vadeli işlemlerde çalıştırıyorum. Başka bir komisyoncuya geçiyorum ve grafik kararmasına ve güncellenmemesine rağmen zamanlayıcı işaretlemeye devam ediyor.

aynı zamanda, deinitialization nedenini yazmıyor

REASON_ACCOUNT

6

Hesap ayarlarındaki bir değişiklik nedeniyle başka bir hesap etkinleştirildi veya ticaret sunucusuna yeniden bağlanıldı


 2017.04 . 21 12 : 10 : 31.810 TF through OnTimer (DDM7,M1)    Работаем
2017.04 . 21 12 : 10 : 31.810 TF through OnTimer (DDM7,M1)    Аккаунт = AMPGlobalClearing-Demo-CQG
тут сменили брокера,причины деинициализации нет
2017.04 . 21 12 : 10 : 36.809 TF through OnTimer (DDM7,M1)    Работаем
2017.04 . 21 12 : 10 : 36.809 TF through OnTimer (DDM7,M1)    Аккаунт = FXOpen-MT5
//+------------------------------------------------------------------+
//|                                           TF through OnTimer.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_chart_window
string server;
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   EventKillTimer ();
   Print ( "Причина деинициализации = " ,reason);
   
  }
//+------------------------------------------------------------------+
int OnInit ()
  {
  server= AccountInfoString ( ACCOUNT_SERVER );
   EventSetMillisecondTimer ( 5000 );
   IndicatorSetString ( INDICATOR_SHORTNAME , "name" );
   
//--- indicator buffers mapping
//---
   return ( INIT_SUCCEEDED );
  }  
  
   ////////////
   void OnTimer ()
  {
   Print ( "Работаем" );
   Print ( "Аккаунт = " , AccountInfoString ( ACCOUNT_SERVER ));
//   if ( server!= AccountInfoString ( ACCOUNT_SERVER ) ) ChartIndicatorDelete ( 0 , 0 , "name" );
  }
Документация по MQL5: Стандартная библиотека / Ценовые графики / IndicatorDelete
Документация по MQL5: Стандартная библиотека / Ценовые графики / IndicatorDelete
  • www.mql5.com
Стандартная библиотека / Ценовые графики / IndicatorDelete - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
kaus_bonus :

1589 inşa

OnDeinit çağrılmaz.
 
ne anlamda
fxsaber :
OnDeinit çağrılmaz.

ne anlamda? hiç çağrılmadı mı, yoksa bu kodda mı?

 
kaus_bonus :

1589 inşa

Hesap/aracı değiştiğinde, göstergede OnTimer'ın, hiç böyle bir ticker olmaması veya GöstergeDelete kullanılmadan piyasa saatine eklenmemesi koşuluyla çalışmayı durdurması nasıl sağlanır?

Belgelerde hata - IndicatorDelete işlevi yok, ChartIndicatorDelete var!

https://www.mql5.com/en/docs/standardlibrary/cchart/cchartindicatordelete

durum şu - ekli göstergeyi vadeli işlemlerde çalıştırıyorum. Başka bir komisyoncuya geçiyorum ve grafik kararmasına ve güncellenmemesine rağmen zamanlayıcı işaretlemeye devam ediyor.

deinitialization nedenini yazmazken

REASON_ACCOUNT

6

Hesap ayarlarındaki bir değişiklik nedeniyle başka bir hesap etkinleştirildi veya ticaret sunucusuna yeniden bağlanıldı



Yükleme ve boşaltma göstergeleri

Göstergeler aşağıdaki durumlarda yüklenir:

  • bir grafiğe bir gösterge eklemek;
  • terminalin başlatılması (eğer gösterge, terminalin önceki kapanmasından önce tabloya eklenmişse);
  • bir şablonun yüklenmesi (şablon, grafiğe eklenmiş bir gösterge içeriyorsa);
  • profil değişikliği (gösterge profil tablolarından birine iliştirilmişse);
  • göstergenin iliştirildiği çizelgenin sembolünün ve/veya periyodunun değiştirilmesi;
  • göstergenin başarılı bir şekilde yeniden derlenmesinden sonra, bu gösterge tabloya eklenmişse.
  • göstergenin giriş parametrelerinin değiştirilmesi.

Göstergeler aşağıdaki durumlarda kaldırılır:

  • gösterge tablodan ayrıldığında;
  • terminalin kapatılması (gösterge tabloya eklenmişse);
  • grafiğe bir gösterge eklenmişse bir şablon yüklemek;
  • göstergenin eklendiği tablonun kapatılması;
  • profil değişikliği, gösterge, değiştirilen profilin tablolarından birine iliştirilmişse;
  • göstergenin iliştirildiği çizelgenin sembolünün ve/veya periyodunun değiştirilmesi;
  • göstergenin giriş parametrelerinin değiştirilmesi.


"Hesap değişikliği olmaması" nedenleri, hesap değiştirildiğinde göstergenin boşaltılmadığı ve dolayısıyla ticaret hesabı değiştirildiğinde gösterge için OnDeinit() olmayacağı anlamına gelir.

 
kaus_bonus :

ne anlamda? hiç çağrılmadı mı, yoksa bu kodda mı?

Senin durumunda.
 
Vladimir Karputov :

Yükleme ve boşaltma göstergeleri


Göstergeler aşağıdaki durumlarda kaldırılır:

  • gösterge tablodan ayrıldığında;
  • terminalin kapatılması (gösterge tabloya eklenmişse);
  • grafiğe bir gösterge eklenmişse bir şablon yüklemek;
  • göstergenin eklendiği tablonun kapatılması;
  • profil değişikliği, gösterge, değiştirilen profilin tablolarından birine eklenmişse;
  • göstergenin eklendiği çizelgenin sembolünün ve/veya periyodunun değiştirilmesi;
  • göstergenin giriş parametrelerinin değiştirilmesi.


"Hesap değişikliği olmaması" nedenleri, hesap değiştirildiğinde göstergenin boşaltılmadığı ve dolayısıyla ticaret hesabı değiştirildiğinde gösterge için OnDeinit() olmayacağı anlamına gelir.

Aslında belirttiğim sebep sadece uzmanlar için geçerli.

Коды причины деинициализации эксперта ....

O zaman soru kalır - göstergeyi grafikten radikal bir şekilde çıkarmadan zamanlayıcının çalışmayı durdurması nasıl sağlanır?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
kaus_bonus :

Aslında belirttiğim sebep sadece uzmanlar için geçerli.

O zaman soru kalır - göstergeyi grafikten radikal bir şekilde çıkarmadan zamanlayıcının çalışmayı durdurması nasıl sağlanır?


OnInit() içinde sayımı hatırlayın. Zamanlayıcıda hesap numarasını kontrol edin. Skor değiştiyse, zamanlayıcıdan çıkın.
 
kaus_bonus :

O zaman soru kalır - göstergeyi grafikten radikal bir şekilde çıkarmadan zamanlayıcının çalışmayı durdurması nasıl sağlanır?

ACCOUNT_LOGIN ve ACCOUNT_SERVER kullanın.
 

katılıyorum, çarpık bir karar mı?!

ACCOUNT_LOGIN != ACCOUNT_LOGIN_NEW yaptığımızı, zamanlayıcıyı kapattığımızı ve sonra o hesaba geri döndüğümüzü varsayalım, ne olur? zamanlayıcı tekrar başlamaz, değil mi?

Aynı şekilde göstergelere "hesap değişikliği" sebebini eklemek daha mı kolay yoksa bir konuda yanlış mıyım ve bu bazı zorluklara yol açar mı?

 
kaus_bonus :

katılıyorum, çarpık bir karar mı?!

Bu bir şövalye hareketi!

ACCOUNT_LOGIN != ACCOUNT_LOGIN_NEW yaptığımızı, zamanlayıcıyı kapattığımızı ve sonra o hesaba geri döndüğümüzü varsayalım, ne olur? zamanlayıcı tekrar başlamaz, değil mi?

Hesapta bir değişiklik tespit ettiğinizde yeni özellikleri hatırlayın.

Buradaki prensibe göre (makrolar) küçük bir kütüphane şeklinde düzenleyebilirsiniz. O zaman "çarpık" göze batan bir şey olmayacak.