Hatalar, hatalar, sorular - sayfa 363

 

SymbolsTotal() ve SymbolName() işlevleri bilgilerini test cihazında nereden alır?

Terminal 3. USDJPY numarasına sahipse, test cihazı 3. EURGBP'ye sahiptir.

Tehdit, sadece MarketWatch sembollerini araştırıyorum ve danışmana iletilmek üzere seri numaralarıyla kodluyorum.

 

Tünaydın!

Bir fonksiyon sorum var.     GöstergeSetString , ki   Bu göstergenin daha sonra tablodan kaldırılabileceğine bakarak göstergenin kısa bir adını belirleyebilirsiniz.

Bana göre garip bir durum.

Bir ofis bilgisayarında, bu prosedür normal olarak ilerlerken, başka bir ev bilgisayarında, bir gösterge ilk eklendiğinde, OnInit() içinde belirtilen IndicatorSetString işlevinin aksine, kısa adının değeri başlangıçta otomatik olarak ayarlanır (bu yeni bir ad oluşturduğum giriş parametrelerini hesaba katmadan ) ve yeni ad yalnızca göstergeyi silip yeniden yükledikten sonra görünür.

Aklıma ilk gelen yazılım farklılıkları oldu ama kıyasladıktan sonra temel olan her şeyin aynı olduğunu fark ettim:

- uzman kodları ve göstergeler;

- programın versiyonu ( Build 425);

İşletim Sistemi ( WinXP ) SP 3);

- aynı ayarlar (özel olarak karşılaştırılmıştır).

Genel olarak, kontrol şöyle görünür:

1. Ekranda, her biri göstergenin ortak ve kısa adıyla ilişkilendirilmiş birkaç düğme görüntülenir.

2. Butona basıldığında ortak isimle karşılık gelen gösterge belirir ve bırakıldığında kısa isme dayalı gösterge kaldırılır.

3. Bir ofis PC'sinde, göstergeler ilk şınavlardan kaldırılırken, ev PC'sinde yalnızca ikinciden kaldırılır.

Bunun olası nedeni ne olabilir?

Şematik olarak, Uzman Danışmanlar ve göstergeler için ortak olan şeylerin yanı sıra bu soruyla doğrudan ilgili olmayan diğer işlevleri hariç tutarsanız, şöyle görünür:

1. İçinde gösterge My_Indicator:

   input double   Offset  = 0 ;
   int OnInit ()  
   {  
       string NewNameIndicator = OldNameIndicator + Offset;
       IndicatorSetString ( INDICATOR_SHORTNAME , NewNameIndicator);
   }

2. Uzmanda:

   void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam)
   {  
        String ShortNameIndicator1;
         //---При нажатии            
         if (sparam==My_Button1.Name()){
             if (My_Button1.State()== true ){
                Int handle = iCustom ( _Symbol , _Period , "My_Indicator1 " , "FirstParameter" );
                ChartIndicatorAdd ( 0 , 0 ,handle);
                ShortNameIndicator1 = ChartIndicatorName ( 0 , 0 , ChartIndicatorsTotal ( 0 , 0 )- 1 );
                 Alert (“State()= true , IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
         if (sparam==My_Button1.Name()){
           if (My_Button1.State()== false ){
                  Alert (“State()= false , IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete ( 0 , 0 ,ShortNameIndicator1);  
           }
        }
    }

Sonuç olarak:

Bir ofis bilgisayarında   GöstergeAdı ilk geçişte yeni bir ad olarak görüntülenirken, ana sayfada yalnızca ikinci geçişte görüntülenir.

Bir ofis bilgisayarında, gösterge ilk sürümden sonra ve bir ev bilgisayarında ikinci sürümden sonra kaldırılır.

Bu durumda, ev bilgisayarına ilk basıp bırakıldıktan sonra, orijinal gösterge adı görüntülenir (Giriş parametresinin adına eklenmeden My_Indicator), yine de uzmanın kodu ve tekrar ediyorum, gösterge kullanılır. iki durum da aynı.

 

Servis masası yazımı burada alıntılıyorum.


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart ()
{
}


derlemeye çalışmak, 108 numaralı dahili hatayla sonuçlanır

terminalin en son sürümünü indirip aynı klasöre yeniden yükledikten sonra, hata dahili hata #-3 olarak değişti

sıralama
Bunun hatayla ilgili olup olmadığını bilmiyorum, ancak MQL5 yardım dosyalarını uygun MetaEditor otomatik prosedürünü kullanarak güncelledikten hemen sonra görünmeye başladı.

Beklenen Sonuç


normal komut dosyası derlemesi))


Bilgisayarın anti-virüs temizliğinden sonra sorun bugün ortadan kalktı.

Görünüşe göre yenilerden kötü niyetli bir yaratık, tk. bilinen antivirüslerin hiçbiri tarafından algılanmadı. Dış belirtiler şöyleydi:

  • c:\Windows\AppPatch klasöründe anlamsız bir ad ve uzantı .dat olan bir dosyanın varlığı. Dosya başlığı yürütülebilir olduğunu, orijinal adının dd.exe olduğunu, "ürün adı" ve "telif hakkı" alanlarının anlamsız büyük harf kümeleri olduğunu gösterir.
  • HKLM\Software\Microsoft\Windows NT\Winlogon kayıt defteri anahtarında, yukarıdaki dosyanın yolunun kayıtlı olduğu değiştirilmiş bir Userinit girişinin varlığı. Bir giriş silindiğinde, virüs bellekteyse, ikincisi fark edilmeden kurtarma eğilimindedir.
  • conhost.exe ve route.exe işlemlerinin ve bazen netsh.exe işlemlerinin birden çok kopyasının periyodik olarak başlatılması
  • MetaEditor ile hatalar 5))) - Metaquotes editörü, tüm işlevlerine ek olarak, aynı zamanda iyi bir kötü amaçlı yazılım dedektörü olduğu ortaya çıktı)

