MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 933

 
Yevhenii Levchenko :
어드바이저 거래를 위한 시간 필터(시간별)를 설정하는 방법은 무엇입니까? 다음이 작동할까요?

YOU google(예: 시간에 따라 고문의 작업 제한) - 예를 들어 22:00에서 04:00까지 거래하는 기능이 있을 수 있습니다. Kim I.V.의 사무실에서 제목: Kim의 유용한 기능만 - 보세요.

다음은 옵션입니다.

 extern int HourStart= 2 ;
// время начала работы советника в часах по времени терминала - может быть от 0 до 23
extern int HourEnd= 22 ;
// время окончания работы советника в часах по времени терминала
// пример - советник начинает работать в 2 часа 0 минут, заканчивает работу в 22, то есть в 22 часа и после советник не выставляет новых ордеров и ждет рабочего времени - 2 часа
extern bool Use_Time= false ;

...

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  { 
   bool time_trade= false ;
   if (Use_Time== false ) {time_trade= true ;}
   if (Use_Time== true && Hour()>=HourStart && Hour()<HourEnd) {time_trade= true ;}

...
   
 
Roman Shiredchenko :

YOU google - 예를 들어 22:00 ~ 04:00 경매와 같은 기능이 있을 수 있습니다. Kim I.V.의 사무실에서 제목: Kim의 유용한 기능만 - 보세요.

다음은 옵션입니다.

~ 멋진 주제네요! 고맙습니다!


내가 하지 못한 일이?
 
Yevhenii Levchenko :

~ 멋진 주제네요! 고맙습니다!


내가 하지 못한 일이?

예 x - 준비하고 사용하고 올바른 것을 이해하십시오. 자전거는 모두 발명되었습니다, IMHO.

 
Yevhenii Levchenko :
어드바이저 거래를 위한 시간 필터(시간별)를 설정하는 방법은 무엇입니까? 다음이 작동할까요?

이것은 오래 전에 논의되었습니다. 여기 주제가 있습니다. 제 예제는 모두 작동하고 있습니다. 저는 그것을 사용합니다. 모든 것이 MT4 Symbol() 및 _Symbol 사용의 특성은 무엇입니까? 이 또는 저 기호를 사용하는 것이 더 나은 경우는 언제입니까?

현재 기기에 대한 주문이 있는지 확인하기 위해 다음 코드가 올바르게 작동합니까?

없음, Symbol()은 기호 이름을 얻는 이전 형식이며 MQL4 - MQL5 호환성을 위한 최신 빌드에서 _Symbol이 추가되었습니다.

코드를 처음부터 작성하는 경우 _Symbol을 사용하고, 코드를 MQL5로 전송하려면 편집해야 합니다.

 
Igor Makanu :

이것은 오래 전에 논의되었습니다. 여기 주제가 있습니다. 제 예제는 모두 작동하고 있습니다. 저는 그것을 사용합니다. 모든 것이 MT4 https://www.mql5.com/en/forum/317351 에서 작동합니다.


없음, Symbol()은 기호 이름을 얻는 이전 형식이며 MQL4 - MQL5 호환성을 위한 최신 빌드에서 _Symbol이 추가되었습니다.

코드를 처음부터 작성하는 경우 _Symbol을 사용하고, 코드를 MQL5로 전송하려면 편집해야 합니다.

고맙습니다!

물론 코드는 제가 쓰려고 했던 것보다 훨씬 더 큽니다... :) 앉아서 알아봐야 겠네요...
 
Igor Makanu :

이것은 오래 전에 논의되었습니다. 여기 주제가 있습니다. 제 예제가 모두 작동하고 있습니다. 저는 그것을 사용합니다. 모든 것이 MT4 https://www.mql5.com/ru/forum/317351 에서 작동합니다.


없음, Symbol()은 기호 이름을 얻는 이전 형식이며 MQL4 - MQL5 호환성을 위한 최신 빌드에서 _Symbol이 추가되었습니다.

코드를 처음부터 작성하는 경우 _Symbol을 사용하고, 코드를 MQL5로 전송하려면 편집해야 합니다.

차이가 다릅니다. _Symbol은 미리 정의된 변수이고 Symbol()은 함수입니다.

저것과 또 다른 둘 다 거기에서 그리고 거기에서 작동합니다. 모든 것이 완전히 동일합니다. 그러나 옛날 옛적에 한 개발자(정확히 누구인지는 기억나지 않음)가 이 기능을 사용하는 것이 더 낫다고 말했습니다.

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

Symbol()과 _Symbol의 차이점

fxsaber , 2019.07.07 14:47

 void Func( const string & ) {}

void OnStart ()
{
  Func( Symbol ()); // ERROR: 'Symbol' - parameter passed as reference, variable expected
  Func( _Symbol );   // OK    
}
 
Artyom Trishkin :

차이가 다릅니다. _Symbol은 미리 정의된 변수이고 Symbol()은 함수입니다.

저것과 또 다른 둘 다 거기에서 그리고 거기에서 모두 작동합니다. 모든 것이 완전히 동일합니다. 그러나 옛날 옛적에 한 개발자(정확히 누구인지는 기억나지 않음)가 이 기능을 사용하는 것이 더 낫다고 말했습니다.

제 생각에는 더 편리한 것은 사용하는 데 필요한 것입니다. 도움말을 스크롤하면 개발자의 명확한 권장 사항이 없습니다.

실제로 일부 라이브러리에서는 개발자가 클래스 메서드 에서 Symbol() 을 재정의하고, MQL5의 사용자 지정 TF에 대해 클래스의 메서드를 Symbol() 로 재정의하기도 합니다. 가능한 한 편리하게 사용합니다. 책 공리 )) )에 따라 위반 사항을 참조하십시오.

