KimIV의 유용한 기능 - 페이지 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 ) ;
}
이 옵션이 적합합니다....
 
kharko >> :

이 옵션이 적합합니다....

그러나 OpenHour 및 CloseHour를 매개 변수로 사용하면 여러 간격을 갖고 싶은 사람들이 만족할 것입니다.

스스로 TimeTrade(OpenHour1, CloseHour1), TimeTrade(OpenHour2, CloseHour2), ......

원하는 대로 결합할 것입니다.

 
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 ) ;
}
문제가 아니다...
 

한 번 이미 게시

 //-----------------------------------------------------------------------------+
// Функция контроля времени торговли                                           |
//-----------------------------------------------------------------------------+
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 ) ;
}
 

그리고 더 나아가

 //-----------------------------------------------------------------------------+
// Определяет дату конца торговли                                              |
//-----------------------------------------------------------------------------+
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 ) ;
}
그리고 이것으로 끝
 
xrust >> :
..그리고 거기서 끝

"서두르지 말고 우리를 묻어주세요. 아직 할 일이 있어요..")

 
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 ) ;
}
예를 들어 야간 스캘퍼의 경우 시간 간격을 보다 정확하게 결정하기 위해 분이 필요한 경우.
 
khorosh >> :
Если нужны ещё и минуты для более точного определения временного интервала, например для ночного скальпера.

물론 최소 수십 분이 필요합니다.

우리는 또한 요일과 각 요일에 대한 개별 시간을 설정할 수 있는 기능이 필요합니다.

특정일의 선택/금지.

실습에 따르면 패턴은 요일에 따라 다르게 작동합니다.

 
좋은 하루, KimIV. 당신의 조언이 필요하거나 도움이 필요합니다. 데이터베이스에서 e-Smart_Tralling.mq4 Expert Advisor를 찾았습니다. 작성자는 알 수 없지만 ... 스레드에 지정된 대로 작성자는 기본은 I.Kim(KimIV)의 후행 고문-보조입니다. 코드에서 이 고문을 변경하려고 했습니다. 1. 모든 수익성 있는 거래를 닫지 않도록 합니다. 예를 들어 주문을 실행할 때 주석에 대상을 추가하고 이익 을 취하면 고문은 이 거래를 닫지 않습니다. , 2. 모든 통화 쌍에서 작동하고 손절매가 되도록 합니다. 하지만 아직 프로그래밍 경험이 많지 않습니다. 변경해야 할 사항이 무엇인지 알려주실 수 있나요? 미리 감사드립니다
 

같은 계정의 다른 도구에서 동시에 작동하는 Expert Advisors를 위한 마법을 자동으로 생성하는 간단한 공식을 생각해 냈습니다.

 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 ) ;
}