Güvenli modda her şeyi temizledim.

Evet, yerel Webmoney hesabı da dürtüldü, ancak kimlik verileri uçup gitmedi)))

Herkesin manuel olarak kontrol etmesini tavsiye ederim.

 
Urain :

SymbolsTotal() ve SymbolName() işlevleri bilgilerini test cihazında nereden alır?

Terminal 3. USDJPY numarasına sahipse, test cihazı 3. EURGBP'ye sahiptir.

Tehdit, sadece MarketWatch sembollerini araştırıyorum ve danışmana iletilmek üzere seri numaralarıyla kodluyorum.

Marketwatch'daki karakterlerin sırası, tanım gereği herhangi biri olabileceğinden hiçbir şekilde ayarlanamaz.
 

Dosyalar:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi :

bu nedir?

sayısal biçimde enum tanımlayıcısı ENUM_TYPE_MARKET_INFO gibi görünüyor.

Bende de aynısı var. SD'ye yaz.

 
Renat :
Marketwatch'daki karakterlerin sırası, tanım gereği herhangi biri olabileceğinden hiçbir şekilde ayarlanamaz.

Mesele, karakterlerin sırasına göre ve sayılarına değil, bu sıranın ve sayının aynı anda terminalde ve test cihazında farklı olmasıdır.

Genelde karakter listesini bir dosya üzerinden test cihazına aktararak sorunu çözdüm. Her ne kadar dürüstçe bunun bir hata olduğunu düşünsem de.

 
Urain :

Mesele, karakterlerin sırasına göre ve sayılarına değil, bu sıranın ve sayının aynı anda terminalde ve test cihazında farklı olmasıdır.

Genelde karakter setini bir dosya üzerinden test cihazına ileterek sorunu çözdüm. Her ne kadar dürüstçe bunun bir hata olduğunu düşünsem de.

sorunu pek anlamadım...

Ve kullanıcı marketwatch'da çalışırken karakterlerin sırasını değiştirirse bu bir söve mi olur?

 
AlexSTAL :

sorunu pek anlamadım...

Ve kullanıcı marketwatch'da çalışırken karakterlerin sırasını değiştirirse bu bir söve mi olur?

Test cihazı çalışırken? test cihazının başlatılmasından sonra otonom olarak çalışması pek olası değildir, ancak başlatma öncesi ayarlar modunda, sembollerin eşleşmesi beklenir (örneğin, bir danışmanı değiştirirken veya bir enstrümanı değiştirirken veya test danışmanları arasındakiler). ancak test cihazının (IMHO) ayarlarındaki herhangi bir değişiklik eşleşen sembollere yol açmalıdır).
 
Urain :

Mesele, karakterlerin sırasına göre ve sayılarına değil, bu sıranın ve sayının aynı anda terminalde ve test cihazında farklı olmasıdır.

Genelde karakter listesini bir dosya üzerinden test cihazına aktararak sorunu çözdüm. Her ne kadar dürüstçe bunun bir hata olduğunu düşünsem de.

Sembol tabanı (piyasa izleme) sunucudan eşzamansız ve rastgele olarak güncellenir. Her durumda siparişini vermek imkansızdır.

Test cihazı, genellikle uzak olan ayrı bir programdır. Sembol tabanı tamamen test cihazına aktarılmaz, sadece hesaplamalarda kullanılan semboller - bu, kaynakları korumak için yapılır. Bu nedenle takip eden (test cihazında aktifler listesine ekleme) karakterlerin sırası farklıdır.

Parametrelerde sembol adlarını kullanın - bu daha güvenli bir seçenektir.