추신: 제 생각에는 이것은 이미 종교입니다 ... 그러면 iClose() 기능을 사용할 수 없습니다. "이것은 공예품입니다!" (와 함께)

그런 다음 여기에 새로운 추세가 있습니다 _Symbol은 Symbol()보다 나쁩니다 ... 만일을 대비하여 속도를 측정했는데 전혀 차이가 없었고 일대일로 작동합니다

 #property strict
//+------------------------------------------------------------------+
#define   test(count_x10,msg,EX)        { uint mss= GetTickCount (); ulong count=( ulong ) pow ( 10 ,count_x10); for ( ulong i= 0 ;i<count&&! _StopFlag ;i++){EX;} \
                                 printf ( "%s: loops=%i ms=%u" ,msg,count, GetTickCount ()-mss);}

//+------------------------------------------------------------------+
void OnStart ()
  {
   Print ( "test 1:" ); srand ( GetTickCount ()); test( 9 , "_Symbol" , string s= _Symbol + IntegerToString ( rand ()));
   Print ( "test 2:" ); srand ( GetTickCount ()); test( 9 , "Symbol()" , string s= Symbol ()+ IntegerToString ( rand ()));
   Print ( "test 3:" ); srand ( GetTickCount ()); test( 9 , "_Symbol" , string s= _Symbol + IntegerToString ( rand ()));
   Print ( "test 4:" ); srand ( GetTickCount ()); test( 9 , "Symbol()" , string s= Symbol ()+ IntegerToString ( rand ()));
   Print ( "test 5:" ); srand ( GetTickCount ()); test( 9 , "_Symbol" , string s= _Symbol + IntegerToString ( rand ()));
   Print ( "test 6:" ); srand ( GetTickCount ()); test( 9 , "Symbol()" , string s= Symbol ()+ IntegerToString ( rand ()));
  }
//+------------------------------------------------------------------+

2019.08.09 00:54:20.631 tst EURUSD,H1: 기호(): 루프=1000000000 ms=66203

2019.08.09 00:53:14.432 tst EURUSD,H1: 테스트 6:

2019.08.09 00:53:14.432 tst EURUSD,H1: _기호: 루프=1000000000ms=65515

2019.08.09 00:52:08.921 tst EURUSD,H1: 테스트 5:

2019.08.09 00:52:08.921 tst EURUSD,H1: 기호(): 루프=1000000000 ms=65610

2019.08.09 00:51:03.301 tst EURUSD,H1: 테스트 4:

2019.08.09 00:51:03.301 tst EURUSD,H1: _기호: 루프=1000000000 ms=65890

2019.08.09 00:49:57.418 tst EURUSD,H1: 테스트 3:

2019.08.09 00:49:57.418 tst EURUSD,H1: 기호(): 루프=1000000000 ms=65563

2019.08.09 00:48:51.850 tst EURUSD,H1: 테스트 2:

2019.08.09 00:48:51.850 tst EURUSD,H1: _기호: 루프=1000000000 ms=65750

2019.08.09 00:47:46.105 tst EURUSD,H1: 테스트 1:

 
Igor Makanu :

제 생각에는 더 편리한 것은 사용하는 데 필요한 것입니다. 도움말을 스크롤하면 개발자의 명확한 권장 사항이 없습니다.

실제로 일부 라이브러리에서는 개발자가 클래스 메서드 에서 Symbol() 을 재정의하고, MQL5의 사용자 지정 TF에 대해 클래스의 메서드를 Symbol() 로 재정의하기도 합니다. 가능한 한 편리하게 사용합니다. t 책 공리 )) )에 따라 위반을 참조하십시오

추신: 제 생각에는 이것은 이미 종교입니다 ... 그러면 iClose() 기능을 사용할 수 없습니다. "이것은 공예품입니다!" (와 함께)

그런 다음 여기에 새로운 추세가 있습니다 _Symbol은 Symbol()보다 나쁩니다 ... 만일을 대비하여 속도를 측정했는데 전혀 차이가 없었고 일대일로 작동합니다

2019.08.09 00:54:20.631 tst EURUSD,H1: 기호(): 루프=1000000000 ms=66203

2019.08.09 00:53:14.432 tst EURUSD,H1: 테스트 6:

2019.08.09 00:53:14.432 tst EURUSD,H1: _기호: 루프=1000000000ms=65515

2019.08.09 00:52:08.921 tst EURUSD,H1: 테스트 5:

2019.08.09 00:52:08.921 tst EURUSD,H1: 기호(): 루프=1000000000 ms=65610

2019.08.09 00:51:03.301 tst EURUSD,H1: 테스트 4:

2019.08.09 00:51:03.301 tst EURUSD,H1: _기호: 루프=1000000000 ms=65890

2019.08.09 00:49:57.418 tst EURUSD,H1: 테스트 3:

2019.08.09 00:49:57.418 tst EURUSD,H1: 기호(): 루프=1000000000 ms=65563

2019.08.09 00:48:51.850 tst EURUSD,H1: 테스트 2:

2019.08.09 00:48:51.850 tst EURUSD,H1: _기호: 루프=1000000000 ms=65750

2019.08.09 00:47:46.105 tst EURUSD,H1: 테스트 1:

그들이 말했듯이 - 그가 산 것에 대해, 그가 팔았습니다. 권장 사항은 문서에 없었지만 포럼의 말에 따르면.

 
Igor Makanu :

마지막 줄에 슬래시가 없는 이유는 무엇이며 매크로에서 값을 반환할 수 있습니까?

 #define FOR3(a,b,c,loop) for ( int i= 0 ; i<a; i++) \
for ( int j= 0 ; j<b; j++) \
for ( int k= 0 ; k<c; k++) \
{loop;}