[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 428

 
keekkenen >> :

Korkarım bu yapı if(Time[0]>iTime(0,1440,60)) her zaman doğru dönecek, çünkü bu iTime(0,1440,60) değeri, Time[0]'ın 60 bar solunda olacaktır.

test ne gösteriyor?




Sorunun ifadesi: bir danışman var, strateji test cihazında son örneğin 40 çubukta (60 iş parçacığına bakın) optimize etme arzusu var.

if(Time[0]>iTime(0,1440,60))

zaman (simüle edilmiş) günlük 60. çubuğun açılış zamanından daha uzun olursa, o zaman işlevi yerine getirin sorun ne?!

 
doğru, o zaman danışmanın teste başlaması gereken zamanı önceden belirlemeniz gerekir..
ne zaman tamamlaması gerektiğini bildiğinize göre, aşağıdakileri yapın

diyelim ki testler 2010.02.10 0:00'da bitiyor


aşağıdaki koddan bir komut dosyası yapın

 #property show_inputs
// время окончания тестировани						
extern string 		endTestTime 		= "2010.02.10 0:00" ;
// название пары
extern string		symbolTest			= "" ;
// период на котором ищем нужное время по номеру testBarCount бара относительно времени endTestTime
extern int 			periodTest		   = 0 ;
// количество баров в прошлое относительно времени endTestTime
extern int 			testBarCount 		= 60 ;

int init ( ) {
	if ( symbolTest = = "" ) symbolTest = Symbol ( ) ;
	// искомое время
	Print ( TimeToStr ( iTime ( symbolTest , periodTest ,	iBarShift ( symbolTest , periodTest , StrToTime ( endTestTime ) ) + testBarCount ) ) ) ;
}
 

bu komut dosyası, danışmanı test etmeniz gereken zamanı bulmanızı sağlar..

EA'da birkaç değişken ayarlayın

 extern string startTime = "" ;
extern string endTime = "" ;

int StartTime = StrToTime ( startTime ) , EndTime = StrToTime ( endTime ) ;

if ( Time [ 0 ] < StartTime | | Time [ 0 ] > EndTime ) return ( 0 ) ;
 

bu komut dosyası, danışmanı test etmeniz gereken zamanı bulmanızı sağlar..

EA'da birkaç değişken ayarlayın

 extern string startTime = "" ;
extern string endTime = "" ;

int StartTime = StrToTime ( startTime ) , EndTime = StrToTime ( endTime ) ;

if ( Time [ 0 ] < StartTime | | Time [ 0 ] > EndTime ) return ( 0 ) ;
startTime'da betiğin aldığı zamanı giriyoruz ve endTime'da betiğin endTestTime değişkenine girilen zamanı giriyoruz..
 
costy_ >> :

Sorunun ifadesi: bir danışman var, strateji test cihazında son örneğin 40 çubukta (60 iş parçacığına bakın) optimize etme arzusu var.

if(Time[0]>iTime(0,1440,60))

zaman (simüle edilmiş) günlük 60. çubuğun açılış zamanından daha uzun olursa, o zaman işlevi yerine getirin sorun ne?!

böylece 60. çubuk da modüle edilmiş 0. bara göre modüle edilir

 

Sorunun ifadesi: bir danışman var, onu optimize etme arzusu var , örneğin, strateji test cihazında mevcut zamana göre 40 bar. Bu kırk çubuk saatlik, 4 saatlik, günlük veya başka bir zaman diliminde olabilir. Strateji test cihazı çalışır: üzerinde çalıştığı süre, test cihazı panelinde gösterilir. Bu çalışma süresini ayarlama yöntemi, yukarıda belirtilen görevi yerine getirmez - 40 çubuk üzerinde bir test. Bu, Uzman Danışman'da değişiklik yapılması gerektiği anlamına gelir, böylece kod yürütülürken test süresini belirleyen testçi değil (yetenekleri tatmin edici değildir), ancak kodun kendisi .

Öneriniz işe yaramayacak, çünkü test cihazı için N çubuk önce olan zaman şimdiki zamandır.


T.K.

Mevcut zaman için, test cihazı, mevcut olandan başlayarak belirtilen çubuğun (geriye doğru) açılma süresini hesaplayacaktır. Onlar. yine sorunu çözmez. Bugünün (anlık) çubuğundan N çubuk önce olmalı ve test cihazının geçerli zamanından değil


doğru mu anladım.

 
keekkenen >> :
допустим тестирование заканчивается 2010.02.10 0:00


aşağıdaki koddan bir komut dosyası yapın

Senaryo iyi, AMA!! Daha sonra test panelinde "puanlanması" gereken zamanın değerini verecektir. Bu çok değil... Ancak küçük zaman dilimlerinde ve az sayıda baroda, tarih test cihazında belirtildiğinden ve başka bir şey olmadığından, test cihazında "puan almanın" imkansız olacağı bir zaman gösterecektir. Test, başlangıç tarihi 00:00'dan bitiş tarihi 00:00'a kadar gerçekleştirilir. Ve zaman, özellikle dakika olarak belirtilemez !!!!

 

çok iyi olmayan bir şey, test eden kişinin kendi zamanında yaşadığı ve biz ve gerçek alıntıların başka bir zamanda yaşadığı basit bir nedenden dolayı bununla uzlaşmanız gerekecek ve bu zaman boşlukları sadece hayal gücümüzde kesişiyor..


Test cihazına tam zamanı girememeniz, geçerli günün başlangıcını veya başlangıç saatinden önceki günü ayarlamamanız sorun değil - bu zaten bir maliyet ..


bu kod parçası, gerekli optimizasyon başlangıç zamanından (parametrelerde belirlediğimiz) önce ve optimizasyon bitiş zamanından sonra fazladan süreyi kesecektir.

 if ( Time [ 0 ] < StartTime | | Time [ 0 ] > EndTime ) return ( 0 ) ;
 

Şekil ind'e bakın. geçen gün sadece 60 bar ofset ile çizmeye başladı. Aşağıda kodun bir parçasıdır. Önerdiğiniz şeylerden herhangi birini denediniz mi? Deneyin ve iyi olacaksınız.

 int start ( )    {
double stoch1 , stoch2 ;
   int pos = Bars - IndicatorCounted ( ) ;   
//----

if ( Time [ 0 ] > iTime ( 0 , 1440 , 60 ) ) 
   for ( int b = 0 ; b < = pos ; b + + )
   {     
 
keekkenen >> :

bu kod parçası, gerekli optimizasyon başlangıç zamanından (parametrelerde belirlediğimiz) önce ve optimizasyon bitiş zamanından sonra fazladan süreyi kesecektir.

Danışmanın veri için komut dosyasıyla iletişim kuracağını anlıyorum, komut dosyasında arka çubuklar ayarlanmalıdır.

VE! Üzgünüm, betiğin tam kodunu gönderebilir misiniz? Ne yazık ki, MQL ile bir buçuk yıl çalıştıktan sonra hiç senaryo yazmadım.