멀티스레딩에 대한 추가 정보 - 페이지 3

 
Renat :

원본 메시지를 다시 읽고 모든 소명에 주의를 기울인 다음 답변으로 이동하는 것이 좋습니다.

차분한 대답이 나왔고, "계산을 병행하려면 먼저 깨달아야 한다"는 부드러운 질문이 출제되었고, "무엇을 병렬화해야 하는지"에 대한 답변과 현 상황을 설명했습니다.

그러나 당신은 빨리 배우는 대신 더 많은 말도 안되는 소리를 내며 우리에게 개를 매달았습니다. 결과는 가혹한 반응이었다.

좋아, 별명과 함께 동의합니다. 정말 조금 지나쳤습니다. 그 점에 대해 사과드립니다. 무례한 말은 하지 않았지만 지나치게 감정적인 비판만 하는 것인데, 이에 대해 가혹하게 반응하는 것은 전혀 어울리지 않습니다. 나는 개발자들이 평범하고 아무것도 이해하지 못한다고 말한 적이 없으므로 과장하지 마십시오.

이 주제를 제기했기 때문에 이것이 왜 필요한지 충분히 알고 있고 병렬화해야 할 것이 있다는 것을 의미합니다. 모든 알고리즘이 "hello world!"로 제한되는 것은 아니며 훨씬 더 복잡하고 리소스를 많이 사용하는 알고리즘이 있습니다. 그러므로 알고리즘을 보지도 않았는데도 병렬화해야 할 것과 하지 말아야 할 것을 이렇게 도덕화하는 것을 듣는 것은 매우 이상한 일입니다.

DLL의 코드 구현 및 OpenCL 사용과 관련하여 이것은 더 이상 MQL에 적용되지 않습니다. MQL 프로그래밍에 관한 것이었습니다.

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 

OpenCL은 MQL5 코드 내에서 작동합니다.

다음 은 코드 예제 입니다.

 
meat :

DLL의 코드 구현 및 OpenCL 사용과 관련하여 이것은 더 이상 MQL에 적용되지 않습니다. 그리고 그것은 MQL에서의 프로그래밍에 관한 것이었습니다.

그래서 멀티스레딩을 위한 스크립트가 있습니다. 그리고 테스터에서는 필요하지 않습니다.
 
meat :

그리고 나에게 뭐라고 대답했니? 당신은 여러 스레드에서 작업하면서 당신이 가지고 있는 멋진 터미널과 테스터에 대해 이야기하기 시작했습니다. 그리고 나는 당신의 단말기에 대해 말을 더듬지 않았습니다. 그것은 완전히 다른 것, 즉 MQL 코드의 멀티스레딩에 관한 것이었습니다. 알고리즘을 여러 부분으로 나눌 수 있고 각각이 병렬로 실행되는 경우. 그리고 당신은 본질을 탐구하지 않고 무례하기 시작합니다. 좋아, 내가 보기에 그런 접근 방식으로는 건설성에 대해 이야기할 필요가 없으므로 논의를 계속할 의미가 없습니다.

현 상황에서 건설적인 해결책이 있습니다. 여러 mql 프로그램(전문가 및/또는 지표)은 메시지를 교환할 수 있으며 따라서 적절한 교환 프로토콜을 만들고 구성하는 경우 작업 실행 결과와 작업을 교환할 수 있습니다. 모든 전문가는 서로 다른 스레드(각각 자체적으로)에서 작업하므로 이러한 공동 계산 방식은 분명히 다중 스레드이며 코어가 여러 개인 경우 충분히 균등하게 로드합니다.

메시징(mql5 사용)은 다음을 통해 가능합니다.

1. 터미널 이벤트

2. 명명된 파이프

3.DLL

4. 파일

5. 등

이 도구 세트에서 가장 적합한 도구를 선택하거나 둘 이상(적어도 한 번에 모두)을 사용할 수 있습니다. 각 방법에는 장단점이 있습니다. 예를 들어 명명된 파이프를 사용하면 로컬 네트워크를 통해 정보를 전송할 수 있으므로 둘 이상의 멀티 코어 프로세서에 대한 작업을 병렬화할 수 있습니다.

