MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 46 1...394041424344454647484950515253...1953 새 코멘트 Sergey Gritsay 2016.12.23 17:18 #451 sile : 안녕하세요. 도와주세요. 마감된 위치 에서 하루의 시작부터 손실이 10%에 이르렀는지 확인하는 방법은 무엇입니까? 이 EA는 설정된 기간 동안의 손익 비율을 왼쪽 상단 모서리에 표시합니다. //+------------------------------------------------------------------+ //| test02.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 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ enum mode_type { BUY= OP_BUY , SELL= OP_SELL , ALL = - 1 }; input string Symbols= NULL ; input int Magic=- 1 ; //Identification number input mode_type ModeType=ALL; input ENUM_TIMEFRAMES TimeFrame= PERIOD_D1 ; double procent= 0.0 ; double prev_balans= 0.0 ; double Profit= 0.0 ; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { Profit=LastProfit( iTime ( _Symbol ,TimeFrame, 0 ),Symbols,Magic,ModeType); prev_balans=Balans( 0 , iTime ( _Symbol ,TimeFrame, 0 )); if (prev_balans!= 0.0 )procent=Profit/prev_balans* 100.0 ; Comment ( "\nTime = " , iTime ( _Symbol ,TimeFrame, 0 ), "\nProfit = " , DoubleToStr (Profit, 2 ), "\nprev_balans = " , DoubleToStr (prev_balans, 2 ), "\nprocent = " , DoubleToStr (procent, 4 ), " %" ); } //+------------------------------------------------------------------+ double LastProfit( datetime time, // Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года. string symbol= NULL , // символ, если NULL то любой символ int magic=- 1 , // идентификатор, если -1 то любой идентификатор int cmd=- 1 // торговая операция, если -1 любая торговая операция ) { double profit= 0 ; int total= OrdersHistoryTotal (); for ( int i=total- 1 ;i>= 0 ;i--) { if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ; if ( OrderSymbol ()==symbol || symbol!= NULL ) { if ( OrderMagicNumber ()==magic || magic==- 1 ) { if ( OrderType ()==cmd || cmd==- 1 ) { if ( OrderCloseTime ()<time) continue ; profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap (); } } } } return (profit); } //+------------------------------------------------------------------+ double Balans( datetime start_time, // C какой даты. Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года. datetime stop_time, // По какую дату. Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года. ) { double profit= 0 ; int total= OrdersHistoryTotal (); for ( int i= 0 ; i<total; i++) { if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ; if ( OrderCloseTime ()<start_time || OrderCloseTime ()>stop_time) continue ; profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap (); } return (profit); } //+------------------------------------------------------------------+ ... 파일: test02.mq4 8 kb Any questions from newcomers Profit calculation of closed 마감된 주문 "HELP"에 대한 Sile Si 2016.12.23 18:16 #452 Sergey Gritsay : 이 EA는 설정된 기간 동안의 손익 비율을 왼쪽 상단 모서리에 표시합니다. 고맙습니다. 항상 수익이 나지 않는 포지션의 수를 세는 기능이 있습니다. 무엇으로 변경 오늘 연속으로 마감된 수익성 없는 포지션의 수를 알아보세요. int GetLastNegativeOrdersCount() { int PosCnt = 0 ; int cnt = HistoryTotal (); for ( int i = cnt- 1 ; i >= 0 ; i--) { if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ; if ( OrderSymbol () != Symbol ()) continue ; if ( OrderMagicNumber () != Magic) continue ; int type = OrderType (); if (type != OP_BUY && type != OP_SELL ) continue ; if ( OrderProfit ()+ OrderSwap ()+ OrderCommission () > 0 ) break ; PosCnt++; } return (PosCnt);} Any questions from newcomers dictionary mql or something How to code? Artyom Trishkin 2016.12.23 18:33 #453 sile : 고맙습니다. 항상 수익이 나지 않는 포지션의 수를 세는 기능이 있습니다. 무엇으로 변경 오늘 연속으로 마감된 수익성 없는 포지션의 수를 알아보세요. int GetLastNegativeOrdersCount() { int PosCnt = 0 ; int cnt = HistoryTotal (); for ( int i = cnt- 1 ; i >= 0 ; i--) { if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ; if ( OrderSymbol () != Symbol ()) continue ; if ( OrderMagicNumber () != Magic) continue ; int type = OrderType (); if (type != OP_BUY && type != OP_SELL ) continue ; if ( OrderProfit ()+ OrderSwap ()+ OrderCommission () > 0 ) break ; PosCnt++; } return (PosCnt);} 조건을 하나 더 추가하십시오. 주문 마감 시간 이 현재 촛불 D1의 시작 시간 보다 짧으면 계속 ; Sile Si 2016.12.23 19:05 #454 Artyom Trishkin : 조건을 하나 더 추가하십시오. 주문 마감 시간 이 현재 촛불 D1의 시작 시간 보다 짧으면 계속 ; 고맙습니다. if ( iTime ( Symbol (), 1440 , 0 )> OrderCloseTime ()) continue ; Artyom Trishkin 2016.12.23 19:10 #455 sile : 고맙습니다. if ( iTime ( Symbol (), 1440 , 0 )> OrderCloseTime ()) continue ; 확실히 그런 방식은 아닙니다. 이와 같이 - OrderSymbol() if ( iTime ( OrderSymbol (), PERIOD_D1 , 0 )>= OrderCloseTime ()) continue ; 또는 다음과 같이: if ( OrderCloseTime ()< iTime ( OrderSymbol (), PERIOD_D1 , 0 )) continue ; Sile Si 2016.12.23 19:20 #456 Artyom Trishkin : 확실히 그런 방식은 아닙니다. 이와 같이 - OrderSymbol() 덕분에. [삭제] 2016.12.24 02:33 #457 에게. Expert Advisor의 입력 매개변수 창에 텍스트를 추가하는 방법을 알려주세요. Vitaly Muzichenko 2016.12.24 02:46 #458 Mikhail Goryunov : 에게. Expert Advisor의 입력 매개변수 창에 텍스트를 추가하는 방법을 알려주세요. input int MetaQuotes = 30 ; input bool MetaQuotes = true ; input double MetaQuotes = 20.3 ; input string MetaQuotes = "Corp" ; [삭제] 2016.12.24 02:51 #459 Vitaly Muzichenko : input int MetaQuotes = 30 ; input bool MetaQuotes = true ; input double MetaQuotes = 20.3 ; input string MetaQuotes = "Corp" ; 감사합니다 + 순무. 나는 그것을 알아 냈고 약간의 설명 과 함께 외부 입력 변수 에 대한 자습서를 읽었습니다. 예가 더 명확하고 명확합니다. sinput string MetaQuotes = "бла бла текс" ; Artyom Trishkin 2016.12.24 04:51 #460 Mikhail Goryunov : 감사합니다 + 순무. 나는 그것을 알아 냈고 약간의 설명 과 함께 외부 입력 변수 에 대한 자습서를 읽었습니다. 예가 더 명확하고 명확합니다. sinput string MetaQuotes = "бла бла текс" ; 각 줄에 주석을 추가하면 더 재미있을 것입니다. input int MetaQuotes1 = 30 ; // Описание входного параметра 1 input bool MetaQuotes2 = true ; // Описание входного параметра 2 input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3 input string MetaQuotes4 = "Corp" ; // Описание входного параметра 4 다른 열거를 만들고 bool 대신 사용하면 훨씬 더 흥미로울 것입니다. enum enumYN { enYes = 1 , // Да enNo = 0 , // Нет }; input int MetaQuotes1 = 30 ; // Описание входного параметра 1 input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2 input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3 input string MetaQuotes4 = "Corp" ; // Описание входного параметра 4 그리고 sinput 을 사용하면 최적화를 위해 변수 목록에서 변수를 제외할 수 있습니다. 예를 들어 이 컨텍스트의 MetaQuotes4 변수는 최적화에 필요하지 않으며 제외할 수 있습니다. enum enumYN { enYes = 1 , // Да enNo = 0 , // Нет }; input int MetaQuotes1 = 30 ; // Описание входного параметра 1 input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2 input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3 sinput string MetaQuotes4 = "Corp" ; // Описание входного параметра 4 Any questions from newcomers 포럼을 어지럽히 지 않도록 Prediction on "accelerator" and 1...394041424344454647484950515253...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요.
도와주세요.
마감된 위치 에서 하루의 시작부터 손실이 10%에 이르렀는지 확인하는 방법은 무엇입니까?
이 EA는 설정된 기간 동안의 손익 비율을 왼쪽 상단 모서리에 표시합니다.
//| test02.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
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum mode_type
{
BUY= OP_BUY ,
SELL= OP_SELL ,
ALL = - 1
};
input string Symbols= NULL ;
input int Magic=- 1 ; //Identification number
input mode_type ModeType=ALL;
input ENUM_TIMEFRAMES TimeFrame= PERIOD_D1 ;
double procent= 0.0 ;
double prev_balans= 0.0 ;
double Profit= 0.0 ;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
Profit=LastProfit( iTime ( _Symbol ,TimeFrame, 0 ),Symbols,Magic,ModeType);
prev_balans=Balans( 0 , iTime ( _Symbol ,TimeFrame, 0 ));
if (prev_balans!= 0.0 )procent=Profit/prev_balans* 100.0 ;
Comment (
"\nTime = " , iTime ( _Symbol ,TimeFrame, 0 ),
"\nProfit = " , DoubleToStr (Profit, 2 ),
"\nprev_balans = " , DoubleToStr (prev_balans, 2 ),
"\nprocent = " , DoubleToStr (procent, 4 ), " %"
);
}
//+------------------------------------------------------------------+
double LastProfit(
datetime time, // Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.
string symbol= NULL , // символ, если NULL то любой символ
int magic=- 1 , // идентификатор, если -1 то любой идентификатор
int cmd=- 1 // торговая операция, если -1 любая торговая операция
)
{
double profit= 0 ;
int total= OrdersHistoryTotal ();
for ( int i=total- 1 ;i>= 0 ;i--)
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol ()==symbol || symbol!= NULL )
{
if ( OrderMagicNumber ()==magic || magic==- 1 )
{
if ( OrderType ()==cmd || cmd==- 1 )
{
if ( OrderCloseTime ()<time) continue ;
profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
}
}
}
}
return (profit);
}
//+------------------------------------------------------------------+
double Balans(
datetime start_time, // C какой даты. Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.
datetime stop_time, // По какую дату. Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.
)
{
double profit= 0 ;
int total= OrdersHistoryTotal ();
for ( int i= 0 ; i<total; i++)
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderCloseTime ()<start_time || OrderCloseTime ()>stop_time) continue ;
profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
}
return (profit);
}
//+------------------------------------------------------------------+
...
이 EA는 설정된 기간 동안의 손익 비율을 왼쪽 상단 모서리에 표시합니다.
고맙습니다.
항상 수익이 나지 않는 포지션의 수를 세는 기능이 있습니다.
무엇으로 변경 오늘 연속으로 마감된 수익성 없는 포지션의 수를 알아보세요.
{
int PosCnt = 0 ;
int cnt = HistoryTotal ();
for ( int i = cnt- 1 ; i >= 0 ; i--) {
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol () != Symbol ()) continue ;
if ( OrderMagicNumber () != Magic) continue ;
int type = OrderType ();
if (type != OP_BUY && type != OP_SELL ) continue ;
if ( OrderProfit ()+ OrderSwap ()+ OrderCommission () > 0 ) break ;
PosCnt++;
}
return (PosCnt);
}
고맙습니다.
항상 수익이 나지 않는 포지션의 수를 세는 기능이 있습니다.
무엇으로 변경 오늘 연속으로 마감된 수익성 없는 포지션의 수를 알아보세요.
{
int PosCnt = 0 ;
int cnt = HistoryTotal ();
for ( int i = cnt- 1 ; i >= 0 ; i--) {
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol () != Symbol ()) continue ;
if ( OrderMagicNumber () != Magic) continue ;
int type = OrderType ();
if (type != OP_BUY && type != OP_SELL ) continue ;
if ( OrderProfit ()+ OrderSwap ()+ OrderCommission () > 0 ) break ;
PosCnt++;
}
return (PosCnt);
}
조건을 하나 더 추가하십시오. 주문 마감 시간 이 현재 촛불 D1의 시작 시간 보다 짧으면 계속 ;
고맙습니다.
고맙습니다.
확실히 그런 방식은 아닙니다.
이와 같이 - OrderSymbol()
또는 다음과 같이:
확실히 그런 방식은 아닙니다.
이와 같이 - OrderSymbol()
덕분에.
에게. Expert Advisor의 입력 매개변수 창에 텍스트를 추가하는 방법을 알려주세요.
input bool MetaQuotes = true ;
input double MetaQuotes = 20.3 ;
input string MetaQuotes = "Corp" ;
input bool MetaQuotes = true ;
input double MetaQuotes = 20.3 ;
input string MetaQuotes = "Corp" ;
감사합니다 + 순무. 나는 그것을 알아 냈고 약간의 설명 과 함께 외부 입력 변수 에 대한 자습서를 읽었습니다. 예가 더 명확하고 명확합니다.
감사합니다 + 순무. 나는 그것을 알아 냈고 약간의 설명 과 함께 외부 입력 변수 에 대한 자습서를 읽었습니다. 예가 더 명확하고 명확합니다.
각 줄에 주석을 추가하면 더 재미있을 것입니다.
input bool MetaQuotes2 = true ; // Описание входного параметра 2
input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3
input string MetaQuotes4 = "Corp" ; // Описание входного параметра 4
다른 열거를 만들고 bool 대신 사용하면 훨씬 더 흥미로울 것입니다.
{
enYes = 1 , // Да
enNo = 0 , // Нет
};
input int MetaQuotes1 = 30 ; // Описание входного параметра 1
input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2
input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3
input string MetaQuotes4 = "Corp" ; // Описание входного параметра 4
그리고 sinput 을 사용하면 최적화를 위해 변수 목록에서 변수를 제외할 수 있습니다. 예를 들어 이 컨텍스트의 MetaQuotes4 변수는 최적화에 필요하지 않으며 제외할 수 있습니다.
{
enYes = 1 , // Да
enNo = 0 , // Нет
};
input int MetaQuotes1 = 30 ; // Описание входного параметра 1
input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2
input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3
sinput string MetaQuotes4 = "Corp" ; // Описание входного параметра 4