MT5 및 trans2quik.dll - 페이지 6

 
prostotrader :

아니요, 3개의 쓰레드의 작업을 동기화하기만 하면 됩니다(사실, Synchronizer 작성). 하지만

방법을 모르겠어.

자, 이제 깃발만 남았습니다. 우리는 깃발을 올리고, 나머지 사람들이 활동을 완료할 때까지 기다렸다가 멈추고 깃발을 떼고, 사업을 하고, 깃발을 뗍니다. 물론 플래그 우선 순위의 논리입니다.

DDE를 중지하지 않고 버퍼에 기록하여 아무 것도 손실되지 않도록 합니다.

 
Yuriy Asaulenko :

자, 이제 깃발만 남았습니다. 우리는 깃발을 올리고, 나머지 사람들이 활동을 완료할 때까지 기다렸다가 멈추고 깃발을 떼고, 사업을 하고, 깃발을 뗍니다. 물론 플래그 우선 순위의 논리입니다.

DDE를 중지하지 않고 버퍼에 기록하여 아무 것도 손실되지 않도록 합니다.

즉, 동기화 장치에서 우선 순위에 따라 실행될 들어오는 함수의 버퍼를 만들어야 합니까?

 
prostotrader :

즉, 동기화 장치에서 우선 순위에 따라 실행될 들어오는 함수의 버퍼를 만들어야 합니까?

아니요, 적절한 플래그와 우선 순위에 따라 스레드를 일시 중지하십시오. 이 옵션에서는 다른 것이 전혀 필요하지 않습니다.

두 번째 옵션은 스레드 함수가 끝날 때까지 기다린 다음 해당 플래그로 중지하는 것입니다. 이것은 아마도 예를 들어, 매도호가, 지표 및 기타 필요한 사항을 업데이트해야 합니다.

예를 들어 플래그 값입니다.

0 - 스레드가 중지되었습니다.

1 - 스레드가 실행 중입니다.

2 - 우선 순위가 낮은 모든 스레드를 중지하도록 요청합니다.

우리는 2를 설정하고 모든 사람이 0이 될 때까지 기다렸다가 프로그램을 실행하고 0 또는 1로 설정합니다. 이 플래그에서 다른 모든 사람들은 작업을 재개합니다.

 
Yuriy Asaulenko :

아니요, 적절한 플래그와 우선 순위에 따라 스레드를 일시 중지하십시오. 이 옵션에서는 다른 것이 전혀 필요하지 않습니다.

두 번째 옵션은 스레드 함수가 끝날 때까지 기다린 다음 해당 플래그로 중지하는 것입니다. 이것은 아마도 예를 들어, 매도호가, 지표 및 기타 필요한 사항을 업데이트해야 합니다.

예를 들어 플래그 값입니다.

0 - 스레드가 중지되었습니다.

1 - 스레드가 실행 중입니다.

2 - 우선 순위가 낮은 모든 스레드를 중지하도록 요청합니다.

우리는 2를 설정하고 모든 사람이 0이 될 때까지 기다렸다가 프로그램을 실행하고 0 또는 1로 설정합니다. 이 플래그에서 다른 모든 사람들은 작업을 재개합니다.

DDE를 일시 중단하는 것이 좋지 않다고 직접 작성했습니다.

 
prostotrader :

DDE를 일시 중단하는 것이 좋지 않다고 직접 작성했습니다.

나는 당신을 이해하지 못했습니다.

나는 그렇게 한다.

1. 스레드의 서버(나는 TCP 서버가 있음)는 마지막 선입 선출 유형의 컬렉션에 지속적으로 데이터를 씁니다. 그를 막을 필요는 없습니다.

2. 다른 스레드의 컬렉션에서 데이터를 읽고 삭제하고 DataTable에 기록합니다(데이터베이스 테이블과 유사하지만 메모리에 있음). 이미 이 스레드는 방해가 된다면 일시 중단될 수 있습니다.

3. 여전히 흐름은 분석을 위해 DataTable에서 데이터를 읽습니다. 어떤 식으로든 스레드 2를 방해하지 않습니다. 샘플링이 선택되고 이 테이블에서 2개의 레코드를 제외하고는 아무도 만들지 않습니다. 이 스트림은 방해가 되는 경우 일시 중단될 수도 있습니다.

