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

 

친애하는 감정가!

내가 올바른 질문을 하고 있기를 바랍니다!

질문은 다음 코드로 확장되는 구문을 정의하기 위해 #define을 사용할 수 있습니까?

if(a) printf("%s(%04d)", __FUNCTION__, __LINE__) +printf("%s", _Symbol);

이것은 이해를위한 것입니다 ... 올바른 구성은 다를 수 있습니다. 이상적으로는 조건이 일치하는 경우 출력 라인의 시작 부분에 있는 모든 printf()가 "Function (line in function)" 구성이 접두어인 문자열로 인쇄되도록 솔루션을 찾고 싶습니다. 이것은 모두 서면 지침을 줄이기위한 것입니다.

그러나 빨간색으로 강조 표시된 구성이 다음(유사)으로 대체되기를 바랍니다.

#define P(a) if(변수>=a) printf("%s(%04d)", __FUNCTION__, __LINE__)

인터넷에서 조금 비슷한 것을 찾았지만 클래스로 작업하지 않았기 때문에 아직 작업 코드를 작업할 수 없습니다. 형태로 하부구조를 적용해 보았습니다.

P(3)+printf("%s(%s) 정확도=%d", 기호, (Command==0?"매수":"매도"), 정확도);

그러나 코드에 이러한 항목이 있으면 '인쇄' 오류가 발생합니다. '무효' 유형의 표현식이 잘못되었습니다...

 

안녕하세요!

의 차이점을 설명해주세요

