Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 617

 

Farklı seçenekler denedim. Sonuç aynı. Bu nasıl tamamen anlaşılmaz olabilir. Bir noktada, iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); Aniden daha geniş bir çubuk aralığını hesaplamaya başlar. Söyle bana kim anlar, bütün kafasını kırdı. Teşekkür ederim.


4:08:36 Zaman+iEn düşük testi başladı

14:08:36 2004.09.29 00:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 Saat+iEn Düşük EURUSD,H1:i=18
14:08:36 2004.09.29 00:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 Saat+iEn Düşük EURUSD,H1:i=19
14:08:39 2004.09.29 01:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 Saat+iEn Düşük EURUSD,H1:i=20
14:08:39 2004.09.29 02:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 Saat+iEn Düşük EURUSD,H1:i=21
14:08:40 2004.09.29 03:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 Saat+iEn Düşük EURUSD,H1: i=31

14:08:41 2004.09.29 04:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=21:00

kod:


statik int PrevTime=0;
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int başlangıç()
{
if(Zaman[0]<=ÖncekiZaman) return(0);
ÖncekiZaman=Zaman[0];
/////////////
// CheckForLongetivityClose_Sell();
double pBid=NormalizeDouble(Teklif,Rakamlar),Low_Now=Düşük[1];
///////////
int n_beg=1; // günün dizini, bu durumda 1 - dün
tarihsaat DayTime_beg=iTime(NULL,PERIOD_D1,n_beg); // Saniye cinsinden "n" gününün başlangıcı
int NumberLastBar_beg=iBarShift(NULL,0,DayTime_beg);

int n_end=0; // günün dizini, bu durumda 1 - dün
tarihsaat DayTime_end=iTime(NULL,PERIOD_D1,n_end); // Saniye cinsinden "n" gününün başlangıcı
int NumberLastBar_end=iBarShift(NULL,0,DayTime_end);
Print(" NumberLastBar_beg= ",NumberLastBar_beg," NumberLastBar_end= ",NumberLastBar_end);
//------------------------------------------------ ---------------------

tarihsaat Time_Check_Low_Day=Saat[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];
int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);
Yazdır("i=",i);
string time_check_low_day=TimeToStr(Time_Check_Low_Day,TIME_MINUTES);
////////////
Print(" time_check_low_day=",time_check_low_day);

datetime time_check_verify=StrToTime("H_check_beg:M_check_beg");


dönüş(0);
}

 
En anlaşılmaz olan şey, bunun tam olarak tarihin bu bölümünde gerçekleşmesi, diğerlerinde normal olmasıdır.
 
DiPach :

Kod yalnızca gerçek hayatta veya bir demo hesabında kullanılıyorsa, sizinkine benzer bir seçenek daha uygundur. Ancak, strateji test cihazı kullanılırken sorunlar ortaya çıkabilir.


Örneğin ne? Neden benim için hiçbir yerde sorun yaratmıyor da sizin için "ortaya çıkabilir".
 

anlamadığım bir kısım var

double Delta =   NormalizeDouble ( MathAbs (Bid-PriceOld), Digits );

buradaki baskıda 5e-005.0 gibi çöp olduğu ortaya çıktı

FiyatEski değer

PriceOld   = NormalizeDouble (Bid, Digits ); 
Her şeyi eklerken normalken, çıkarırken neden böyle oluyor?
 
001 :
En anlaşılmaz olan şey, bunun tam olarak tarihin bu bölümünde gerçekleşmesi, diğerlerinde normal olmasıdır.
iLowest() yardımını dikkatlice okuyun. Aranacak eleman sayısı, ne olmalı? Ve neyin var?
 
001 :

Farklı seçenekler denedim. Sonuç aynı. Bu nasıl tamamen anlaşılmaz olabilir. Bir noktada, iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); Aniden daha geniş bir çubuk aralığını hesaplamaya başlar. Söyle bana kim anlar, bütün kafasını kırdı. Teşekkür ederim.


4:08:36 Zaman+iEn düşük testi başladı

