Hatalar, hatalar, sorular - sayfa 2898

 

Geliştiricilere hitap edin. Python betiği , belirli koşullar altında copy_rates_from_pos aracılığıyla veri alınırken kilitleniyor.

durumu açıklayacağım. Brokerin yaklaşık 4 bin enstrümanı var.
Enstrümanları belirli kurallara göre tasnif ederek ve filtreleyerek birincil seçimini yaparım.

Terminaldeki enstrümanlardan biri için boş bir geçmiş var (yani piyasa saatinde ve semboller listesinde bir enstrüman var ama veriler boş).

Komut dosyasını çalıştırmaya çalışırken: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 1 , Analysis_days),
komut dosyası sadece kilitleniyor. Ne "denemek" ne de Yok'u denetlemek yardımcı olmaz, çünkü hatanın kendisi oluşmadığından, her şey bu satırda asılı kalır.

Şunu çalıştırmayı denerseniz: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 0 , Analysis_days),
yani, ilk çubuğun numarasını 0'dan belirtin, ardından askıda kalmaz ve boş bir tablo döndürülür.

Ek. Ben de benzer bir sorun buldum, İLK KEZ için copy_rates_from_pos üzerinden veri aldığımda, istenen çubuk sayısı geçmişte olduğundan daha fazla. Ayrıca komut dosyası donuyor. İkinci aramada böyle bir hata yok. Bu nedenle, hatayı tekrarlamak muhtemelen zor olacaktır (sadece enstrümanın geçmişini tamamen silerek mümkündür).

Belki bir şeyde yanılıyorum veya bir şeyi hesaba katmadım, ancak işlevin veri veya hata döndürmesi gerektiğinden bir hata gibi görünüyor.

 
Alexander Mikheev :

Sevgili geliştiriciler, bir konuda yanılıyorsam veya bir şeyi hesaba katmadıysam lütfen beni düzeltin.

Birinin zaman ayırıp verileriniz için kaynak kodunu yazmasını ve çeşitli ticaret sunucularında kontrol etmesini ister misiniz?

Gerçekleşmeyecek. Başkalarının zamanına saygı gösterin: Sorunu yeniden oluşturmak için tam olarak veri sağlayın - kaynak, sunucu, makine yapılandırması vb.


Kaynak kodu, orada yazılanları analiz etmek için zaman kaybetmemek için kısa ve yorumludur. Ne almak istediğinizi ve neye sahip olduğunuzu söyleyin.

 
fxsaber :

Parola korumalı ZIP arşivi.

MQL'de parola korumalı arşivler destekleniyor mu?

 
Stanislav Korotky :

MQL'de parola korumalı arşivler destekleniyor mu?

bilmiyorum.

 
suncrypto :

Geliştiricilere hitap edin. Python betiği , belirli koşullar altında copy_rates_from_pos aracılığıyla veri alınırken kilitleniyor.

durumu açıklayacağım. Brokerin yaklaşık 4 bin enstrümanı var.
Enstrümanları belirli kurallara göre tasnif ederek ve filtreleyerek birincil seçimini yaparım.

Terminaldeki enstrümanlardan biri için boş bir geçmiş var (yani piyasa saatinde ve semboller listesinde bir enstrüman var ama veriler boş).

Komut dosyasını çalıştırmaya çalışırken: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 1 , Analysis_days),
komut dosyası sadece kilitleniyor. Ne "denemek" ne de Yok'u denetlemek yardımcı olmaz, çünkü hatanın kendisi oluşmadığından, her şey bu satırda asılı kalır.

Şunu çalıştırmayı denerseniz: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 0 , Analysis_days),
yani, ilk çubuğun numarasını 0'dan belirtin, ardından askıda kalmaz ve boş bir tablo döndürülür.

Ek. Ben de benzer bir sorun buldum, İLK KEZ için copy_rates_from_pos üzerinden veri aldığımda, istenen çubuk sayısı geçmişte olduğundan daha fazla. Ayrıca komut dosyası donuyor. İkinci aramada böyle bir hata yok. Bu nedenle, hatayı tekrarlamak muhtemelen zor olacaktır (sadece enstrümanın geçmişini tamamen silerek mümkündür).

Belki bir şeyde yanılıyorum veya bir şeyi hesaba katmadım, ancak işlevin veri veya hata döndürmesi gerektiğinden bir hata gibi görünüyor.

Yeniden üretildi, sabitlendi.

 
TesterHideIndicators çalışmayı durdurdu (yanlış);
 
suncrypto :

Geliştiricilere hitap edin. Python betiği , belirli koşullar altında copy_rates_from_pos aracılığıyla veri alınırken kilitleniyor.

durumu açıklayacağım. Brokerin yaklaşık 4 bin enstrümanı var.
Enstrümanları belirli kurallara göre tasnif ederek ve filtreleyerek birincil seçimini yaparım.

