Hatalar, hatalar, sorular - sayfa 119

 
Forumda bir yerde, test sırasında (disk alanından tasarruf etmek için) yorumların dergiye yazılmadığını okudum. Bu bağlamda, soru şudur: test cihazında programda nasıl hata ayıklanır? Printf, PrintFormat'ı denedim - test cihazında hiçbir şey çalışmıyor, Alert'ı bile denedim.
 
Scriptong :
Forumda bir yerde, test sırasında (disk alanından tasarruf etmek için) yorumların dergiye yazılmadığını okudum. Bu bağlamda, soru şudur: test cihazında programda nasıl hata ayıklanır? Printf, PrintFormat'ı denedim - test cihazında hiçbir şey çalışmıyor, Alert'ı bile denedim.
Test aracılarının günlüklerine bakın - orada her şey yazılır, ancak yalnızca yerel aracılar için. Uzak aracılar, bilgi koruma nedenleriyle Print() ve benzerlerinin çıktısını günlüğe kaydetmez.
Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Общие функции / Print - Документация по MQL5
 

Kontrol. Yerel bir temsilcim var (en azından Yerel'de listeleniyor). EA'yı " Every tick " modunda başlattıktan sonra, "Günlük" sekmesinin içeriği, aracının günlük dosyasının içeriğiyle eşleşir (EA ve günlük dosyaları eklenir).

Evet, unuttum. Test dönemi "Geçen Ay".

Dosyalar:
test.mq5  2 kb
 

Günlüğünüz "'test.ex5' sürümünün hata ayıklama sürümü, lütfen yeniden derleyin" diyor

Bu, hata ayıklama amaçlı EX5'lerin (düzenleyicide F5'e basılması size hata ayıklama bilgilerini içeren EX5'leri verir) test cihazında çalıştırılamayacağı anlamına gelir.

Bu tür Uzman Danışmanların otomatik yeniden derlemesini yapacağız. Bu arada, Expert Advisor'ınızı manuel olarak yeniden derleyin.

 
alexvd :
Tam kodu verebilir misiniz?

Ve muhtemelen her şeyi getirdim, artık sebebinin ne olduğunu bile anlayamıyorum ...

Durumu daha ayrıntılı olarak açıklamaya çalışacağım.

Basit bir "CMqlTimer" sınıfı vardır, bu sınıfın görevi, farklı zaman aralıklarının değişme anını izlemektir: saat, gün, hafta, ay, yıl.

İlkel olana kadar her şey basitçe yapılır, örneğin, dakikalar 0 ise, o zaman "yeni saat" gelmiştir; haftanın gün sayısı, değişkende saklanan sayıya karşılık gelmiyorsa, bir gün değişikliği meydana geldi (sunucu saatine göre "00:00:00"). Peki, vb.

Analiz, zamanlayıcı 1 saniye aralıklarla tetiklendiğinde gerçekleşir, iş CMqlTimer::OnTimer() içinde yapılır. Belirli bir zaman aralığı değiştiyse, belirli bir işlevin yürütülmesi gerekir. Örneğin, "yeni" bir gün geldiyse, CMqlTimer::OnRolloverDay() işlevi yürütülmelidir.


Yani, diğer her şeyi kaldırırsanız ve yalnızca OnRolloverDay()'in özünü bırakırsanız, şöyle bir şey elde edersiniz:

 //Function CMqlTimer.OnRolloverDay
bool CMqlTimer::OnRolloverDay()
//Дневной ролловер
{
//----------------------------------------------------------------------------//
//Work variables
string MessageText; //Text for message
int     UserEventID; //Identifier of the user event  

bool Result; //Returned importance
//----------------------------------------------------------------------------//

Result = true;

ResetLastError ();

RolloverCountDay = RolloverCountDay+ 1 ;

UserEventID = CHARTEVENT_CUSTOM +15;
MessageText = StringFormat ("Rollover Day (№ %d)",RolloverCountDay); //Можно просто "Rollover Day"
//We refer user event of the work chart
EventChartCustom ( 0 ,( ushort )UserEventID- CHARTEVENT_CUSTOM , 0 , 0 ,MessageText);

//Checking for presence of the errors
   if ( _LastError != 0 )
   //В результате работы произошла ошибка
  {
  Result = false;  
  }
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}

Tüm kullanıcı olayları izlenir ve işlenmek üzere ana sınıfa iletilir.

şuna benziyor

 void OnChartEvent ( const int id,         // идентификатор события  
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam   // параметр события типа string
                  )
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
//                          Processing user events                            //
//----------------------------------------------------------------------------//
   if (id> CHARTEVENT_CUSTOM )
   //User event is received
  {
  Expert.OnEvent(id,lparam,dparam,sparam);
  }
//----------------------------------------------------------------------------//  
}

