Hatalar, hatalar, sorular - sayfa 39

 
Kopyalayarak başka bir kağıda çoğalttım, şimdi servis masasında bir uygulama yayınlayacağım .
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
alexvd :

DebugBreak() öğesinin tam olarak nerede ayarlandığını hatırlamıyor musunuz?

Şu ana kadar çoğaltmak mümkün olmadı.

Servis masasına bir istek gönderdi #18435

zy DebagBreyki tüm döngülerden önce koydu.

 
Urain :

Servis masasına bir istek gönderdi #18435

zy DebagBreyki tüm döngülerden önce koydu.

Evet teşekkür ederim.

Zaten tekrarlandı.

 
alexvd :

Evet teşekkür ederim.

Zaten tekrarlandı.

Daha sonra derlenmiş seçeneklerimden ikisini ekledim, çalışıyor ve bozuk, bir nedenden dolayı ağırlıkları neredeyse iki kat farklı.
 
ddd06 :

EA'dan gelen gösterge çağrısıyla ilgili olarak #18261 numaralı talebin akıbetini bilmek istiyorum (değer göstergeyle eşleşmiyor).

Cevap gelse iyi olurdu...

Servis masanızı tekrar kontrol edin lütfen sorun çözüldü
 

MACD Örneği hakkında bir soru var.

Alpari'nin demosunda, ticaret yapmak için SL 50 ve TP200 ile bir Uzman Danışman ayarladım.

GBPUSD çifti için bir pozisyon açıldı, bir süre sonra EA pozisyonu değiştirdi ve dergiye aşağıdakileri yayınladı

> 2010.07.08 20:01:46 İşlemler '3037120' : başarısız değiştirme sat 0.10 GBPUSD sl: 1.51740, tp: 1.49868 -> sl: 1.51740, tp: 1.49868 [Geçersiz duraklar]

