Hatalar, hatalar, sorular - sayfa 2148

 
Andrey Khatimlianskii :

Onaylandı mı?

Tabii ki değil. Burada yazılan her şey bağımsız bir sonuçtur.

Renat veya Slava'nın , manuel olarak başlatılsalar bile göstergelerin kopyalanmadığını söylediğini hatırlıyorum. Parametrelerin karması eşleşir - aynı hesaplama kısmı kullanılır.

Bu doğru değil. Ve en önemlisi, gerçek bile olamazdı.

Bu göstergeyi iki özdeş grafikte manuel olarak çalıştırın

 int OnCalculate ( const int , const int , const int , const double &[] )
{
   Print ( ChartID ());
  
   return ( 0 );
}

Hesaplanan parçalar çakışırsa, farklı bir çıktı olmayacaktı. Bence dile getirilen sonuçların %90'ı doğru.

 
Nexxtor :

Yardımın yazarları veya MQL5 dili, kimin ellerinin ***'den büyüdüğüne bağlı olarak, onu nasıl aldınız !!!

IndicatorCreate() diyor ki:

parametreler_cnt

[içinde] parameter_array[] dizisinde geçirilen parametre sayısı. Dizi öğeleri, MqlParam türünde özel bir yapıya sahiptir. Varsayılan değer sıfırdır - parametreler iletilmez. Sıfır olmayan bir parametre sayısı belirtilirse, o zaman parameter_array parametresi gereklidir. Maksimum 256 parametre iletilebilir.


Söyle bana, bizzat kontrol ettin mi ??? 256 parametreli göstergenin çağrılacağı ???


Düzeltmek!!!

koşmuyor musun? Çalışmayan kodu göster.

Ve lütfen, daha az duygu ve daha fazla hareket.

 
fxsaber :

Bu doğru değil. Ve en önemlisi, gerçek bile olamazdı.

Bu göstergeyi iki özdeş grafikte manuel olarak çalıştırın

Hesaplanan parçalar çakışırsa, farklı bir çıktı olmayacaktı.

Benim için çok zor bir sonuç.

Göstergelerin neden tek bir grafik görmesi gerekiyor? Çünkü ChartID temelinde gösterge algoritması oluşturulabilir???

 
fxsaber :

OBJ_CHART üzerindeki Uzman Danışmanlar kesinlikle başlamaz (daha doğrusu, çalışmazlar). Yani zamanlayıcı iyi görünüyor. Belki de orada tüm olaylar çalışmıyor.

OBJ_CHART üzerindeki Uzman Danışmanlar başlatıldı ve sorunsuz çalışıyor. Yalnızca OnChartEvent'i (özel) işlerler ve diğer grafikler için kendi özel olaylarını oluşturabilirler.

 
Andrey Khatimlianskii :

Göstergelerin neden tek bir grafik görmesi gerekiyor?

iCustom göstergelerinin kendi grafikleri yoktur. Bazı grafiklere eklendiğinde bile.

Çünkü ChartID temelinde gösterge algoritması oluşturulabilir???

Evet, grafiğinize uygulanan Grafik işlevleri ve olayları (manuel/şablon göstergeleri) herhangi bir işlem için kullanılabilir.

 

Belgelerde Hata

ChartNavigate

Belirtilen tabloyu, belirtilen tablo konumuna göre belirtilen çubuk sayısı kadar kaydırır.

 bool    ChartNavigate (
   long   chart_id,     // идентификатор графика
   int    position,     // позиция
   int    shift= 0        // значение сдвига
   );

Seçenekler

chart_id

[içinde] Grafik Kimliği. 0, geçerli grafik anlamına gelir.

konum

[içinde] Vardiyanın yapılacağına göre grafik konumu. Değer, ENUM_CHART_POSITION numaralandırma değerlerinden biri olabilir.

 
Andrey Barinov :

OBJ_CHART üzerindeki Uzman Danışmanlar başlatıldı ve sorunsuz çalışıyor. Yalnızca OnChartEvent'i (özel) işlerler ve diğer grafikler için kendi özel olaylarını oluşturabilirler.

