KimIV'ten faydalı özellikler - sayfa 76

 
bool TimeTrade ( )
{
//----
   datetime current = TimeCurrent ( ) ;
   if ( ( ( TimeHour ( current ) > = OpenHour | | TimeHour ( current ) < CloseHour ) & & CloseHour < OpenHour ) | |
       ( TimeHour ( current ) > = OpenHour & & TimeHour ( current ) < CloseHour & & CloseHour > OpenHour ) ) 
       return ( true ) ;
   else
       return ( false ) ;
}
Bu seçenek uygundur....
 
kharko >> :

Bu seçenek uygundur....

Ancak OpenHour ve CloseHour'u parametre olarak alırsanız, birkaç aralığa sahip olmak isteyenler tatmin olacaktır:

Kendilerini TimeTrade(OpenHour1, CloseHour1), TimeTrade(OpenHour2, CloseHour2), ......

ve onları istedikleri gibi birleştirecek.

 
bool TimeTrade ( int OpenHour , int CloseHour )
{
//----
   datetime current = TimeCurrent ( ) ;
   if ( ( ( TimeHour ( current ) > = OpenHour | | TimeHour ( current ) < CloseHour ) & & CloseHour < OpenHour ) | |
       ( TimeHour ( current ) > = OpenHour & & TimeHour ( current ) < CloseHour & & CloseHour > OpenHour ) ) 
       return ( true ) ;
   else
       return ( false ) ;
}
Problem değil...
 

bir kez zaten gönderildi

 //-----------------------------------------------------------------------------+
// Функция контроля времени торговли                                           |
//-----------------------------------------------------------------------------+
bool TradeTime ( int StartTradeHour , int EndTradeHour ) {
if ( ! TradeOfTime ) {
if ( DayOfWeek ( ) = = 6 | | DayOfWeek ( ) = = 0 ) {
gTimeEngl = "Start trade in  01:00 am" ;
gTimeRus = "Начало торговли в понедельник в 01:00" ;
return ( false ) ; }
return ( true ) ; }
if ( DayOfWeek ( ) = = 6 | | DayOfWeek ( ) = = 0 ) {
gTimeEngl = "Start trade in  01:00 am" ;
gTimeRus = "Начало торговли в понедельник в 01:00" ;
return ( false ) ; }
if ( StartTradeHour < EndTradeHour ) {
   if ( TimeHour ( TimeCurrent ( ) ) > = StartTradeHour & & TimeHour ( TimeCurrent ( ) ) < EndTradeHour
     | | ( CountOpOrd ( "0" ) > 0 ) ) {
    gTimeEngl = StringConcatenate ( "By the end of trading session :" , DoubleToStr ( ( EndTradeHour - TimeHour ( TimeCurrent ( ) ) ) , 0 ) , " hours" ) ;
    gTimeRus = StringConcatenate ( "До конца торговой сессии :" , DoubleToStr ( ( EndTradeHour - TimeHour ( TimeCurrent ( ) ) ) , 0 ) , " часов" ) ;
     return ( true ) ; } }
if ( StartTradeHour > EndTradeHour ) {
   if ( TimeHour ( TimeCurrent ( ) ) > = StartTradeHour | | TimeHour ( TimeCurrent ( ) ) < EndTradeHour
     | | ( CountOpOrd ( "0" ) > 0 ) ) {
    gTimeEngl = StringConcatenate ( "By the end of trading session :" , DoubleToStr ( ( EndTradeHour - TimeHour ( TimeCurrent ( ) ) ) , 0 ) , " hours" ) ;
    gTimeRus = StringConcatenate ( "До конца торговой сессии :" , DoubleToStr ( ( EndTradeHour - TimeHour ( TimeCurrent ( ) ) ) , 0 ) , " часов" ) ;
     return ( true ) ; } }     
gTimeEngl = StringConcatenate ( "resting to : " , StartTradeHour , ": 00" ) ;    
gTimeRus = StringConcatenate ( "отдыхаем до : " , StartTradeHour , ": 00" ) ;   
return ( false ) ;
}
 

ve ilerisi

 //-----------------------------------------------------------------------------+
