Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1218

 
Pineapple88 :

Düzeltildi, her şey çalışıyor gibi görünüyor!

İki MA göstergesi OnInit işlevine taşındı.

Anladığım kadarıyla, OnInit işlevinde yalnızca gösterge tanıtıcısını oluşturuyoruz ve dizilerle yapılan diğer tüm manipülasyonlar OnTick işlevine giriliyor ve her onayda kontrol ediliyor mu?

Evet, OnInit'te gösterge tutamağını oluşturuyoruz. Ve işin geri kalanı OnTick'te uygulanmaktadır.

 
Vladimir Karputov :

Evet, OnInit'te gösterge tutamağını oluşturuyoruz. Ve işin geri kalanı OnTick'te uygulanmaktadır.

Anladım teşekkürler!

 
MT5'te Expert Advisor optimizasyonu gerekli ve faydalı bir şeydir. Ama soru şu: Danışmanın çalışması için en iyi parametreler hangi dönem için gelecekte başabaş noktasını garanti ediyor? Optimizasyonun her ay yapılması gerektiğine inanılmaktadır. Ancak optimizasyon, mevduatın en azından önümüzdeki ay içinde boşaltılmayacağını garanti ediyor mu?
 
BORIS GOLICIN :
MT5'te Expert Advisor optimizasyonu gerekli ve faydalı bir şeydir. Ama soru şu: Danışmanın çalışması için en iyi parametreler hangi dönem için gelecekte başabaş noktasını garanti ediyor? Optimizasyonun her ay yapılması gerektiğine inanılmaktadır. Ancak optimizasyon, mevduatın en azından önümüzdeki ay içinde boşaltılmayacağını garanti ediyor mu?

bankacılık sektöründe bir garanti için)

 
BORIS GOLICIN :
MT5'te Expert Advisor optimizasyonu gerekli ve faydalı bir şeydir. Ama soru şu: Danışmanın çalışması için en iyi parametreler hangi dönem için gelecekte başabaş noktasını garanti ediyor? Optimizasyonun her ay yapılması gerektiğine inanılmaktadır. Ancak optimizasyon, mevduatın en azından önümüzdeki ay içinde boşaltılmayacağını garanti ediyor mu?

Bence optimizasyon işe yaramaz. Bu, yalnızca belirli bir dönemde ne kadar zararın meydana geldiğini ve ne kadar kâr edilebileceğini tahmin etmek için iyidir. Ayrıca, her an piyasadaki durum değişecek ve tüm optimizasyon boşa gidecek. Stratejinin otomatik modda daha uzun süre çalışması için açgözlü olmanıza gerek yok. Piyasadan maksimumu çıkarmaya çalışmayın. DC bunu yapmana izin vermiyor.

 

İnternette optimizasyon hakkında bulabildiklerim:

Diyelim ki 2000'den 2015'e kadar 15 yıllık (en az 10) bir geçmişimiz var. Bu parçayı şu dönemlere ayırıyoruz: 2000-2003 bizim geriye dönük test parçamız, 2003-2012 optimizasyon dönemi, 2012 -2015 - ileri testi. Optimizasyondan sonra, en başarılı 10-20 seti seçerek her zamanki gibi ileriye dönük testler yapıyoruz. Daha sonra geriye dönük test bölümünde seçilen setleri çalıştırıyoruz. Sonuçlar, bir ileri ile elde edilenlere benzer olmalıdır. Testi geçen setler daha fazla karşılaştırma için bırakılır. Daha sonra, testi tüm tarih parçası üzerinde kalan setler üzerinde çalıştırırız ve sonuçları diğerlerinden daha iyi olanı seçeriz. Sonuç olarak, en uyarlanmış ayar kümesi kalır.
İlk aşamada setler nasıl seçilir - ileri test? Çok basit: Bu aşamada bizim için en önemli şey denge eğrisinin şeklidir. İdeal olarak, sol alttan sağ üst köşeye giden düz bir çizgi olmalıdır. Aynı zamanda, en iyi setleri arka arkaya izlemenin bir anlamı yok - çoğu zaman neredeyse aynılar.

 

Herkese iyi günler!

ATR göstergesinin tutamağına erişirken ilk 30 saniye için garip değerler veriyor.

anlayamıyorum sebebi nedir?

 int ATRdefinition = 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   ATRdefinition = iATR ( _Symbol , _Period , 14 );
   if (ATRdefinition == INVALID_HANDLE )
     {
       Print ( "Ошибка создания Хендла" );
     }

   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
   string signal = "" ;

   double Ask = NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits );
   double Bid = NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits );

   double ATRarray[];
   ArraySetAsSeries (ATRarray, true );

   CopyBuffer (ATRdefinition, 0 , 0 , 3 ,ATRarray);
   
   double ATRValue = NormalizeDouble (ATRarray[ 0 ], 5 );

   Print ( "ATRVALUE: " ,ATRValue);
  }
Dosyalar:
ATR.png  51 kb
 
Pineapple88 :

Bütün gün iyi!

ATR göstergesinin tutamağına erişirken ilk 30 saniye için garip değerler veriyor.

anlayamıyorum sebebi nedir?

Göstergenin hazır olup olmadığını kontrol ediyor musunuz?

 //--- determine the number of values calculated in the indicator 
   int calculated= BarsCalculated (handle); 

(' tutamaç ' yerine tutamacınızı yerleştirin)

 

Bu verinin ( 402082 ) göstergeyi hesaplamak için yeterli olmadığı ortaya çıktı?

Hesaplama için yeterli veri yoksa BarsCalculated fonksiyonunun (-1) hatası vermesi gerektiğini düşündüm.

Dosyalar:
ATR2.png  21 kb
 
Pineapple88 :

Bu verinin ( 402082 ) göstergeyi hesaplamak için yeterli olmadığı ortaya çıktı?

Hesaplama için yeterli veri yoksa BarsCalculated fonksiyonunun (-1) hatası vermesi gerektiğini düşündüm.

Görünüşe göre terminal geçmişi indirmeye devam ediyor - buna göre gösterge sürekli olarak yeniden hesaplanıyor. Veya başka bir seçenek: terminalde, çizelgede görüntülenecek ÇOK fazla sayıda çubuk var ve bilgisayarınız ÇOK zayıf.


Katma.

MetaTrader 5 x64 build 2470'te ve "Çubukları göster" 100000 ayarlarıyla kontrol ettim - aynı zamanda geçmiş uzun zaman önce yüklendi. Kod harika çalıştı.