14:08:36 2004.09.29 00:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 Saat+iEn Düşük EURUSD,H1:i=18
14:08:36 2004.09.29 00:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 Saat+iEn Düşük EURUSD,H1:i=19
14:08:39 2004.09.29 01:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 Saat+iEn Düşük EURUSD,H1:i=20
14:08:39 2004.09.29 02:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 Saat+iEn Düşük EURUSD,H1:i=21
14:08:40 2004.09.29 03:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 Saat+iEn Düşük EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 Saat+iEn Düşük EURUSD,H1: i=31

14:08:41 2004.09.29 04:00 Saat+iEn Düşük EURUSD,H1: time_check_low_day=21:00

kod:

 static int     PrevTime= 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   if (Time[ 0 ]<=PrevTime) return ( 0 );
   PrevTime=Time[ 0 ];
//////////////
 //  CheckForLongetivityClose_Sell();
   double pBid= NormalizeDouble (Bid, Digits ),Low_Now=Low[ 1 ];
////////////
   int n_beg= 1 ;                                           // индекс дня, в данном случае 1 - вчерашний день
   datetime DayTime_beg=iTime( NULL , PERIOD_D1 ,n_beg);             // Начало дня "n" в секундах
   int NumberLastBar_beg=iBarShift( NULL , 0 ,DayTime_beg);

   int n_end= 0 ;                                           // индекс дня, в данном случае 1 - вчерашний день
   datetime DayTime_end=iTime( NULL , PERIOD_D1 ,n_end);             // Начало дня "n" в секундах
   int NumberLastBar_end=iBarShift( NULL , 0 ,DayTime_end);
   Print ( " NumberLastBar_beg= " ,NumberLastBar_beg, " NumberLastBar_end= " ,NumberLastBar_end);
//---------------------------------------------------------------------

   datetime Time_Check_Low_Day=Time[iLowest( NULL , 0 ,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];
   int i=iLowest( NULL , 0 ,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);
   Print ( " i=" ,i);
   string time_check_low_day=TimeToStr(Time_Check_Low_Day,TIME_MINUTES);
/////////////
   Print ( " time_check_low_day=" ,time_check_low_day);

   datetime time_check_verify=StrToTime( "H_check_beg:M_check_beg" );


   return ( 0 );
  }


Bu satırlara dikkat

   datetime Time_Check_Low_Day=Time[iLowest( NULL , 0 ,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];//iLowest раз
   int i=iLowest( NULL , 0 ,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);                            //iLowest два

1. Bu satırları değiştirmek daha iyidir.

 int i=iLowest( NULL , 0 ,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); // исправлять не стал
datetime Time_Check_Low_Day=Time[i];

2. NumberLastBar_beg, ilk dünün çubuğunun numarasıdır ve aramanın yapılması gereken çubuk sayısı yerine bu değeri ayarlarsınız.

3. Kodu yapıştırdığınızda, metin giriş penceresinin araç çubuğunda SRC düğmesini bulun.

 
AlexeyVik :

Örneğin ne? Neden benim için hiçbir yerde sorun yaratmıyor da sizin için "ortaya çıkabilir".

Düşünürken bile. Açıkça görülebildiği mevcut göstergenin kodu (test cihazı için ayrı bir koşul uygulamazsanız) - Yaymak gibi bir niyetim yok. Ayrıca, bazında ne yazılacağını düşünmek, netlik için ayrı bir tane.

Ancak, ısrar ederseniz - elbette, büyük olasılıkla, orada başka bir şey reçete etmesi gereken karmaşık "doldurma" yı nasıl değiştireceğimi düşüneceğim.
 
Bir EA'da 1'den fazla zamanlayıcı kullanmak mümkün müdür? EventSetTimer (5);
 
pu6ka :
iLowest() yardımını dikkatlice okuyun. Aranacak eleman sayısı, ne olmalı? Ve neyin var?

Nedense bir aralık olduğunu düşündüm ve bu, öğelerin sayısı, teşekkürler!
 
AlexeyVik :

Bu satırlara dikkat

1. Bu satırları değiştirmek daha iyidir.

2. NumberLastBar_beg, ilk dünün çubuğunun numarasıdır ve aramanın yapılması gereken çubuk sayısı yerine bu değeri ayarlarsınız.


1. Burada i değişkeni, Print için tamamen kontrol içindir. Ve çubukların değiştirilmesiyle, berbat ettim. Bahşiş için teşekkürler!