위협 나는 아무것도 막을 필요가 없습니다, tk. 저는 하나의 기기로 작업하고 3개의 스위치를 사용하여 주문을 제출 및 실행하고 트랜잭션을 추적합니다.

 
Yuriy Asaulenko :

나는 당신을 이해하지 못했습니다.

나는 그렇게 한다.

1. 스레드의 서버(나는 TCP 서버가 있음)는 마지막 선입 선출 유형의 컬렉션에 지속적으로 데이터를 씁니다. 그를 막을 필요는 없습니다.

2. 다른 스레드의 컬렉션에서 데이터를 읽고 삭제하고 DataTable에 기록합니다(데이터베이스 테이블과 유사하지만 메모리에 있음). 이미 이 스레드는 방해가 된다면 일시 중단될 수 있습니다.

3. 여전히 흐름은 분석을 위해 DataTable에서 데이터를 읽습니다. 어떤 식으로든 스레드 2를 방해하지 않습니다. 샘플링이 선택되고 이 테이블에서 2개의 레코드를 제외하고는 아무도 만들지 않습니다. 이 스트림은 방해가 되는 경우 일시 중단될 수도 있습니다.

위협 나는 아무것도 막을 필요가 없습니다, tk. 저는 하나의 기기로 작업하고 3개의 스위치를 사용하여 주문을 제출 및 실행하고 트랜잭션을 추적합니다.

당신은 운이 좋습니다, 나는 52개의 악기를 가지고 있으므로 전환해야 합니다

 
prostotrader :

당신은 운이 좋습니다, 나는 52개의 악기를 가지고 있으므로 전환해야 합니다

모든 52개 악기의 분석이 하나의 스트림으로 진행된다는 것을 알고 있습니까? 아님?

스토리지로 무엇을 사용합니까? 제 경우에는 다중 사용자 접근으로 잠금이 필요하지 않고 읽기가 쓰기를 방해하지 않습니다.

차단해야 할 유일한 것은 자녀가 trans2quik를 공유하는 것입니다. 그리고 다중 스레드의 경우에만 Child. 그리고 이것은 별도의 스레드에서 trans2quik을 구성하고 이벤트에서 호출하는 동시에 요청에 대한 작업이 끝날 때까지 이벤트 핸들러를 차단하여 수행할 수 있습니다. 나머지는 통과하지 못합니다.)

 
prostotrader :

MT5와 Quick을 연결한다는 생각을 완전히 포기하고, Quick(DEE 서버 + trans2quik.dll)에서만 멈췄습니다.

매우 죄송합니다. 그리고 그러한 결정의 이유는 무엇입니까? 두 프로그램간에 데이터 송수신에 심각한 장애가 있습니까?

 
Yuriy Asaulenko :

모든 52개 악기의 분석이 하나의 스트림으로 진행된다는 것을 알고 있습니까? 아님?

스토리지로 무엇을 사용합니까? 제 경우에는 다중 사용자 접근으로 잠금이 필요하지 않고 읽기가 쓰기를 방해하지 않습니다.

차단해야 할 유일한 것은 자녀가 trans2quik을 공유하는 것입니다. 그리고 다중 스레드의 경우에만 Child. 그리고 이것은 별도의 스레드에서 trans2quik을 구성하고 이벤트에서 호출하는 동시에 요청에 대한 작업이 끝날 때까지 이벤트 핸들러를 차단하여 수행할 수 있습니다. 나머지는 통과하지 못합니다.)

아니요, 분석 자체는 하위에서 이루어집니다(각 기기에 대해 별도로). Selector(1,2)는 데이터 및 콜백을 제공할 로봇을 선택합니다.

스토리지 - 메모리에 저장된 테이블만

 
Aleksey Vyazmikin :

매우 죄송합니다. 그리고 그러한 결정의 이유는 무엇입니까? 두 프로그램간에 데이터 송수신에 심각한 장애가 있습니까?

정원에 울타리를 치는 것은 의미가 없습니다.

MT 5를 사용하려면 데이터를 수신할 어드바이저와 DLL의 코드가 필요합니다.

Quick만 사용하면 애플리케이션이 하나뿐입니다(다이어그램이 있는 그림 참조).

사유: