robot oluşturmak - sayfa 7

 
Vladimir M. :
Genellikle OnDeinit'te tutamacı ve hesaplanan kısmı temizlerim ve her şey silinir. Bir nesne bir gösterge değildir.

https://www.mql5.com/ru/docs/chart_operations/chartindicatordelete

" Bir göstergenin bir tablodan kaldırılması, göstergenin hesaplanan bölümünün de terminalin belleğinden silineceği anlamına gelmez. Gösterge tutamağını serbest bırakmak için IndicatorRelease() işlevini kullanın."

Evet Vladimir, zaten yaptım ve daha önce yazdım, ancak sonuç hala aynı.

Saygılarımla, Vladimir.

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

robot oluşturmak

MrBrooklin , 2020.09.28 10:38

İşte bir saatten fazla süredir mücadele ettiğim bir problemin canlı örneği. EA'yı başlatırken oluşturulacak ve grafikte görüntülenecek ZigZagColor göstergesine ihtiyacım vardı. int OnInit'te yapıldı:

   handle_iCustom= iCustom (m_symbol.Name(), Period (), "Examples\\ZigzagColor" ,
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd ( ChartID (), 0 ,handle_iCustom);

Gösterge oluşturuldu ve görüntülendi. Şimdi, danışmanı sildikten sonra, silinecek göstergeye ihtiyacınız var. Yazı:

 void OnDeinit ( const int reason)
  {
//---
   IndicatorRelease (handle_iCustom);
   ObjectsDeleteAll ( 0 , "Examples\\ZigzagColor" );
  }

ve gösterge kaldırılmaz. Görünüşe göre her şeyi raflara da koymuş. Ve khendl temizlendi ve kaldırma işlevi uygulandı. Kaldırılmamasının sebebi nedir?

Saygılarımla, Vladimir.


 
Alekseu Fedotov :

İşlevi kullanarak göstergeyi tablodan kaldırma


bool ChartIndicatorDelete(

uzun chart_id, // grafik kimliği

int alt_pencere // alt pencere numarası

const string gösterge_kısaad // göstergenin kısa adı

);

Teşekkürler Alexey, yarın taze bir zihinle deneyeceğim, aksi takdirde alınan bilgilerden zaten bir karışıklık var. Dedikleri gibi, sabah akşamdan daha akıllıdır!

Şimdi beni çok şaşırtan ve şaşırtan başka bir an var. Vladimir Karputov tarafından geliştirilen bir komut dosyası ile grafiği temizlemeye çalıştım, bu yüzden bu komut dosyası bu özel gösterge ZigzagColor dışında kesinlikle her şeyi kaldırdı !!! Aynı komut dosyasıyla basit bir ZigZag'ı silmeye çalıştım, onu da silmiyor! Gizem...

Saygılarımla, Vladimir.

 
MrBrooklin :

Teşekkürler Alexey, yarın taze bir zihinle deneyeceğim, aksi takdirde alınan bilgilerden zaten bir karışıklık var. Dedikleri gibi, sabah akşamdan daha akıllıdır!

Şimdi beni çok şaşırtan ve şaşırtan başka bir an var. Vladimir Karputov tarafından geliştirilen bir komut dosyası ile grafiği temizlemeye çalıştım, bu yüzden bu komut dosyası bu özel gösterge ZigzagColor dışında kesinlikle her şeyi kaldırdı !!! Aynı komut dosyasıyla basit bir ZigZag'ı silmeye çalıştım, onu da silmiyor! Gizem...

Saygılarımla, Vladimir.

Bu komut dosyasını deneyin


 #property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   int window= ChartWindowFind ( 0 , "ZigzagColor" );
   bool res= ChartIndicatorDelete ( 0 ,window, "ZigzagColor" );
//--- проанализируем результат вызова ChartIndicatorDelete()
   if (!res)
     {
       PrintFormat ( "Не удалось удалить индикатор ZigzagColor с окна #%d. Код ошибки %d" ,
                  window, GetLastError ());
     }
  }


 

kısa isim ZigzagColor - ve varsayılan olarak bu, farklı ayarlarsanız, bu sayıları girmeniz gerekir

 2020.09 . 29 03 : 41 : 36.604 IndicatorDelete (XAUUSD,M30)    ZigZag( 12 , 5 , 3 )

ve aynen böyle, yazman gerekiyor

ZigZag( 12 , 5 , 3 )
 
SanAlex :

kısa isim ZigzagColor - ve varsayılan olarak bu, farklı ayarlarsanız, bu sayıları girmeniz gerekir

ve bu kadar, yazman gerek