Terminaldeki enstrümanlardan biri için boş bir geçmiş var (yani piyasa saatinde ve semboller listesinde bir enstrüman var ama veriler boş).

Komut dosyasını çalıştırmaya çalışırken: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 1 , Analysis_days),
komut dosyası sadece kilitleniyor. Ne "denemek" ne de Yok'u denetlemek yardımcı olmaz, çünkü hatanın kendisi oluşmadığından, her şey bu satırda asılı kalır.

Şunu çalıştırmayı denerseniz: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 0 , Analysis_days),
yani, ilk çubuğun numarasını 0'dan belirtin, ardından askıda kalmaz ve boş bir tablo döndürülür.

Ek. Ben de benzer bir sorun buldum, İLK KEZ için copy_rates_from_pos üzerinden veri aldığımda, istenen çubuk sayısı geçmişte olduğundan daha fazla. Ayrıca komut dosyası donuyor. İkinci aramada böyle bir hata yok. Bu nedenle, hatayı tekrarlamak muhtemelen zor olacaktır (sadece enstrümanın geçmişini tamamen silerek mümkündür).

Belki bir şeyde yanılıyorum veya bir şeyi hesaba katmadım, ancak işlevin veri veya hata döndürmesi gerektiğinden bir hata gibi görünüyor.

Düzeltildi, bir sonraki betada olacak
 
Aleksey Vyazmikin :
Çalışmayı durdurdu TesterHideIndicators(false);

TesterHideIndicator, daha sonra oluşturulan göstergeler için test cihazının görünürlük bayrağını ayarlar.

Önceden oluşturulmuş göstergelerin görünürlük bayrağını değiştirmez.

Aşağıdaki uzman tarafından kontrol edilebilir

 //+------------------------------------------------------------------+
//|                                     TestTesterHideIndicators.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

int ExtHandleMacd;
int ExtHandleEma;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   TesterHideIndicators ( true );
   ExtHandleMacd= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE );
   TesterHideIndicators ( false );
   ExtHandleEma= iMA ( NULL , 0 , 21 , 0 , MODE_EMA , PRICE_CLOSE );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
  }
//+------------------------------------------------------------------+

Basit bir testten sonra açılan görselleştiricide ve grafikte MACD göstergesi görünmüyor, Hareketli Ortalama görünüyor

Yani, amaçlandığı gibi çalışır.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
DMITRII PECHERITSA :
Hata - işaretçilerin tutarsız çalışması (5.00, 2650)

Derleme hatası . Kimin düşünceleri var?



Başvuru operatörünü açıkça kullanın

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   C201022_090654 c_1( * new C201022_090641); //works
   C201022_090654 c_3( * new C201022_092325( 1 )); //works
//---'new' - parameter passed as reference, variable expected
   C201022_090654 c_2( * new C201022_090641( 1 )); //not works
                      ^
  }
 

A100 :
Ошибка при компиляции:

 typedef void (*fn)();
void f() {}
fn g() { return f; }
oid OnStart ()
{
        g()(); // Error: ')' - expression expected
}

Bunu daha önce araştırdım ve işte bulduklarım:

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

Hatalar, hatalar, sorular

Sergey Dzyublik , 2020.04.04 21:46

Bir dizi işlev işaretçisi kullanıldığında, işaretçisi aracılığıyla bir işlev çağrılırken MT5 hatası (derleme 2375) derleme hatası :

 #define PRINT(x) ; Print ( #x, ":" , string (x))

void test(){
   PRINT( __FUNCSIG__ );
}

template < typename T>
void call(T f_ptr){
   f_ptr();
}


template < typename T>
class A{
public :
   T arr_1[ 1 ];
   
   typedef void (*ff)();
   ff arr_2[ 1 ];  
   
   
   T test_1(){
       return arr_1[ 0 ];
   } 
   
   ff test_2(){
       return arr_2[ 0 ];
   } 
   
   T operator []( int index){
       return arr_1[index];
   }
};

void OnStart (){
   typedef void (*ff)();
   ff arr[ 1 ];
   arr[ 0 ] = test;   
   
   ff f_ptr = arr[ 0 ];
   f_ptr();             //Ok
   call(arr[ 0 ]);         //Ok
   arr[ 0 ]();             //Compile Error: ')' - expression expected    
   
   
   A<ff> a;             
   a.arr_1[ 0 ] = test;
   a.arr_2[ 0 ] = test;
   
   
   a.arr_1[ 0 ]();         //Compile Error: ')' - expression expected    
   a.arr_2[ 0 ]();         //Compile Error: ')' - expression expected    
   
   a.test_1()();         //Compile Error: ')' - expression expected    
   a.test_2()();         //Compile Error: ')' - expression expected    
   
   a[ 0 ]();               //Ok ???
}