MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 50 1...434445464748495051525354555657...1953 새 코멘트 Mickey Moose 2016.12.27 11:37 #491 Sergey Gritsay : 이렇게 될 수 있을까 ... 감사합니다 기록이 낯설지만 알아내겠습니다 이걸로 다시 만들어야겠네요 Vitaly Muzichenko 2016.12.27 12:44 #492 trader781 : 감사합니다 기록이 낯설지만 알아내겠습니다 이걸로 다시 만들어야겠네요 3줄에 쏙쏙 들어가고 이런 심플한 디자인에 족발 길이의 코드를 작성할 필요가 없어요 int BBars= 0 ; void OnTick () { if (BBars!= Bars ) {BBars= Bars ; // код.... } } Sergey Gritsay 2016.12.27 12:50 #493 trader781 : 감사합니다 기록이 낯설지만 알아내겠습니다 이걸로 다시 만들어야겠네요 P 항목은 매우 간단하며 CNevBar 클래스는 하나의 new_bar 메소드로 작성됩니다. new_bar s 메소드는 지정된 기호 및 기간에 대한 새 막대 이벤트를 생성합니다. 새 막대 이벤트가 발생하면 new_bar 메서드는 true를 반환하고 그렇지 않으면 false를 반환합니다. class CNevBar { private : datetime curbar; datetime lastbar; public : CNevBar(); ~CNevBar(); bool new_bar( string symbol, ENUM_TIMEFRAMES period); }; //+------------------------------------------------------------------+ void CNevBar::CNevBar() { } //+------------------------------------------------------------------+ void CNevBar::~CNevBar( void ) { } //+------------------------------------------------------------------+ bool CNevBar:: new_bar( string symbol, ENUM_TIMEFRAMES period) { curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar!=curbar) { lastbar=curbar; return ( true ); } return ( false ); } 다음에 클래스 선언 CNevBar newbar; 코드에서 클래스 메서드의 추가 사용 if (newbar.new_bar( _Symbol , PERIOD_CURRENT )) 다음은 다른 악기와 기간에 이 클래스를 사용하는 예입니다. //+------------------------------------------------------------------+ //| test03.mq4 | //| Sergey Gritsay | //| https://www.mql5.com/ru/users/sergey1294 | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com/ru/users/sergey1294" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CNevBar { private : datetime curbar; datetime lastbar; public : CNevBar(); ~CNevBar(); bool new_bar( string symbol, ENUM_TIMEFRAMES period); }; //+------------------------------------------------------------------+ void CNevBar::CNevBar() { } //+------------------------------------------------------------------+ void CNevBar::~CNevBar( void ) { } //+------------------------------------------------------------------+ bool CNevBar:: new_bar( string symbol, ENUM_TIMEFRAMES period) { curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar!=curbar) { lastbar=curbar; return ( true ); } return ( false ); }CNevBar nb_1;CNevBar nb_2;CNevBar nb_3;CNevBar nb_4; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { if (nb_1.new_bar( "EURUSD" , PERIOD_M5 )) Alert ( "Новый бар на EURUSD M5" ); if (nb_2.new_bar( "GBPUSD" , PERIOD_M15 )) Alert ( "Новый бар на GBPUSD M15" ); if (nb_3.new_bar( "USDJPY" , PERIOD_M30 )) Alert ( "Новый бар на USDJPY M30" ); if (nb_4.new_bar( "AUDCAD" , PERIOD_H1 )) Alert ( "Новый бар на AUDCAD H1" ); } //+------------------------------------------------------------------+ 이 수업의 결과 2016.12 . 27 20 : 00 : 02.827 test03 EURUSD,M1: Alert : Новый бар на USDJPY M30 2016.12 . 27 20 : 00 : 01.663 test03 EURUSD,M1: Alert : Новый бар на AUDCAD H1 2016.12 . 27 20 : 00 : 01.663 test03 EURUSD,M1: Alert : Новый бар на GBPUSD M15 2016.12 . 27 20 : 00 : 01.663 test03 EURUSD,M1: Alert : Новый бар на EURUSD M5 2016.12 . 27 19 : 55 : 01.999 test03 EURUSD,M1: Alert : Новый бар на EURUSD M5 ... Any questions from newcomers Need help with this Phone notification for canlde Mickey Moose 2016.12.27 14:25 #494 Sergey Gritsay : 왜 클래스를 여기로 끌어야 하는지 이해가 되지 않습니다. 비탈리 무지첸코 : 3줄에 쏙쏙 들어가고 이런 심플한 디자인에 족발 길이의 코드를 작성할 필요가 없어요 int BBars= 0 ; void OnTick () { if (BBars!= Bars ) {BBars= Bars ; // код.... } } 즉, 대략적으로 말하면 OnTick 은 모든 틱 을 확인하고 이전과 같이 60-90 쌍에서 리소스를 먹습니다. Sergey Gritsay 2016.12.27 14:37 #495 trader781 : 왜 클래스를 여기로 끌어야 하는지 이해가 되지 않습니다. 클래스로 프로그래밍하는 것이 더 편리합니다. 현재 기호와 마침표에만 사용하면 클래스를 사용할 수 없으며 사용자 정의 함수로 얻을 수 있습니다. //+------------------------------------------------------------------+ //| test03.mq4 | //| Sergey Gritsay | //| https://www.mql5.com/ru/users/sergey1294 | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com/ru/users/sergey1294" #property version "1.00" #property strict datetime curbar; datetime lastbar; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { if (new_bar( _Symbol , PERIOD_CURRENT )) Alert ( "Новый бар" ); } //+------------------------------------------------------------------+ bool new_bar( string symbol, ENUM_TIMEFRAMES period) { curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar!=curbar) { lastbar=curbar; return ( true ); } return ( false ); } //+------------------------------------------------------------------+ .... Any questions from newcomers Questions from Beginners MQL4 Urgent! Metatrader5 Alert problem! Mickey Moose 2016.12.27 14:57 #496 Sergey Gritsay : 수업은 프로그래밍하기 더 쉽습니다. .... 이유를 알 수 있습니까? AleksandrKr 2016.12.27 15:10 #497 안녕하세요. 나중에 계산에 사용하기 위해 차트가 배치된 기간(기간)의 분 값의 제곱근 을 계산하고 싶습니다. 마침표()를 찾았지만 이것을 사용하여 수학 연산을 수행하는 방법은 무엇입니까? 말해 주세요. Vitaly Muzichenko 2016.12.27 15:22 #498 AleksandrKr : 안녕하세요. 나중에 계산에 사용하기 위해 차트가 배치된 기간(기간)의 분 값의 제곱근을 계산하고 싶습니다. 마침표()를 찾았지만 이것을 사용하여 수학 연산을 수행하는 방법은 무엇입니까? 말해 주세요. https://www.mql5.com/ru/docs/math Документация по MQL5: Математические функции www.mql5.com Математические функции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Sergey Gritsay 2016.12.27 15:31 #499 trader781 : 왜 클래스를 여기로 끌어야 하는지 이해가 되지 않습니다. 즉, 대략적으로 말하면 OnTick 은 모든 틱 을 확인하고 이전과 같이 60-90 쌍에서 리소스를 먹습니다. 리소스가 도대체 무엇인지, 여기에 내 터미널에서 49자를 처리하기 위한 인증 코드가 있습니다. 기본적으로 200밀리초 미만이 소요됩니다. //+------------------------------------------------------------------+ //| test03.mq4 | //| Sergey Gritsay | //| https://www.mql5.com/ru/users/sergey1294 | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com/ru/users/sergey1294" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CNevBar { private : datetime curbar; datetime lastbar; public : CNevBar(); ~CNevBar(); bool new_bar( string symbol, ENUM_TIMEFRAMES period); }; //+------------------------------------------------------------------+ void CNevBar::CNevBar() { } //+------------------------------------------------------------------+ void CNevBar::~CNevBar( void ) { } //+------------------------------------------------------------------+ bool CNevBar:: new_bar( string symbol, ENUM_TIMEFRAMES period) { curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE ); if (lastbar!=curbar) { lastbar=curbar; return ( true ); } return ( false ); }CNevBar *nb[]; int SymbolTotal= 0 ; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- SymbolTotal= SymbolsTotal ( false ); ArrayResize (nb,SymbolTotal); for ( int i= 0 ;i<SymbolTotal;i++) { nb[i]= new CNevBar(); //Print("Экземпляр класса = ",nb[i]); } //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { for ( int i= 0 ;i<SymbolTotal;i++) delete (nb[i]); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { ulong Start= 0 ; Start= GetMicrosecondCount (); for ( int i= 0 ;i<SymbolTotal;i++) { string symbol= SymbolName (i, false ); if (nb[i].new_bar(symbol, PERIOD_M1 )) Print ( "Новый бар на " ,symbol, " M1" ); } Print ( "На обработку всех символов в терминале ушло: " , GetMicrosecondCount ()-Start, " миллисекунд" ); } //+------------------------------------------------------------------+ 결과 2016.12 . 27 22 : 24 : 01.182 Expert test03 EURUSD,M1: loaded successfully 2016.12 . 27 22 : 24 : 05.046 test03 EURUSD,M1: initialized 2016.12 . 27 22 : 24 : 39.497 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 66522 миллисекунд 2016.12 . 27 22 : 24 : 42.819 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 181 миллисекунд 2016.12 . 27 22 : 24 : 47.743 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 181 миллисекунд 2016.12 . 27 22 : 24 : 48.658 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 172 миллисекунд 2016.12 . 27 22 : 25 : 03.367 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 173 миллисекунд 2016.12 . 27 22 : 25 : 10.051 test03 EURUSD,M1: Новый бар на EURUSD M1 2016.12 . 27 22 : 25 : 10.051 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 183 миллисекунд 2016.12 . 27 22 : 25 : 17.232 test03 EURUSD,M1: Новый бар на USDJPY M1 2016.12 . 27 22 : 25 : 17.232 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 191 миллисекунд 2016.12 . 27 22 : 25 : 19.668 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 162 миллисекунд 2016.12 . 27 22 : 25 : 19.788 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 130 миллисекунд 2016.12 . 27 22 : 25 : 23.064 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 160 миллисекунд 2016.12 . 27 22 : 25 : 25.579 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд 2016.12 . 27 22 : 25 : 57.800 test03 EURUSD,M1: Новый бар на GBPUSD M1 2016.12 . 27 22 : 25 : 57.800 test03 EURUSD,M1: Новый бар на USDCHF M1 2016.12 . 27 22 : 25 : 57.800 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 154 миллисекунд 2016.12 . 27 22 : 25 : 58.510 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 129 миллисекунд 2016.12 . 27 22 : 25 : 58.610 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 176 миллисекунд 2016.12 . 27 22 : 25 : 58.850 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 173 миллисекунд 2016.12 . 27 22 : 25 : 58.892 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 136 миллисекунд 2016.12 . 27 22 : 25 : 59.043 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 138 миллисекунд 2016.12 . 27 22 : 26 : 00.252 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 147 миллисекунд 2016.12 . 27 22 : 26 : 19.801 test03 EURUSD,M1: Новый бар на EURUSD M1 2016.12 . 27 22 : 26 : 19.801 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 156 миллисекунд 2016.12 . 27 22 : 26 : 26.219 test03 EURUSD,M1: Новый бар на GBPUSD M1 2016.12 . 27 22 : 26 : 26.219 test03 EURUSD,M1: Новый бар на USDCHF M1 2016.12 . 27 22 : 26 : 26.219 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 170 миллисекунд 2016.12 . 27 22 : 26 : 35.065 test03 EURUSD,M1: Новый бар на USDJPY M1 2016.12 . 27 22 : 26 : 35.065 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 204 миллисекунд 2016.12 . 27 22 : 26 : 41.118 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 135 миллисекунд 2016.12 . 27 22 : 26 : 49.655 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 239 миллисекунд 2016.12 . 27 22 : 26 : 49.745 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 129 миллисекунд 2016.12 . 27 22 : 26 : 56.357 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 133 миллисекунд 2016.12 . 27 22 : 26 : 56.467 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд 2016.12 . 27 22 : 27 : 01.395 test03 EURUSD,M1: Новый бар на EURUSD M1 2016.12 . 27 22 : 27 : 01.395 test03 EURUSD,M1: Новый бар на USDCHF M1 2016.12 . 27 22 : 27 : 01.395 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 148 миллисекунд 2016.12 . 27 22 : 27 : 02.204 test03 EURUSD,M1: Новый бар на USDJPY M1 2016.12 . 27 22 : 27 : 02.204 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 148 миллисекунд 2016.12 . 27 22 : 27 : 02.304 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 129 миллисекунд 2016.12 . 27 22 : 27 : 02.464 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд 2016.12 . 27 22 : 27 : 03.143 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 134 миллисекунд 2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: Новый бар на EURUSD M1 2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: Новый бар на GBPUSD M1 2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: Новый бар на USDJPY M1 2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 174 миллисекунд 2016.12 . 27 22 : 28 : 33.308 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 133 миллисекунд 2016.12 . 27 22 : 28 : 33.509 test03 EURUSD,M1: Новый бар на USDCHF M1 2016.12 . 27 22 : 28 : 33.509 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 154 миллисекунд 2016.12 . 27 22 : 28 : 44.137 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд 2016.12 . 27 22 : 28 : 45.088 test03 EURUSD,M1: uninit reason 1 2016.12 . 27 22 : 28 : 45.158 Expert test03 EURUSD,M1: removed Any questions from newcomers Pip Values PREDICT time period AleksandrKr 2016.12.27 15:37 #500 고맙습니다. 1...434445464748495051525354555657...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
이렇게 될 수 있을까
...
감사합니다 기록이 낯설지만 알아내겠습니다 이걸로 다시 만들어야겠네요
3줄에 쏙쏙 들어가고 이런 심플한 디자인에 족발 길이의 코드를 작성할 필요가 없어요
void OnTick ()
{
if (BBars!= Bars )
{BBars= Bars ;
// код....
}
}
감사합니다 기록이 낯설지만 알아내겠습니다 이걸로 다시 만들어야겠네요
P 항목은 매우 간단하며 CNevBar 클래스는 하나의 new_bar 메소드로 작성됩니다. new_bar s 메소드는 지정된 기호 및 기간에 대한 새 막대 이벤트를 생성합니다. 새 막대 이벤트가 발생하면 new_bar 메서드는 true를 반환하고 그렇지 않으면 false를 반환합니다.
{
private :
datetime curbar;
datetime lastbar;
public :
CNevBar();
~CNevBar();
bool new_bar( string symbol, ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+
void CNevBar::~CNevBar( void )
{
}
//+------------------------------------------------------------------+
bool CNevBar:: new_bar( string symbol, ENUM_TIMEFRAMES period)
{
curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar!=curbar)
{
lastbar=curbar;
return ( true );
}
return ( false );
}
다음에 클래스 선언
코드에서 클래스 메서드의 추가 사용
다음은 다른 악기와 기간에 이 클래스를 사용하는 예입니다.
//| test03.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CNevBar
{
private :
datetime curbar;
datetime lastbar;
public :
CNevBar();
~CNevBar();
bool new_bar( string symbol, ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+
void CNevBar::~CNevBar( void )
{
}
//+------------------------------------------------------------------+
bool CNevBar:: new_bar( string symbol, ENUM_TIMEFRAMES period)
{
curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar!=curbar)
{
lastbar=curbar;
return ( true );
}
return ( false );
}
CNevBar nb_1;
CNevBar nb_2;
CNevBar nb_3;
CNevBar nb_4;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
if (nb_1.new_bar( "EURUSD" , PERIOD_M5 )) Alert ( "Новый бар на EURUSD M5" );
if (nb_2.new_bar( "GBPUSD" , PERIOD_M15 )) Alert ( "Новый бар на GBPUSD M15" );
if (nb_3.new_bar( "USDJPY" , PERIOD_M30 )) Alert ( "Новый бар на USDJPY M30" );
if (nb_4.new_bar( "AUDCAD" , PERIOD_H1 )) Alert ( "Новый бар на AUDCAD H1" );
}
//+------------------------------------------------------------------+
이 수업의 결과
2016.12 . 27 20 : 00 : 01.663 test03 EURUSD,M1: Alert : Новый бар на AUDCAD H1
2016.12 . 27 20 : 00 : 01.663 test03 EURUSD,M1: Alert : Новый бар на GBPUSD M15
2016.12 . 27 20 : 00 : 01.663 test03 EURUSD,M1: Alert : Новый бар на EURUSD M5
2016.12 . 27 19 : 55 : 01.999 test03 EURUSD,M1: Alert : Новый бар на EURUSD M5
3줄에 쏙쏙 들어가고 이런 심플한 디자인에 족발 길이의 코드를 작성할 필요가 없어요
void OnTick ()
{
if (BBars!= Bars )
{BBars= Bars ;
// код....
}
}
왜 클래스를 여기로 끌어야 하는지 이해가 되지 않습니다.
클래스로 프로그래밍하는 것이 더 편리합니다. 현재 기호와 마침표에만 사용하면 클래스를 사용할 수 없으며 사용자 정의 함수로 얻을 수 있습니다.
//| test03.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
datetime curbar;
datetime lastbar;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
if (new_bar( _Symbol , PERIOD_CURRENT )) Alert ( "Новый бар" );
}
//+------------------------------------------------------------------+
bool new_bar( string symbol, ENUM_TIMEFRAMES period)
{
curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar!=curbar)
{
lastbar=curbar;
return ( true );
}
return ( false );
}
//+------------------------------------------------------------------+
수업은 프로그래밍하기 더 쉽습니다.
안녕하세요.
나중에 계산에 사용하기 위해 차트가 배치된 기간(기간)의 분 값의 제곱근 을 계산하고 싶습니다.
마침표()를 찾았지만 이것을 사용하여 수학 연산을 수행하는 방법은 무엇입니까?
말해 주세요.
안녕하세요.
나중에 계산에 사용하기 위해 차트가 배치된 기간(기간)의 분 값의 제곱근을 계산하고 싶습니다.
마침표()를 찾았지만 이것을 사용하여 수학 연산을 수행하는 방법은 무엇입니까?
말해 주세요.
왜 클래스를 여기로 끌어야 하는지 이해가 되지 않습니다.
즉, 대략적으로 말하면 OnTick 은 모든 틱 을 확인하고 이전과 같이 60-90 쌍에서 리소스를 먹습니다.
리소스가 도대체 무엇인지, 여기에 내 터미널에서 49자를 처리하기 위한 인증 코드가 있습니다. 기본적으로 200밀리초 미만이 소요됩니다.
//| test03.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CNevBar
{
private :
datetime curbar;
datetime lastbar;
public :
CNevBar();
~CNevBar();
bool new_bar( string symbol, ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+
void CNevBar::~CNevBar( void )
{
}
//+------------------------------------------------------------------+
bool CNevBar:: new_bar( string symbol, ENUM_TIMEFRAMES period)
{
curbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar== 0 )lastbar=( datetime ) SeriesInfoInteger (symbol,period, SERIES_LASTBAR_DATE );
if (lastbar!=curbar)
{
lastbar=curbar;
return ( true );
}
return ( false );
}
CNevBar *nb[];
int SymbolTotal= 0 ;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
SymbolTotal= SymbolsTotal ( false );
ArrayResize (nb,SymbolTotal);
for ( int i= 0 ;i<SymbolTotal;i++)
{
nb[i]= new CNevBar();
//Print("Экземпляр класса = ",nb[i]);
}
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
for ( int i= 0 ;i<SymbolTotal;i++) delete (nb[i]);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
ulong Start= 0 ;
Start= GetMicrosecondCount ();
for ( int i= 0 ;i<SymbolTotal;i++)
{
string symbol= SymbolName (i, false );
if (nb[i].new_bar(symbol, PERIOD_M1 )) Print ( "Новый бар на " ,symbol, " M1" );
}
Print ( "На обработку всех символов в терминале ушло: " , GetMicrosecondCount ()-Start, " миллисекунд" );
}
//+------------------------------------------------------------------+
결과
2016.12 . 27 22 : 24 : 05.046 test03 EURUSD,M1: initialized
2016.12 . 27 22 : 24 : 39.497 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 66522 миллисекунд
2016.12 . 27 22 : 24 : 42.819 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 181 миллисекунд
2016.12 . 27 22 : 24 : 47.743 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 181 миллисекунд
2016.12 . 27 22 : 24 : 48.658 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 172 миллисекунд
2016.12 . 27 22 : 25 : 03.367 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 173 миллисекунд
2016.12 . 27 22 : 25 : 10.051 test03 EURUSD,M1: Новый бар на EURUSD M1
2016.12 . 27 22 : 25 : 10.051 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 183 миллисекунд
2016.12 . 27 22 : 25 : 17.232 test03 EURUSD,M1: Новый бар на USDJPY M1
2016.12 . 27 22 : 25 : 17.232 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 191 миллисекунд
2016.12 . 27 22 : 25 : 19.668 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 162 миллисекунд
2016.12 . 27 22 : 25 : 19.788 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 130 миллисекунд
2016.12 . 27 22 : 25 : 23.064 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 160 миллисекунд
2016.12 . 27 22 : 25 : 25.579 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд
2016.12 . 27 22 : 25 : 57.800 test03 EURUSD,M1: Новый бар на GBPUSD M1
2016.12 . 27 22 : 25 : 57.800 test03 EURUSD,M1: Новый бар на USDCHF M1
2016.12 . 27 22 : 25 : 57.800 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 154 миллисекунд
2016.12 . 27 22 : 25 : 58.510 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 129 миллисекунд
2016.12 . 27 22 : 25 : 58.610 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 176 миллисекунд
2016.12 . 27 22 : 25 : 58.850 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 173 миллисекунд
2016.12 . 27 22 : 25 : 58.892 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 136 миллисекунд
2016.12 . 27 22 : 25 : 59.043 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 138 миллисекунд
2016.12 . 27 22 : 26 : 00.252 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 147 миллисекунд
2016.12 . 27 22 : 26 : 19.801 test03 EURUSD,M1: Новый бар на EURUSD M1
2016.12 . 27 22 : 26 : 19.801 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 156 миллисекунд
2016.12 . 27 22 : 26 : 26.219 test03 EURUSD,M1: Новый бар на GBPUSD M1
2016.12 . 27 22 : 26 : 26.219 test03 EURUSD,M1: Новый бар на USDCHF M1
2016.12 . 27 22 : 26 : 26.219 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 170 миллисекунд
2016.12 . 27 22 : 26 : 35.065 test03 EURUSD,M1: Новый бар на USDJPY M1
2016.12 . 27 22 : 26 : 35.065 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 204 миллисекунд
2016.12 . 27 22 : 26 : 41.118 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 135 миллисекунд
2016.12 . 27 22 : 26 : 49.655 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 239 миллисекунд
2016.12 . 27 22 : 26 : 49.745 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 129 миллисекунд
2016.12 . 27 22 : 26 : 56.357 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 133 миллисекунд
2016.12 . 27 22 : 26 : 56.467 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд
2016.12 . 27 22 : 27 : 01.395 test03 EURUSD,M1: Новый бар на EURUSD M1
2016.12 . 27 22 : 27 : 01.395 test03 EURUSD,M1: Новый бар на USDCHF M1
2016.12 . 27 22 : 27 : 01.395 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 148 миллисекунд
2016.12 . 27 22 : 27 : 02.204 test03 EURUSD,M1: Новый бар на USDJPY M1
2016.12 . 27 22 : 27 : 02.204 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 148 миллисекунд
2016.12 . 27 22 : 27 : 02.304 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 129 миллисекунд
2016.12 . 27 22 : 27 : 02.464 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд
2016.12 . 27 22 : 27 : 03.143 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 134 миллисекунд
2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: Новый бар на EURUSD M1
2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: Новый бар на GBPUSD M1
2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: Новый бар на USDJPY M1
2016.12 . 27 22 : 28 : 33.018 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 174 миллисекунд
2016.12 . 27 22 : 28 : 33.308 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 133 миллисекунд
2016.12 . 27 22 : 28 : 33.509 test03 EURUSD,M1: Новый бар на USDCHF M1
2016.12 . 27 22 : 28 : 33.509 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 154 миллисекунд
2016.12 . 27 22 : 28 : 44.137 test03 EURUSD,M1: На обработку 49 символов в терминале ушло: 132 миллисекунд
2016.12 . 27 22 : 28 : 45.088 test03 EURUSD,M1: uninit reason 1
2016.12 . 27 22 : 28 : 45.158 Expert test03 EURUSD,M1: removed