행운을 빕니다.

 
Renat :

OpenCL은 MQL5 코드 내에서 작동합니다.

다음 은 코드 예제 입니다.

글쎄, 작동하는 것은 절반의 전투입니다. 그러면 어떻게 편집하고 디버그할 수 있습니까? 문자열 상수에 있는 경우 오류를 찾는 방법은 무엇입니까? 즉, 외부 프로그램에서 개발한 다음 MQL에 삽입해야 합니다. 그러나 그러한 전송에 지속적으로 참여하면 첫 번째 게시물에서 썼던 미쳐 갈 수 있습니다. 코드 개발이 여전히 다른 곳에서 수행되고 있기 때문에 이 모든 것을 MQL로 푸시하는 요점은 무엇입니까? DLL로 즉시 컴파일하고 가져오는 것이 더 쉽습니다.

물론, 자체 작성 DLL 등을 사용하지 않고 오픈 소스 코드를 생성하려는 목표가 여기에서 추구된다는 것을 이해합니다. 그러나 이것들은 특별한 경우입니다. 일반적으로 모든 프로그램은 동료 대신 자체적으로 작성됩니다. 그리고 한 프로그램에서 다른 프로그램으로 코드를 드래그하는 무의미한 조작에 지속적으로 참여하고 싶어하는 사람은 거의 없습니다.

이제 이 모든 것을 위한 내장 컴파일러를 만들었다면 다른 문제입니다. 그건 그렇고, 왜 안되지? sishny 구문과 같은 위치에 있습니다. 저것들. MetaEditor에 추가 기능을 추가하기만 하면 이 모든 것을 일반 mql 코드의 일부로 사용할 수 있습니다. 그런 다음 컴파일러는 해당 코드 조각을 적절한 형식으로 포맷하고 \r\n 등을 추가합니다.

 
meat :

글쎄, 작동하는 것은 절반의 전투입니다. 그러면 어떻게 편집하고 디버그할 수 있습니까? 문자열 상수에 있는 경우 오류를 찾는 방법은 무엇입니까? 즉, 외부 프로그램에서 개발한 다음 MQL에 삽입해야 합니다. 그러나 그러한 전송에 지속적으로 참여하면 첫 번째 게시물에서 썼던 미쳐 갈 수 있습니다. 코드 개발이 여전히 다른 곳에서 수행되고 있기 때문에 이 모든 것을 MQL로 푸시하는 요점은 무엇입니까? DLL로 즉시 컴파일하고 가져오는 것이 더 쉽습니다.

물론, 자체 작성 DLL 등을 사용하지 않고 오픈 소스 코드를 생성하려는 목표가 여기에서 추구된다는 것을 이해합니다. 그러나 이것들은 특별한 경우입니다. 일반적으로 모든 프로그램은 동료 대신 자체적으로 작성됩니다. 그리고 한 프로그램에서 다른 프로그램으로 코드를 드래그하는 무의미한 조작에 지속적으로 참여하고 싶어하는 사람은 거의 없습니다.

이제 이 모든 것을 위한 내장 컴파일러를 만들었다면 다른 문제입니다. 그건 그렇고, 왜 안되지? sishny 구문과 같은 위치에 있습니다. 저것들. MetaEditor에 추가 기능을 추가하기만 하면 이 모든 것을 일반 mql 코드의 일부로 사용할 수 있습니다. 그런 다음 컴파일러는 해당 코드 조각을 적절한 형식으로 포맷하고 \r\n 등을 추가합니다.

원하는 사람은 기회를 찾습니다. 이유를 원하지 않는 사람 © 잠언

 
MetaDriver :

현 상황에서 건설적인 해결책이 있습니다. 여러 mql 프로그램(전문가 및/또는 지표)은 메시지를 교환할 수 있으며 따라서 적절한 교환 프로토콜을 만들고 구성하는 경우 작업 실행 결과와 작업을 교환할 수 있습니다. 모든 전문가는 서로 다른 스레드(각각 자체적으로)에서 작업하므로 이러한 공동 계산 방식은 분명히 다중 스레드이며 코어가 여러 개인 경우 충분히 균등하게 로드합니다.

