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

 

안녕하세요.

모든 바를 일일이 거치지 않고 날짜와 시간별로 원하는 바를 찾는 방법을 알려주실 수 있나요?

 
Sergey :

안녕하세요.

모든 바를 일일이 거치지 않고 날짜와 시간별로 원하는 바를 찾는 방법을 알려주실 수 있나요?


iBarShift 에 대해 읽기
 

정수 TotalPos=-1;

무효 시작()

{
// 나머지 코드

//--
if(OrdersTotal()!=TotalPos) { // 모든 틱을 고문하지 않습니다.
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(주문선택(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && 주문 유형()<=1) {
역사();


}
}}} TotalPos=OrdersTotal(); // 숫자 기억
//--
}



무효 기록() {
문자열 티켓=(문자열)OrderTicket();
colorcol=빨간색;
if(OrderType()==0)col=파란색;
날짜 시간 a=OrderOpenTime();
더블 b=OrderOpenPrice();
날짜 시간 c=OrderCloseTime();
더블 d=OrderClosePrice();
이중 prSep=OrderProfit()+OrderCommission()+OrderSwap();
이중prAll=0;
정수 cn=0;
문자열 hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(주문선택(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && 주문 유형()<=1) {
datetime ct=OrderCloseTime();
// 그리드에서 첫 번째와 마지막 닫기 사이의 60초 차이
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(문자열)OrderTicket();
cn++;
}
}}}
ObjectCreate(티켓+"열기",OBJ_ARROW,0,a,b);
ObjectSet(티켓+"열기",OBJPROP_COLOR,col);
ObjectSet(티켓+"열기",OBJPROP_ARROWCODE,1);

ObjectCreate(티켓+"라인",OBJ_TREND,0,a,b,c,d);
ObjectSet(티켓+"라인",OBJPROP_COLOR,col);
ObjectSet(티켓+"라인",OBJPROP_WIDTH,1);
ObjectSet(티켓+"라인",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(티켓+"라인",OBJPROP_RAY,0);

ObjectCreate(티켓+"닫기",OBJ_ARROW,0,c,d);
ObjectSet(티켓+"닫기",OBJPROP_COLOR,녹색);
ObjectSet(티켓+"닫기",OBJPROP_ARROWCODE,3);

티켓=cn>1?h티켓:티켓;
ObjectCreate(티켓+"이익",OBJ_TEXT,0,c,d);
ObjectSet(티켓+"이익",OBJPROP_ANCHOR,0);
ObjectSetText(티켓+"이익",DoubleToString(prAll,2),10,"Arial",흰색);
ObjectSet(티켓+"이익",OBJPROP_PRICE1,d);
ObjectSet(티켓+"이익",OBJPROP_TIME1,c+Period()*60*2);
}

‌이러한 거래 장소에서 레벨 라인을 그리기 위해 이 함수의 코드에 추가할 사항

거래에서 차트 이동의 경계까지의 좌표‌

 

.crv 파일에서 읽는 것을 도와주세요.

파일에는 다음 항목이 포함되어 있습니다.

2010.03.18 01:35:00;1.37409;1.37119

각 값을 개별적으로 변수로 가져오는 코드를 작성하는 방법‌

 
missha32 :

.crv 파일에서 읽는 것을 도와주세요.

파일에는 다음 항목이 포함되어 있습니다.

2010.03.18 01:35:00;1.37409;1.37119

각 값을 개별적으로 변수로 가져오는 코드를 작성하는 방법‌

여기에서 읽고/공부하십시오 .
Основы программирования на MQL5: Файлы
Основы программирования на MQL5: Файлы
  • 2016.09.28
  • Dmitry Fedoseev
  • www.mql5.com
Статья-практикум по работе с файлами в MQL5. Читайте, выполняйте несложные задания, и к концу статьи вы обретете не только теоретические знания, но и практические навыки по работе с файлами в MQL5.
 
Alexander Antoshkin :

정수 TotalPos=-1;

무효 시작()

{
// 나머지 코드

//--
if(OrdersTotal()!=TotalPos) { // 모든 틱을 고문하지 않습니다.
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(주문선택(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && 주문 유형()<=1) {
역사();


}
}}} TotalPos=OrdersTotal(); // 숫자 기억
//--
}