yoksa göstergenin kendisini değiştirebilirsiniz - daha basit bir ad belirleyin

 //--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "ZigZag(" +( string )InpDepth+ "," +( string )InpDeviation+ "," +( string )InpBackstep+ ")" );
   PlotIndexSetString ( 0 , PLOT_LABEL , "ZigzagColor" );
//--- set an empty value

öyle gibi

 //--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "ZigZag" );
   PlotIndexSetString ( 0 , PLOT_LABEL , "ZigzagColor" );
//--- set an empty value

-------------------------------------------------- ---

Size senaryoyu zaten gönderdim - ve bu komut dosyasını grafiğe koyarsanız ve göstergenin adını ayarlamazsanız, birden fazla Göstergeyi silmeden çalışır - ancak pencere uzmanlarına hangi Göstergelerin mevcut olduğunu yazar

https://c.mql5.com/3/332/IndicatorDelete.mq5

işte sahip olduklarım

CS       0        03 : 41 : 36.549     IndicatorDelete (XAUUSD,M30)    EWO( 5 , 35 )
DF       0        03 : 41 : 36.604     IndicatorDelete (XAUUSD,M30)    ZigZag( 12 , 5 , 3 )
KR       0        03 : 41 : 36.626     IndicatorDelete (XAUUSD,M30)    LeMan_BrainTrend1Sig
FE       0        03 : 41 : 36.646     IndicatorDelete (XAUUSD,M30)    Hline VSC
RN       0        03 : 41 : 36.666     IndicatorDelete (XAUUSD,M30)    Pivot Lines TimeZone
KG       0        03 : 41 : 36.686     IndicatorDelete (XAUUSD,M30)    Line through two fractals
DL       0        03 : 41 : 36.706     IndicatorDelete (XAUUSD,M30)    sanbox
 
Alekseu Fedotov :

Bu komut dosyasını deneyin

Herkese iyi günler!

Alexey, senaryonu uyguladın. 4115 hata kodu verdi. Referans kitabında ne anlama geldiğini buldum:

ERR_CHART_INDICATOR_CANNOT_DEL

4115

Bir grafikten bir gösterge silinirken hata oluştu


Saygılarımla, Vladimir.

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

yoksa göstergenin kendisini değiştirebilirsiniz - daha basit bir ad belirleyin

öyle gibi

-------------------------------------------------- ---

Size senaryoyu zaten gönderdim - ve bu komut dosyasını grafiğe koyarsanız ve göstergenin adını ayarlamazsanız, birden fazla Göstergeyi silmeden çalışır - ancak pencere uzmanlarına hangi Göstergelerin mevcut olduğunu yazar

https://c.mql5.com/3/332/IndicatorDelete.mq5

işte sahip olduklarım

Merhaba! Senaryonuzu kullandım. Uzmanlar sekmesinde iki gösterge belirdi : Ciltler ve ZigZag (80,20,0). Aslında bu böyle, sadece ZigZag göstergesi nedense Color olmadan yazılmış.

Saygılarımla, Vladimir.

 
Alekseu Fedotov :

Bu komut dosyasını deneyin

BayBrooklin :

Herkese iyi günler!

Alexey, senaryonu uyguladın. 4115 hata kodu verdi.

Saygılarımla, Vladimir.

Daha dikkatli olmalıydı.

 bool    ChartIndicatorDelete ( 
   long            chart_id,               // идентификатор графика 
   int             sub_window             // номер подокна 
   const string    indicator_shortname     // короткое имя индикатора 
   );

Göstergenin adı ve göstergenin kısa adı genellikle eşleşmez.

 
MrBrooklin :

Merhaba! Senaryonuzu kullandım. Uzmanlar sekmesinde iki gösterge belirdi: Ciltler ve ZigZag (80,20,0). Aslında bu böyle, sadece ZigZag göstergesi nedense Color olmadan yazılmış.

Saygılarımla, Vladimir.

ihtiyacınız olan şey bu, o zaman aynen böyle kaydolun - ZigZag (80,20,0)

O zaman yüz pound - emekli

-----------------

ve Renksiz

çünkü gösterge öyle diyor

 IndicatorSetString ( INDICATOR_SHORTNAME , "ZigZag(" +( string )InpDepth+ "," +( string )InpDeviation+ "," +( string )InpBackstep+ ")" );

 
SanAlex :

ihtiyacınız olan şey bu, o zaman aynen böyle kaydolun - ZigZag (80,20,0)

O zaman yüz pound - emekli

-----------------

ve Renksiz

çünkü gösterge öyle diyor

Ayarları değiştirirseniz, belirlediğiniz sayıları Göstergeye yazmanız gerekir.

örneğin

ZigZag( 12 , 5 , 3 )