메시징( mql5 사용 )은 다음을 통해 가능합니다.

1. 터미널 이벤트

2. 명명된 파이프

3.DLL

4. 파일

5. 등

이 도구 세트에서 가장 적합한 도구를 선택하거나 둘 이상(적어도 한 번에 모두)을 사용할 수 있습니다. 각 방법에는 장단점이 있습니다. 예를 들어 명명된 파이프를 사용하면 로컬 네트워크를 통해 정보를 전송할 수 있으므로 둘 이상의 멀티 코어 프로세서에 대한 작업을 병렬화할 수 있습니다.

행운을 빕니다.

글쎄, 이런 식으로 말하자. 당신이 나열한 모든 것이 mql5 도구를 참조하는 것은 결코 아닙니다. 당신은 항상 탈출구를 찾을 수 있습니다. 의심의 여지가 없습니다. 그리고 대화는 변태할 필요가 없도록 mql5에 적절한 기능을 추가하지 않는 이유에 대한 것입니다.

동의합니다. 여러 스레드에서 처리를 구성하기 위해 해당 차트와 함께 많은 Expert Advisor를 시작하는 것은 합리적이지 않으며 신뢰할 수 없습니다.

 
지표 또는 Expert Advisors의 멀티스레딩은 소수의 사람들에게 필요합니다. 그리고 일반적으로 이러한 사람들은 dll 등을 통해 이러한 멀티스레딩을 스스로 구현할 수 있습니다.
 
Reshetov :

원하는 사람은 기회를 찾습니다. 이유를 원하지 않는 사람 © 잠언

먼저 편의를 이해해야 합니다. :) 일반적으로 MQL5를 사용하고 그에 따라 MT5를 사용하는 편의가 이 플랫폼으로 전환할 가치가 있습니까? 결국 MT4와 마찬가지로 여기에서 정상적인 작동을 위해 샤머니즘을 처리하고 여러 Expert Advisors를 시작하거나 코드를 DLL로 전송해야 하는 경우 송곳을 변경할 필요가 없습니다. 비누용. 코드를 DLL로 작성해야 하는 경우 Expert Advisor(및 일반적으로 실행 중인 터미널)의 형태로 추가 부록을 갖는 것보다 개방형 API가 있는 플랫폼을 즉시 사용하는 것이 더 쉽고 안정적입니다.

 
meat :

먼저 편의를 이해해야 합니다. :) 일반적으로 MQL5를 사용하고 그에 따라 MT5를 사용하는 편의가 이 플랫폼으로 전환할 가치가 있습니까? 결국 여기와 MT4에서 정상 작동을 위해 샤머니즘에 참여하거나 여러 Expert Advisors 등을 시작하거나 코드를 DLL로 전송해야 하는 경우 송곳을 변경할 필요가 없습니다. 비누용. 코드를 DLL로 작성해야 하는 경우 Expert Advisor(및 일반적으로 실행 중인 터미널)의 형태로 추가 부록을 갖는 것보다 개방형 API가 있는 플랫폼을 즉시 사용하는 것이 더 쉽고 안정적입니다.

아무도 MQL5로 전환하도록 강요하지 않습니다. 예를 들어 MQL4에는 기능이 부족하여 5개로 전환해야 했습니다.

그러나 원칙적으로 예를 들어 C++에서 모든 기능을 수행하고 MQL5에 실행 부분만 남겨두고 이 모든 경제를 명명된 파이프 를 통해 프로토콜로 묶는 것이 가능합니다. 바다 옵션. 욕망이 있었을 것입니다.

Связь с MetaTrader 5 через именованные каналы без применения DLL
Связь с MetaTrader 5 через именованные каналы без применения DLL
  • 2012.10.15
  • MetaQuotes Software Corp.
  • www.mql5.com
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.