if(!OrderSelect(주문,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("주문 선택 오류 %d", GetLastError() );반환;}

그리고

if(OrderSelect(주문,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("주문 선택 오류 %d",GetLastError());반환;}

감사하다!

 
ski1973 :

안녕하세요!

의 차이점을 설명해주세요

if(!OrderSelect(주문,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("주문 선택 오류 %d",GetLastError());반환;}

그리고

if(OrderSelect(주문,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("주문 선택 오류 %d",GetLastError());반환;}

감사하다!

논리적인 차이는 없습니다. 유일한 차이점은 이 논리적 비교를 작성하는 것입니다.

징후 "!" 아니다". 즉, if(!Select())는 if(Select()==false)와 동일합니다. 러시아어에서는 if(NOT Selected())와 같이 보입니다.

부울 변수 값을 빠르게 "반전"할 수 있습니다.

 bool var = true ;
Print( "1. var=" ,( string ) var );
var =! var ;
Print( "2. var=" ,( string ) var );
 

다른 질문이 있습니다. 다음은 예제 프로그램입니다.

이중 로트=0.01;

int 미끄러짐 = 30;

정수 Subr1()

{

정수 결과=-1;

int_result=OrderSend(_symbol,OP_BUY,랏,슬립페이지,0,0);

if(int_res<0){PrintFormat("OrderSend 오류 = ",GetError());}

반환 int_result;

}

무효 OnTick()

{

정수 = -10;
if(OrdersTotal()==0)numer=Subr1();

if(OrdersTotal()>0)Subr2(숫자);

반품;

}

무효 Subr2(순서)

{

if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect 오류 %d",GetLastError());return;} else PrintFormat("확인, OrderTicket = ",OrderTicket());

}

답변: OrderSelect 오류 4051. SELECT_BY_POS로 대체하면 OrderSelect 오류 1이 발생합니다. 반응은 전략 테스터 및 "실제 데이터에서 실행"에 대해 동일합니다. SELECT_BY_TICKET이 있는 경우 MODE_TRADES를 제거하려고 했습니다. 차이가 없습니다. 문제는 무엇이며 해결 방법입니다. 고맙습니다!

 
ski1973 :

답변: OrderSelect 오류 4051. SELECT_BY_POS로 대체하면 OrderSelect 오류 1이 발생합니다. 반응은 전략 테스터 및 "실제 데이터에서 실행"에 대해 동일합니다. SELECT_BY_TICKET이 있는 경우 MODE_TRADES를 제거하려고 했습니다. 차이가 없습니다. 문제는 무엇이며 해결 방법입니다. 고맙습니다!

SELECT_BY_POS는 주문 목록과 구성에서 "주문에 따라" 주문을 선택하는 것입니다.

 void Subr2( int order)
{
if (! OrderSelect (order, SELECT_BY_TICKET , MODE_TRADES )){ PrintFormat (" OrderSelect error %d", GetLastError ()); return ;} else PrintFormat ("Ok, OrderTicket = ", OrderTicket ());
}

순서대로 주문 수인 주문을 선택하려고 하고 ... 여기에서 티켓 번호를 사용하고 있으며 1개의 주문만 있고 티켓 번호는 10023444입니다... 그래서 어쩌죠? 여기 에 1에서 2.3 사이의 숫자가 필요합니다. 음, 시장에 얼마나 많은 주문이 있습니까? 0,1,2에서 숫자를 수정했습니다... - 배열에서처럼 번호는 0부터 OrdersTotal 까지 시작합니다. ()-1

SELECT_BY_TICKET이 작동해야 하지만 티켓 번호가 있을 때까지, 즉 시장 주문이 있고 주문을 보내기 위해 더 높은 수표를 가지고 있으며 주문이 전송되지 않으면 티켓은 = -1 !!!이므로 때때로 티켓으로 주문을 선택하려고 시도합니다. -1

음, 일반적으로 주문 작업을 위한 설계가 올바르지 않습니다. MQL을 연구하기로 결정했다면 다음은 주문 작업을 위한 기성품 예입니다 https://www.mql5.com/ru/forum/131859

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Vitaly Muzichenko :

당신은 배열에 대해 그리고 당신은 외환에 대해. 그래도 역설!

그리고 바보는 MT4/MT4의 모든 기본 어레이가 버퍼링된다는 것을 이해합니다.

MT4/MT5의 프로그래머는 사용자가 기본 어레이로 작업할 수 있는 수준이 아닙니다.

또한 MT4/MT5의 기본 어레이에는 자체 확장명도 있습니다(.hts 또는 .hss - 정확히 기억은 안나지만 그와 비슷한 것).

즉, 텍스트 형식(확장자가 .txt인)이 아니라 자체 형식으로 터미널에 도착합니다.

그리고 이미 MT4/MT5에서 기본 어레이가 디코딩되고 선택된 시간 프레임(분, 5분, 15분 등)의 어레이로 재계산된 후 복제되고 버퍼링됩니다.

버퍼링된 이유는 무엇입니까?

비교하려고. 데이터 손실을 방지합니다. 이러한 배열 중 하나는 지속적으로 재계산되고(때때로), 두 번째(첫 번째에서 복사)는 사용자 데이터에 복사할 때 사용합니다.

즉, 사용자에게 데이터를 제공하는 절차가 상당히 복잡합니다.

관심이 있는 경우 배열에 대한 내용입니다.

그건 그렇고, Android와 Windows 모두에서 기본 MT4/MT5 어레이는 동일한 확장자를 가집니다.

-------------------------------------------------- -------------------------------------------------- --------------------------

타사 소스에서 MT4/MT5로 DYNAMIC 데이터 가져오기와 관련하여 내가 이해하는 한 이러한 가져오기는 제공되지 않습니다.

즉, C++Builder에 있는 Client/Server 절차는 MT4/MT5에서 관찰되지 않습니다.

-------------------------------------------------- -------------------------------------------------- --------------------------

이 절차가 라이브러리에 있는지 궁금합니다.

http://tol64.blogspot.com/2015/12/easy-and-fast-gui-mql.html

물론 그것도 아닐 가능성이 큽니다.

즉, 동적 어레이 를 기본 형식으로만 MT4/MT5로 가져오려고 시도할 수 있으며, 여기서 자동으로 표준 데이터 처리를 거치게 됩니다.

Библиотека "Easy And Fast GUI" для создания графических интерфейсов на MQL
  • tol64.blogspot.com
С этой статьи я начинаю еще одну серию, относящуюся к разработке графических интерфейсов. На текущий момент нет ни одной библиотеки кода, которая позволяла бы легко и быстро создавать качественные графические интерфейсы в MQL-приложениях. Я имею в виду графические интерфейсы, к которым мы все привыкли в известных операционных системах. Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.
 
neverness :

그리고 바보는 MT4/MT4의 모든 기본 어레이가 버퍼링된다는 것을 이해합니다.

MT4/MT5의 프로그래머는 사용자가 기본 어레이로 작업할 수 있는 수준이 아닙니다.

또한 MT4/MT5의 기본 어레이에는 자체 확장명도 있습니다(.hts 또는 .hss - 정확히 기억은 안나지만 그와 비슷한 것).

즉, 텍스트 형식(확장자가 .txt인)이 아니라 자체 형식으로 터미널에 도착합니다.

그리고 이미 MT4/MT5에서 기본 어레이가 디코딩되고 선택된 시간 프레임(분, 5분, 15분 등)의 어레이로 재계산된 후 복제되고 버퍼링됩니다.

버퍼링되는 이유는 무엇입니까?

비교하려고. 데이터 손실을 방지합니다. 이러한 배열 중 하나는 지속적으로 재계산되고(때때로), 두 번째(첫 번째에서 복사)는 사용자 데이터에 복사할 때 사용합니다.

즉, 사용자에게 데이터를 제공하는 절차가 상당히 복잡합니다.

관심이 있는 경우 배열에 대한 내용입니다.

그건 그렇고, Android와 Windows 모두에서 기본 MT4/MT5 어레이의 확장자는 동일합니다.

당신은 머리에 너무 혼란스러워 지나칠 수 없었습니다.

MQL에서 함께 쌓은 것은 배열, 파일, 시계열 작업 및 표시기 버퍼입니다.

내가 한 줄로 제공한 정보를 여전히 소화할 수 있다면 여전히 생각할 음식을 던질 수 있습니다. MT4 및 MT5의 기록 데이터 저장은 동일한 MT4에서 사용자가 액세스할 수 있는 다른 방식으로 구성됩니다. .hst 파일 https://docs .mql4.com/ru/files/fileopenhistory

MT5에는 히스토리 파일에 직접 액세스할 수 없지만 사용자 지정 기호 https://www.mql5.com/ru/docs/customsymbols 에 대한 작업이 있습니다.

FileOpenHistory - Файловые операции - Справочник MQL4
FileOpenHistory - Файловые операции - Справочник MQL4
  • docs.mql4.com
[in]  Режим открытия. Это может быть одна величина или их комбинация: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE, FILE_SHARE_READ, FILE_SHARE_WRITE. Клиентский терминал может подключаться к серверам разных брокерских компаний. Исторические данные (файлы HST) каждой брокерской компании хранятся в соответствующей подпапке папки истории...
 
Igor Makanu :

넌 머리가 어지러워 지나칠 수조차 없어

MQL에서 함께 쌓은 것은 배열, 파일 및 표시기 버퍼입니다.

내가 한 줄로 제공한 정보를 여전히 소화할 수 있다면 여전히 생각할 음식을 던질 수 있습니다. MT4 및 MT5의 기록 데이터 저장은 동일한 MT4에서 사용자가 액세스할 수 있는 다른 방식으로 구성됩니다. .hst 파일 https://docs .mql4.com/ru/files/fileopenhistory

MT5에는 기록 파일에 직접 액세스할 수 없지만 사용자 지정 기호 https://www.mql5.com/ru/docs/customsymbols 에 대한 작업이 있습니다.

나는 내 게시물에서 기록 파일에 대해 한 마디도 말하지 않았습니다.

당신은 무언가를 다시 섞고 또 다시 주제를 지나쳤습니다.

저는 DYNAMIC 데이터 배열에 대해 이야기하고 있었습니다. 이것은 완전히 다른 주제입니다. 차이를 느껴봐.

 
neverness :

나는 내 게시물에서 기록 파일에 대해 한 마디도 말하지 않았습니다.

당신은 무언가를 다시 섞고 또 다시 주제를 지나쳤습니다.

동적 데이터 배열에 대해 이야기하고 있었습니다. 이것은 완전히 다른 주제입니다.

또한 MT4/MT5의 기본 어레이에는 자체 확장명도 있습니다(.hts 또는 .hss - 정확히 기억은 안나지만 그와 비슷한 것).

알겠습니다. 이 포럼 주제에 머무르는 목적이 명확하지 않습니다.

네버니스 :

저는 DYNAMIC 데이터 배열에 대해 이야기하고 있었습니다. 이것은 완전히 다른 주제입니다. 차이를 느껴봐.

느낌, 당신은 또한 모든 프로그래밍 언어에서 동적 배열 은 동적 배열이고 시계열은 시계열이며 시계열을 사용한 작업(액세스)의 일부는 배열을 사용한 작업으로 구성된다는 점을 이해하고 이해해야 합니다...
 
Igor Makanu :

알겠습니다. 이 포럼 주제에 머무르는 목적이 명확하지 않습니다.

느낌, 당신은 또한 모든 프로그래밍 언어에서 동적 배열 은 동적 배열이고 시계열은 시계열이며 시계열을 사용한 작업(액세스)의 일부는 배열을 사용한 작업으로 구성된다는 점을 이해하고 이해해야 합니다...

여기에서 터미널의 데이터 생성 문제가 충분히 자세히 고려됩니다.

http://profitraders.com/Python/hstRead.html

나는 이 기사가 MT4->Service->Quotes Archive,

그러나 .hst 형식의 터미널의 DYNAMIC 데이터에 대해서는 직접적으로 시장 시세를 수신하고 처리하는 과정에 관여합니다.

-------------------------------------------------- ----------------------------------------

제가 충분히 명확하게 하지 못했을 수도 있습니다. 다른 작가들을 읽어보세요. 더 명확해지기를 바랍니다.

Чтение файла HST истории котировок Metatrader 4 — ProfiTraders.com
  • profitraders.com
Файлы истории котировок Metatrader 4 имеют расширение и находятся в папке данных торгового терминала, в каталоге . Они сгруппированы в подкаталогах, имена которых совпадают с названиями серверов, например: или . Имена файлов начинаются с наименования торгового инструмента, далее указывается таймфрейм (количество минут), например, для часового...