Kontrol. EA Uzmanları\Test.mq5

 class CUSTOM
{
public :  
  CUSTOM()
  {
     Print ( __FUNCSIG__ );
    
     Print ( EventSetTimer ( 1 ) && EventChartCustom ( 0 , 0 , 0 , 0 , NULL ) &&
           MarketBookAdd ( _Symbol ) && 
           ChartSetInteger ( 0 , CHART_EVENT_MOUSE_WHEEL , true ) &&
           ChartSetInteger ( 0 , CHART_EVENT_MOUSE_MOVE , true ) &&
           ChartSetInteger ( 0 , CHART_EVENT_OBJECT_CREATE , true ) &&
           ChartSetInteger ( 0 , CHART_EVENT_OBJECT_DELETE , true ) &&
           ChartNavigate ( 0 , CHART_BEGIN , 100 ) &&
           ObjectCreate ( 0 , __FILE__ , OBJ_VLINE , 0 , 0 , 0 ) &&
           ObjectDelete ( 0 , __FILE__ ));
    
  }
  ~CUSTOM() { Print ( __FUNCSIG__ ); }
};

const CUSTOM InitDeinit;

void OnTick () { Print ( __FUNCSIG__ ); }
void OnInit () { Print ( __FUNCSIG__ ); }
void OnDeinit ( const int ) { Print ( __FUNCSIG__ ); }
void OnChartEvent ( const int id, const long &, const double &, const string & ) { Print ( __FUNCSIG__ + " " + ( string )id) ; }
void OnTimer () { Print ( __FUNCSIG__ ); }
void OnBookEvent ( const string & ) { Print ( __FUNCSIG__ ); }


Senaryo

 #include <fxsaber\Expert.mqh>   // https://www.mql5.com/ru/code/19003

void OnStart ()
{
   if ( ObjectCreate ( 0 , __FILE__ , OBJ_CHART , 0 , 0 , 0 ))
  {
     MqlParam Params[ 1 ];
    Params[ 0 ].string_value = "Experts\\Test.ex5" ;

     Print (EXPERT::Run( ObjectGetInteger ( 0 , __FILE__ , OBJPROP_CHART_ID ), Params));
  }
}


Sonuç

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)         void CUSTOM::CUSTOM()
Test (EURUSD,M1)         true
Test (EURUSD,M1)         void OnInit ()
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 1000
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnDeinit ( const int )
Test (EURUSD,M1)         void CUSTOM::~CUSTOM()


OBJ_CHART'ta Uzman Danışmanlar hakkında sonuç

  • OnInit, OnDeinit, global yapıcı/yıkıcı ve OnChartEvent çalışması.
  • OnTimer, OnTick ve OnBookEvent çalışmıyor.
  • Olaylardan yalnızca CHARTEVENT_CHART_CHANGE ve özel olanları yakalar.
  • Uzman Danışmanın OnChartEvent+EventChartCustom aracılığıyla OnTimer ve OnTick için "olaylar" oluşturulabilir, ancak OnBookEvent oluşturulamaz.
 
FILE_COMMON belirtildiğinde glucotrader 5'te #property tester_file düzgün çalışmıyor, dosya aracıda açılmıyor
 
Anton Ohmat :
FILE_COMMON belirtildiğinde glucotrader 5'te #property tester_file düzgün çalışmıyor, dosya aracıda açılmıyor

Dosya, Common klasöründen (Terminal ve yerel Aracılar için ortaktır) değil, Sandbox'tan alınır.

 
fxsaber :

Dosya, Common klasöründen (Terminal ve yerel Aracılar için ortaktır) değil, Sandbox'tan alınır.

Uzak sunucularımda test ediyorum - çalışmıyor. Başlatma yalnızca yerel makinede MT dizininde dosyalar varsa yapılabilir, ORTAK optimizasyona gitmez


tester_file

sicim

Uzantı dahil, çift tırnak içine alınmış (sabit bir dize olarak) test cihazı için dosyanın adı. Belirtilen dosya iş için test cihazına aktarılacaktır. Gerekirse test için giriş dosyaları her zaman belirtilmelidir