// Определяет дату конца торговли                                              |
//-----------------------------------------------------------------------------+
bool EndTradeForDateTime ( string EndTradeData ) { //"Enterting Date of End trading in eeee.mm.dd";
if ( EndTradeData = = "" ) {
gInf1rus = "Дата конца торговли не определена " ;
gInf1engl = "Date of the end of trading is not defined " ;
gColor1 = LimeGreen ;
return ( false ) ;
}
int EndData = StrToTime ( TimeToStr ( TimeCurrent ( ) , TIME_DATE ) ) ;
int DataEnd = StrToTime ( EndTradeData ) ;
if ( EndData > = DataEnd ) {
gInf1rus = "Торговля остановленна " + EndTradeData ;
gInf1engl = "Trading stopped " + EndTradeData ;
gColor1 = Red ;
return ( true ) ;
}
gInf1rus = "Торговля будет остановленна " + EndTradeData ;
gInf1engl = "Trading will be stopped " + EndTradeData ;
gColor1 = LimeGreen ;
return ( false ) ;
}
ve bununla bitir
 
xrust >> :
..ve orada bitiyor

"Bizi gömmek için acele etmeyin burada daha yapacak işimiz var.." :))

 
bool IsTradeTime ( )
{
if ( Hour ( ) > Hour_Stop_Trade   & & Hour ( ) < Hour_Start_Trade )
	return ( false ) ;
 if ( Hour ( ) = = Hour_Stop_Trade & & Minute ( ) > = Minute_Stop_Trade )
	return ( false ) ;   
 if ( Hour ( ) = = Hour_Start_Trade & & Minute ( ) < Minute_Start_Trade )
	return ( false ) ;
return ( true ) ;
}
Ayrıca, örneğin bir gece kafa derisi için zaman aralığını daha doğru bir şekilde belirlemek için dakikalara ihtiyacınız varsa.
 
khorosh >> :
Если нужны ещё и минуты для более точного определения временного интервала, например для ночного скальпера.

Tabii ki, en az on dakikaya ihtiyaç var.

Ayrıca haftanın günlerine ve haftanın her günü için ayrı bir zaman belirleme yeteneğine de ihtiyacımız var.

belirli bir günün seçimi / yasaklanması.

Uygulama, kalıpların haftanın farklı günlerinde farklı şekilde çalıştığını göstermektedir.

 
İyi günler, KimIV. Tavsiyene, daha doğrusu yardımına ihtiyacım var. Veritabanında e-Smart_Tralling.mq4 Expert Advisor'ı buldum, yazarı bilinmiyor... temel, I.Kim aka KimIV'in takip eden danışman-asistanıdır. Koddaki bu danışmanı değiştirmeye çalıştım: 1. tüm karlı işlemleri kapatmasın, örneğin bir emir yürütürken, bir hedef eklediysem ve yoruma kar al, danışman bu işlemi kapatmıyor , 2. böylece tüm döviz çiftleri ile çalışır ve stoploss olur. Ama hala çok fazla programlama deneyimim yok, nelerin değiştirilmesi gerektiğini söyleyebilir misiniz? Şimdiden teşekkürler
 

Aynı hesabın farklı enstrümanları üzerinde aynı anda çalışan Uzman Danışmanlar için otomatik olarak sihir oluşturmak için basit bir formül buldum.

 int Magic = GetMagic ( ExpertName + Symbol ( ) , Period ( ) ) ;
//-----------------------------------------+

//+----------------------------------------------------------------------------+
//|  Автор    :  KimIV style,  http://www.kimiv.ru                             |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.04.2009                                                     |
//|  Описание : Возвращает сумму символьных кодов всех символов входной строки |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    simbolstring - строка для расчета                                       |
//|    multiplier   - дополнительный множитель                                 |
//+----------------------------------------------------------------------------+

int GetMagic ( string simbolstring , int multiplier ) {
   int res = 0 ;
   int len = StringLen ( simbolstring ) ;
   for ( int i = 0 ; i < len ; i + + )
       res + = StringGetChar ( simbolstring , i ) ;       
   return ( res * multiplier ) ;
}