무효 기록() {
문자열 티켓=(문자열)OrderTicket();
colorcol=빨간색;
if(OrderType()==0)col=파란색;
날짜 시간 a=OrderOpenTime();
더블 b=OrderOpenPrice();
날짜 시간 c=OrderCloseTime();
더블 d=OrderClosePrice();
이중 prSep=OrderProfit()+OrderCommission()+OrderSwap();
이중prAll=0;
정수 cn=0;
문자열 hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(주문선택(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && 주문 유형()<=1) {
datetime ct=OrderCloseTime();
// 그리드에서 첫 번째와 마지막 닫기 사이의 60초 차이
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(문자열)OrderTicket();
cn++;
}
}}}
ObjectCreate(티켓+"열기",OBJ_ARROW,0,a,b);
ObjectSet(티켓+"열기",OBJPROP_COLOR,col);
ObjectSet(티켓+"열기",OBJPROP_ARROWCODE,1);

ObjectCreate(티켓+"라인",OBJ_TREND,0,a,b,c,d);
ObjectSet(티켓+"라인",OBJPROP_COLOR,col);
ObjectSet(티켓+"라인",OBJPROP_WIDTH,1);
ObjectSet(티켓+"라인",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(티켓+"라인",OBJPROP_RAY,0);

ObjectCreate(티켓+"닫기",OBJ_ARROW,0,c,d);
ObjectSet(티켓+"닫기",OBJPROP_COLOR,녹색);
ObjectSet(티켓+"닫기",OBJPROP_ARROWCODE,3);

티켓=cn>1?h티켓:티켓;
ObjectCreate(티켓+"이익",OBJ_TEXT,0,c,d);
ObjectSet(티켓+"이익",OBJPROP_ANCHOR,0);
ObjectSetText(티켓+"이익",DoubleToString(prAll,2),10,"Arial",흰색);
ObjectSet(티켓+"이익",OBJPROP_PRICE1,d);
ObjectSet(티켓+"이익",OBJPROP_TIME1,c+Period()*60*2);
}

‌이러한 거래 장소에서 레벨 라인을 그리기 위해 이 함수의 코드에 추가할 사항

거래에서 차트 이동의 경계까지의 좌표‌

‌‌‌‌‌‌‌‌‌‌‌‌‌‌략

이 같은:

string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)

if (ObjectFind(level)‌==-1) {

  // гор.вектора нет - видимо первый ордер из закрытых на баре

  // сделать горизонтальную линию‌

  ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice);

 // указывающую только вправо‌

  ObjectSetInteger(level,‌OBJPROP_RAY,1);

  ObjectSetInteger(level,OBJPROP_RAYLEFT,0);

‌ // украсить её как-то :-)

 ObjectSetInteger(level,OBJPROP_‌COLOR,....)

 ....‌

} else {

  // гор.уровень есть - значит были ордера закрытые на этом баре

  // по фантазии - обновить метки/корректировать уровень/etc‌

}‌

 

안녕하세요!

터미널이 로봇을 볼 수 없는 이유는 무엇입니까? 지역 프로그래머가 작성했습니다. 동시에 일부는 다른 로봇을 보고 일부는 그렇지 않습니다.

 
Serg_72 :

안녕하세요!

터미널이 로봇을 볼 수 없는 이유는 무엇입니까? 지역 프로그래머가 작성했습니다. 동시에 일부는 다른 로봇을 보고 일부는 그렇지 않습니다.

그리고 "로컬 프로그래머"는 왜 로봇을 시작할 수 없는지 대답할 수 없습니까?
 

좋은 저녁이에요!

코드 작성을 도와주세요. 저는 스스로 할 수 없다고 생각합니다. 핵심은 다음과 같습니다.

EURUSD 쌍 에 대한 어드바이저를 출시할 때 동일한 쌍에 미결/보류 주문이 없는 경우 두 개의 보류 주문을 해야 합니다.

또한 그 중 하나가 작동하면 지연기가 하나 더 설정되지 않습니다. 모든 주문의 합계는 쌍당 2배를 넘지 않으며, 다른 쌍에 이미 배치된 지연/오픈 주문은 고려하지 않아야 합니다.

나는 이미 내 두뇌를 망가뜨렸고, 아무 것도 넣지 않고 모든 틱을 합니다.

당신의 도움을 주셔서 대단히 감사합니다.

고맙습니다.

 
Serg_72 :

안녕하세요!

터미널이 로봇을 볼 수 없는 이유는 무엇입니까? 지역 프로그래머가 작성했습니다. 동시에 일부는 다른 로봇을 보고 일부는 그렇지 않습니다.

로봇은 "experts" 폴더에 있어야 하며 *.ex4(5의 경우 *.ex5) 형식이어야 합니다.
터미널 - "파일/데이터 디렉토리 열기" 메뉴에서 - "MQL4/Experts"

그리고 소스 텍스트 *.mq4 *.mq5만 실행되지 않습니다. 컴파일해야 합니다.

그리고 동시에 자신의 제품 사용법을 알려주지 않은 프로그래머의 머리를 뜯는다.