Bu nedenle, test modunda olaylar OnChartEvent'e ulaşmaz, yani. Test modundaki bir EA, EventChartCustom kullanılarak gönderilen bir olayı işleyemez. Günlükteki tüm (tümü arka arkaya) olaylar görüntülenerek kontrol edilir.

not

en ilginç şey, tüm olayların demoya ulaşması , ancak test cihazında çalışmayı reddetmesidir.

319'a kadar her şey çalıştı ve olaylar test cihazında başarıyla işlendi. Doğru, çalıştığı son sürümü söyleyemem ...

 
stringo :

Günlüğünüz "'test.ex5' sürümünün hata ayıklama sürümü, lütfen yeniden derleyin" diyor

Bu, hata ayıklama amaçlı EX5'lerin (düzenleyicide F5'e basılması size hata ayıklama bilgilerini içeren EX5'leri verir) test cihazında çalıştırılamayacağı anlamına gelir.

Bu tür Uzman Danışmanların otomatik yeniden derlemesini yapacağız. Bu arada, Expert Advisor'ınızı manuel olarak yeniden derleyin.

Teşekkür ederim. F5 ve F7 tuşlarına basarak elde edilen dosyalar arasında bir fark olduğunu bilmiyordum.
 
Interesting :

Ve muhtemelen her şeyi getirdim, artık sebebinin ne olduğunu bile anlayamıyorum ...

Durumu daha ayrıntılı olarak açıklamaya çalışacağım.

...
Teşekkür ederim. Düşünmeye devam edeceğiz.
 

Sorunun ne olduğunu anlayamıyorum, test cihazındaki EA hatasız çalışıyor ve organizatörlerin test makinesinde de hatasız geçiyor.

Bir demo hesabında çalışıyorum, bir sipariş açmaya çalıştığımda bir hata alıyorum:

2010.09.06 13:26:50 İşlemler '101894' : 84.179'da 0.10 USDJPY anında satın alma başarısız oldu [Desteklenmeyen doldurma modu]
2010.09.06 13:26:45 İşlemler '101894' : 1.03689'da 0.10 USDCAD anında satın alma başarısız oldu [Desteklenmeyen doldurma modu]
2010.09.06 13:26:39 İşlemler '101894' : 0,10 USDJPY anında 84.174'te satın alınamadı [Desteklenmeyen doldurma modu]
2010.09.06 13:26:34 İşlemler '101894' : 1.03685'te 0.10 USDCAD anında satın alma başarısız oldu [Desteklenmeyen doldurma modu]
2010.09.06 13:26:28 İşlemler '101894' : 0,10 USDJPY anında 84.174'te satın alınamadı [Desteklenmeyen doldurma modu]
2010.09.06 13:26:23 İşlemler '101894' : 1.03688'de 0.10 USDCAD anında satın alma başarısız oldu [Desteklenmeyen doldurma modu]
2010.09.06 13:26:18 İşlemler '101894' : 84.181'de 0.10 USDJPY anında satın alma başarısız oldu [Desteklenmeyen doldurma modu]

SATIŞ Talebi:

 MqlTradeRequest request;
         request.action= TRADE_ACTION_DEAL ;
         request.symbol=Symbol_[i];
         request.volume=volume_exe;
         request.price= SymbolInfoDouble (Symbol_[i], SYMBOL_BID );
         request.sl= 0 ;
         request.tp= 0 ;
         request.deviation= SymbolInfoInteger (Symbol_[i], SYMBOL_SPREAD )* 2 ;
         request.type= ORDER_TYPE_SELL ;
         request.type_filling= ORDER_FILLING_CANCEL

SATIN ALMA talebi:

 MqlTradeRequest request;
         request.action= TRADE_ACTION_DEAL ;
         request.symbol=Symbol_[i];
         request.volume=volume_exe;
         request.price= SymbolInfoDouble (Symbol_[i], SYMBOL_ASK );
         request.sl= 0 ;
         request.tp= 0 ;
         request.deviation= SymbolInfoInteger (Symbol_[i], SYMBOL_SPREAD )* 2 ;
         request.type= ORDER_TYPE_BUY ;
         request.type_filling= ORDER_FILLING_CANCEL ;

Aynı zamanda OrderCheck bir hata bulmaz.


 

ORDER_FILLING_CANCEL isteğini ORDER_FILLING_AON isteğiyle değiştirerek EA çalışmaya başladı.

Ancak sorun devam ediyor, neden test cihazının ve sunucunun çalışmasında böyle bir fark var.


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

Şampiyonluk sunucusunun tersi olursa komik olur.