Soru, SL neden devre dışı bırakıldı? Aynı zamanda, pozisyonun değiştirildiği görülüyor (en azından bundan önce BU'ya transfer edildi) ...

Aynı zamanda, strateji testçisi 200'den beri test sırasında hiç yemin etmedi...

not

türkiye ayarlar dosyası ektedir...

 

İki boyutlu bir dizi var maVal[a][b] . Hareketli ortalamanın değerleri [b] 'ye nasıl kopyalanır çünkü diziye [a] ile bakmanız ve [b] değerlerini karşılaştırmanız gerekir.

CopyBuffer(maHandle,0,0,3,maVal); Uygun değil. Ve işte hantal kod burada.

    bool Buy_Condition_1=((ma1Val[ 2 ]<ma1Val[ 1 ]) && (ma1Val[ 1 ]<ma1Val[ 0 ])||
                         (ma2Val[ 2 ]<ma2Val[ 1 ]) && (ma2Val[ 1 ]<ma2Val[ 0 ])||
                         (ma3Val[ 2 ]<ma3Val[ 1 ]) && (ma3Val[ 1 ]<ma3Val[ 0 ])||
                         (ma4Val[ 2 ]<ma4Val[ 1 ]) && (ma4Val[ 1 ]<ma4Val[ 0 ])||
                         (ma5Val[ 2 ]<ma5Val[ 1 ]) && (ma5Val[ 1 ]<ma5Val[ 0 ])); // MA растет
 
Interesting :

sl: 1.51740 , tp: 1.49868 -> sl: 1.51740 , tp: 1.49868 [Geçersiz duraklar]

Soru, SL neden devre dışı bırakıldı? Aynı zamanda, pozisyonun değiştirildiği görülüyor (en azından bundan önce BU'ya transfer edildi) ...

Günlüğüm ayrıca, siparişin değiştirilmesi sırasında ne SL ne de TP değişmezse lanet etti.
 

Basit bir komut dosyası yazıyoruz:

 void OnStart (){
  Alert ( "-----------------------------------" );
  Alert ( "Period() = " , Period (), " минут" );
  Alert ( "------------ " , Symbol (), " ------------" );
}

Aynı işlem enstrümanının farklı zaman dilimlerine M1'den başlayarak ve ardından kademeli olarak sırayla atıyoruz. Sonuç: M1'den M30'a kadar olan zaman diliminde süre doğru bir şekilde belirlenir:

Ancak H1 zaman diliminde kesinlikle harika bir sayı atılıyor.

En ilginç. H2 zaman çerçevesinin (ve sonraki saatlik olanlar) H1 zaman çerçevesinden çok uzaklaşmadığını.


H1'de nokta = 16386, H2 = 16387'de, H3 = 16388'de vb. - sayılar son basamakta farklılık gösterir.

Bu hatanın nasıl aşılacağıyla ilgilenmiyorum, ancak hatanın kendisini düzeltmekle ilgileniyorum. Hiç sahip olmamak için.

 
drknn :

Basit bir komut dosyası yazıyoruz:

Aynı işlem enstrümanının farklı zaman dilimlerine M1'den başlayarak ve ardından kademeli olarak sırayla atıyoruz. Sonuç: M1'den M30'a kadar olan zaman diliminde süre doğru bir şekilde belirlenir:

Ancak H1 zaman diliminde kesinlikle harika bir sayı atılıyor.

En ilginç. H2 zaman çerçevesinin (ve sonraki saatlik olanlar) H1 zaman çerçevesinden çok uzaklaşmadığını.


H1'de nokta = 16386, H2 = 16387'de, H3 = 16388'de vb. - sayılar son basamakta farklılık gösterir.

Bu hatanın nasıl aşılacağıyla ilgilenmiyorum, ancak hatanın kendisini düzeltmekle ilgileniyorum. Hiç sahip olmamak için.

> Bu hatayı nasıl aşacağımla ilgilenmiyorum, hatayı düzeltmekle ilgileniyorum. Hiç sahip olmamak için.

ASKERLİK ve VURUŞ olarak algılamayın ama bunun bir HATA olduğuna dikkat çekerek beni öldürdünüz...

Konuya gelince (öneriler):

Bu sizin için MQL4 değildir ve Period() bir zaman çerçevesindeki saniye/dakika sayısını açıkça temsil etmez.

Bir periyottaki saniye sayısını almak için PeriodSeconds işlevini kullanın.


Ve yine de Periyodu bir sayı olarak ifade etmeye çalışırsanız, ENUM_TIMEFRAMES numaralandırmasında bu periyodun tanımlayıcısına karşılık gelen sayısal bir değer elde edersiniz.


not

Şahsen, bir Dönemi MQL4 formatına dönüştürmem gerekirse, bu işlevi kullanırım :

 //Fumction PeriodToMinute
int PeriodToMinute( ENUM_TIMEFRAMES Value)
//Возвращает число секунд в периоде
{
//----------------------------------------------------------------------------//
//Служебные переменные
int Result;
//----------------------------------------------------------------------------//
Result = PeriodSeconds (Value)/ 60 ;
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}

Bir şey için, "dönemlendirme" hakkında gereksiz sorular olmaması için iki işlev daha vereceğim: MinuteToPeriod ve PeriodToStr.

 //Fumction MinuteToPeriod
ENUM_TIMEFRAMES MinuteToPeriod( int Value)
//Преобразовывает число сикунд в период, возвращаемый как ENUM_TIMEFRAMES
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
ENUM_TIMEFRAMES Result;
//----------------------------------------------------------------------------//
   switch (Value)
  {
   //Перирд текущещего графика
   case    0 : return ( PERIOD_CURRENT ); break ;
   //Минуты
   case    1 : return ( PERIOD_M1 );   break ;   //1 минута
   case    2 : return ( PERIOD_M2 );   break ;   //2 минуты
   case    3 : return ( PERIOD_M3 );   break ;   //3 минуты
   case    4 : return ( PERIOD_M4 );   break ;   //4 минуты
   case    5 : return ( PERIOD_M5 );   break ;   //5 минуты
   case    6 : return ( PERIOD_M6 );   break ;   //6 минуты
   case    10 : return ( PERIOD_M10 ); break ;   //10 минуты
   case    12 : return ( PERIOD_M12 ); break ;   //12 минуты
   case    15 : return ( PERIOD_M15 ); break ;   //15 минуты
   case    20 : return ( PERIOD_M20 ); break ;   //20 минуты
   case    30 : return ( PERIOD_M30 ); break ;   //30 минуты
   //Часы
   case    60 : return ( PERIOD_H1 ); break ;     //60 минут  - 1 час
   case 120 : return ( PERIOD_H2 ); break ;     //120 минут - 2 часа  
   case 180 : return ( PERIOD_H3 ); break ;     //180 минут - 3 часа
   case 240 : return ( PERIOD_H4 ); break ;     //240 минут - 4 часа
   case 360 : return ( PERIOD_H6 ); break ;     //360 минут - 6 часов
   case 480 : return ( PERIOD_H8 ); break ;     //480 минут - 8 часов
   case 720 : return ( PERIOD_H12 ); break ;   //720 минут - 12 часов
   //Старшие ТФ
   case 1440 : return ( PERIOD_D1 ); break ;   //1 день
   case 10080 : return ( PERIOD_W1 ); break ;   //1 неделя 
   case 43200 : return ( PERIOD_MN1 ); break ; //1 месяц 
   //Default
   default : return ( PERIOD_CURRENT );
  }
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}
//Function PeriodToStr
string PeriodToStr( ENUM_TIMEFRAMES Value)
//Функция возвращает тексовое представление ТФ (периода)
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
string Result; //Возвращаемое значение
//----------------------------------------------------------------------------//

   switch (Value)
  {
   //Минуты
   case PERIOD_M1 :  Result = "M1" ;   break ; //1 минута
   case PERIOD_M2 :  Result = "M2" ;   break ; //2 минуты
   case PERIOD_M3 :  Result = "M3" ;   break ; //3 минуты  
   case PERIOD_M4 :  Result = "M4" ;   break ; //4 минуты    
   case PERIOD_M5 :  Result = "M5" ;   break ; //5 минут
   case PERIOD_M6 :  Result = "M6" ;   break ; //6 минут
   case PERIOD_M10 : Result = "M10" ; break ; //10 минут
   case PERIOD_M12 : Result = "M12" ; break ; //12 минут
   case PERIOD_M15 : Result = "M15" ; break ; //15 минут
   case PERIOD_M20 : Result = "M20" ; break ; //20 минут
   case PERIOD_M30 : Result = "M30" ; break ; //30 минут
   //Часы
   case PERIOD_H1 :  Result = "H1" ;   break ; //60 минут   - 1 час
   case PERIOD_H2 :  Result = "H2" ;   break ; //120 минут  - 2 часа
   case PERIOD_H3 :  Result = "H3" ;   break ; //180 минут  - 3 часа
   case PERIOD_H4 :  Result = "H4" ;   break ; //240 минут  - 4 часа
   case PERIOD_H6 :  Result = "H6" ;   break ; //360 минут  - 6 часов  
   case PERIOD_H8 :  Result = "H8" ;   break ; //480 минут  - 8 часов
   case PERIOD_H12 : Result = "H12" ; break ; //720 минут  - 12 часов
   //Старшие ТФ
   case PERIOD_D1 :  Result = "Day" ;   break ; //День
   case PERIOD_W1 :  Result = "Week" ;   break ; //Неделя
   case PERIOD_MN1 : Result = "Month" ; break ; //Месяц
   //Unknown
   default : Result = "Unknown" ;
   break ;
  }
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}